refactore response tests to create response xml files if
[perl-cwmp.git] / t / 20-response.t
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4
5 my $debug = shift @ARGV;
6
7 use Test::More tests => 12;
8 use Data::Dump qw/dump/;
9 use Cwd qw/abs_path/;
10 use File::Slurp;
11 use blib;
12
13 BEGIN {
14         use_ok('CWMP::Response');
15 }
16
17 ok(my $abs_path = abs_path($0), "abs_path");
18 $abs_path =~ s!/[^/]*$!/!;      #!fix-vim
19
20 ok( my $response = CWMP::Response->new({ debug => $debug }), 'new' );
21 isa_ok( $response, 'CWMP::Response' );
22
23 sub check_response {
24         my $command = shift || die "no command?";
25
26         ok( my $xml = $response->$command({ ID => 42 }), "generate response for $command" );
27
28         my $file = "$abs_path/response/$command.xml";
29
30         if ( ! -e $file ) {
31                 diag "creating $file";
32                 write_file( $file, $xml );
33         }
34
35         my $template_xml = read_file( $file ) || die "can't read template xml $file: $!";
36
37         is( $xml, $template_xml, "compare $command" );
38 }
39
40 check_response( 'InformResponse' );
41 check_response( 'GetRPCMethods' );
42 check_response( 'Reboot' );
43 check_response( 'GetParameterNames' );