1 |
dpavlin |
32 |
#!/usr/bin/perl |
2 |
|
|
use strict; |
3 |
|
|
use warnings; |
4 |
|
|
|
5 |
|
|
my $debug = shift @ARGV; |
6 |
|
|
|
7 |
dpavlin |
219 |
use Test::More tests => 18; |
8 |
dpavlin |
32 |
use Data::Dump qw/dump/; |
9 |
dpavlin |
165 |
use Cwd qw/abs_path/; |
10 |
|
|
use File::Slurp; |
11 |
dpavlin |
32 |
use blib; |
12 |
|
|
|
13 |
dpavlin |
227 |
use Devel::LeakTrace::Fast; |
14 |
|
|
|
15 |
dpavlin |
32 |
BEGIN { |
16 |
dpavlin |
173 |
use_ok('CWMP::Methods'); |
17 |
dpavlin |
32 |
} |
18 |
|
|
|
19 |
dpavlin |
165 |
ok(my $abs_path = abs_path($0), "abs_path"); |
20 |
|
|
$abs_path =~ s!/[^/]*$!/!; #!fix-vim |
21 |
dpavlin |
32 |
|
22 |
dpavlin |
178 |
ok( my $method = CWMP::Methods->new({ debug => $debug }), 'new' ); |
23 |
|
|
isa_ok( $method, 'CWMP::Methods' ); |
24 |
dpavlin |
32 |
|
25 |
dpavlin |
178 |
sub check_method { |
26 |
dpavlin |
165 |
my $command = shift || die "no command?"; |
27 |
dpavlin |
32 |
|
28 |
dpavlin |
168 |
my $state = { |
29 |
|
|
ID => 42, |
30 |
|
|
}; |
31 |
dpavlin |
46 |
|
32 |
dpavlin |
178 |
diag "check_method $command",dump( 'state', @_ ) if $debug; |
33 |
dpavlin |
199 |
ok( my $xml = $method->$command( $state, shift ), "generate method $command" . dump(@_) ); |
34 |
dpavlin |
168 |
|
35 |
dpavlin |
178 |
my $file = "$abs_path/methods/$command.xml"; |
36 |
dpavlin |
45 |
|
37 |
dpavlin |
165 |
if ( ! -e $file ) { |
38 |
|
|
diag "creating $file"; |
39 |
|
|
write_file( $file, $xml ); |
40 |
|
|
} |
41 |
dpavlin |
53 |
|
42 |
dpavlin |
165 |
my $template_xml = read_file( $file ) || die "can't read template xml $file: $!"; |
43 |
dpavlin |
59 |
|
44 |
dpavlin |
178 |
is( $xml, $template_xml, "compare $file" ); |
45 |
dpavlin |
165 |
} |
46 |
|
|
|
47 |
dpavlin |
178 |
check_method( 'InformResponse' ); |
48 |
|
|
check_method( 'GetRPCMethods' ); |
49 |
|
|
check_method( 'Reboot' ); |
50 |
dpavlin |
199 |
check_method( 'SetParameterValues', { |
51 |
dpavlin |
178 |
'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision', |
52 |
|
|
'InternetGatewayDevice.DeviceInfo.X_000E50_Country' => 42, |
53 |
dpavlin |
199 |
}); |
54 |
|
|
check_method( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.SerialNumber' ] ); |
55 |
|
|
check_method( 'GetParameterValues', [ |
56 |
dpavlin |
178 |
'InternetGatewayDevice.DeviceInfo.SerialNumber', |
57 |
|
|
'InternetGatewayDevice.DeviceInfo.VendorConfigFile.', |
58 |
dpavlin |
199 |
]); |
59 |
dpavlin |
219 |
check_method( 'GetParameterAttributes', [ |
60 |
|
|
'InternetGatewayDevice.DeviceInfo.SerialNumber' |
61 |
|
|
]); |