/[cwmp]/google/trunk/t/10-request.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /google/trunk/t/10-request.t

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

google/t/10-request.t revision 31 by dpavlin, Mon Jun 18 20:07:17 2007 UTC google/trunk/t/10-request.t revision 200 by dpavlin, Wed Nov 14 19:23:32 2007 UTC
# Line 4  use warnings; Line 4  use warnings;
4    
5  my $debug = shift @ARGV;  my $debug = shift @ARGV;
6    
7  use Test::More tests => 4;  use Test::More tests => 73;
8  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
9    use Cwd qw/abs_path/;
10    use File::Slurp;
11  use blib;  use blib;
12    
13  BEGIN {  BEGIN {
14          use_ok('CWMP::Request');          use_ok('CWMP::Request');
15  }  }
16    
17  ok( my $xml = join("",<DATA>), 'xml' );  my @models = ( qw/SpeedTouch-706 SpeedTouch-780/ );
18    
19  diag $xml if $debug;  ok( $#models + 1, 'got models' );
20    
21  ok( my $state = CWMP::Request->parse( $xml ), 'parse' );  ok(my $abs_path = abs_path($0), "abs_path");
22    $abs_path =~ s!/[^/]*$!/!;      #!fix-vim
23    
24    my $path2method;
25    my $triggers_count;
26    
27    sub file_is_deeply {
28            my ( $path ) = @_;
29    
30            ok( my $xml = read_file( $path ), "read_file( $path )" );
31    
32            diag $xml if $debug;
33    
34            ok( my $trigger = $path2method->{$path}, "path2method($path)" );
35    
36            CWMP::Request->add_trigger( name => $trigger, callback => sub {
37                    my ( $self, $state ) = @_;
38                    $triggers_count->{$trigger}++;
39                    ok( $state, "called trigger $trigger" );
40            });
41    
42            ok( my $state = CWMP::Request->parse( $xml ), 'parse' );
43    
44            my $dump_path = $path;
45            $dump_path =~ s/\.xml/\.pl/;
46    
47            write_file( $dump_path, dump( $state ) ) unless ( -e $dump_path );
48    
49            diag "$path ? $dump_path" if $debug;
50    
51            ok( my $hash = read_file( $dump_path ), "read_file( $dump_path )" );
52            ok ( $hash = eval "$hash", 'eval' );
53    
54            is_deeply( $state, $hash, 'same' );
55    }
56    
57    foreach my $model ( @models ) {
58    
59            my $dir = "$abs_path/$model/";
60            opendir(DIR, $dir) || die "can't opendir $dir: $!";
61            my @xmls = map {
62                    my $path = "$dir/$_";
63                    my $method = $_;
64                    $method =~ s/\.xml$//;
65                    $path2method->{$path} = $method;
66                    $path;
67            } grep { /\.xml$/ && -f "$dir/$_" } readdir(DIR);
68            closedir DIR;
69    
70            diag "$model has ", $#xmls + 1, " xml tests";
71    
72            ok( $#xmls, "xmls" );
73    
74            foreach my $xml_path ( @xmls ) {
75                    ok ( $xml_path, 'xml path' );
76                    file_is_deeply( $xml_path );
77            }
78    }
79    
80    diag "triggers_count = ",dump( $triggers_count ) if $debug;
81    
 is_deeply( $state, {  
   CurrentTime => "1970-01-01T00:04:33Z",  
   DeviceID => {  
         Manufacturer => "THOMSON",  
         OUI => "00147F",  
         ProductClass => "SpeedTouch 780",  
         SerialNumber => "CP0644JTHJ4",  
       },  
   EventStruct => ["0 BOOTSTRAP", "1 BOOT", "4 VALUE CHANGE"],  
   ID => "1_THOM_TR69_ID",  
   MaxEnvelopes => 2,  
   Parameter => {  
         ".ExternalIPAddress"                                              => "192.168.1.254",  
         "InternetGatewayDevice.DeviceInfo.HardwareVersion"                => "BANT-R",  
         "InternetGatewayDevice.DeviceInfo.ProvisioningCode"               => undef,  
         "InternetGatewayDevice.DeviceInfo.SoftwareVersion"                => "6.2.15.5",  
         "InternetGatewayDevice.DeviceInfo.SpecVersion"                    => "1.1",  
         "InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date"        => "0000-00-00T00:00:00",  
         "InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description" => "Factory Defaults",  
         "InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name"        => "Routed PPPoE on 0/35 and 8/35",  
         "InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version"     => undef,  
         "InternetGatewayDevice.DeviceSummary"                             => "InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)",  
         "InternetGatewayDevice.ManagementServer.ConnectionRequestURL"     => "http://192.168.1.254:51005/",  
         "InternetGatewayDevice.ManagementServer.ParameterKey"             => undef,  
       },  
   RetryCount => "01",  
 }, 'state' );  
   
 diag dump( $state ) if $debug;  
   
   
 __DATA__  
 <soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-0">  
  <soapenv:Header>  
 <cwmp:ID soapenv:mustUnderstand="1">1_THOM_TR69_ID</cwmp:ID>  
  </soapenv:Header>  
  <soapenv:Body>  
 <cwmp:Inform>  
 <DeviceId>  
  <Manufacturer>THOMSON</Manufacturer>  
  <OUI>00147F</OUI>  
  <ProductClass>SpeedTouch 780</ProductClass>  
  <SerialNumber>CP0644JTHJ4</SerialNumber>  
 </DeviceId>  
 <Event soap:arrayType="cwmp:EventStruct[03]">  
 <EventStruct>  
  <EventCode>0 BOOTSTRAP</EventCode>  
  <CommandKey></CommandKey>  
 </EventStruct>  
 <EventStruct>  
  <EventCode>1 BOOT</EventCode>  
  <CommandKey></CommandKey>  
 </EventStruct>  
 <EventStruct>  
  <EventCode>4 VALUE CHANGE</EventCode>  
  <CommandKey></CommandKey>  
 </EventStruct>  
 </Event>  
 <MaxEnvelopes>2</MaxEnvelopes>  
 <CurrentTime>1970-01-01T00:04:33Z</CurrentTime>  
 <RetryCount>01</RetryCount>  
 <ParameterList soap:arrayType="cwmp:ParameterValueStruct[12]">  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceSummary</Name>  
  <Value xsi:type="xsd:string">InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>  
  <Value xsi:type="xsd:string">1.1</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>  
  <Value xsi:type="xsd:string">BANT-R</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>  
  <Value xsi:type="xsd:string">6.2.15.5</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>  
  <Value xsi:type="xsd:string"></Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name</Name>  
  <Value xsi:type="xsd:string">Routed PPPoE on 0/35 and 8/35</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version</Name>  
  <Value xsi:type="xsd:string"></Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date</Name>  
  <Value xsi:type="xsd:dateTime">0000-00-00T00:00:00</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description</Name>  
  <Value xsi:type="xsd:string">Factory Defaults</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>  
  <Value xsi:type="xsd:string">http://192.168.1.254:51005/</Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>  
  <Value xsi:type="xsd:string"></Value>  
 </ParameterValueStruct>  
 <ParameterValueStruct>  
  <Name>.ExternalIPAddress</Name>  
  <Value xsi:type="xsd:string">192.168.1.254</Value>  
 </ParameterValueStruct>  
 </ParameterList>  
 </cwmp:Inform>  
  </soapenv:Body>  
 </soapenv:Envelope>  

Legend:
Removed from v.31  
changed lines
  Added in v.200

  ViewVC Help
Powered by ViewVC 1.1.26