diff --git a/t/test01.t b/t/test01.t index 3ac3f9e4d..f791e182d 100644 --- a/t/test01.t +++ b/t/test01.t @@ -2,66 +2,71 @@ use strict; use warnings; use 5.14.2; -use Test::More; # see done_testing() +use Test::More; # see done_testing() # Require Zonemaster::WebBackend::Engine.pm test use_ok( 'Zonemaster::WebBackend::Engine' ); # Create Zonemaster::WebBackend::Engine object -my $engine = Zonemaster::WebBackend::Engine->new({ db => 'Zonemaster::WebBackend::DB::SQLite'} ); -isa_ok($engine, 'Zonemaster::WebBackend::Engine'); +my $engine = Zonemaster::WebBackend::Engine->new( { db => 'Zonemaster::WebBackend::DB::SQLite' } ); +isa_ok( $engine, 'Zonemaster::WebBackend::Engine' ); # create a new memory SQLite database -ok($engine->{db}->create_db()); +ok( $engine->{db}->create_db() ); # add test user -ok($engine->add_api_user({username => "zonemaster_test", api_key => "zonemaster_test's api key"}) == 1); -ok(scalar($engine->{db}->dbh->selectrow_array(q/SELECT * FROM users WHERE user_info like '%zonemaster_test%'/)) == 1); +ok( $engine->add_api_user( { username => "zonemaster_test", api_key => "zonemaster_test's api key" } ) == 1 ); +ok( + scalar( $engine->{db}->dbh->selectrow_array( q/SELECT * FROM users WHERE user_info like '%zonemaster_test%'/ ) ) == + 1 ); # add a new test to the db my $frontend_params_1 = { - client_id => 'Zonemaster CGI/Dancer/node.js', # free string - client_version => '1.0', # free version like string - - domain => 'afnic.fr', # content of the domain text field - advanced => 1, # 0 or 1, is the advanced options checkbox checked - ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked - ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked - profile => 'test_profile_1', # the id if the Test profile listbox - nameservers => [ # list of the namaserves up to 32 - { ns => 'ns1.nic.fr', ip => '1.1.1.1'}, # key values pairs representing nameserver => namesterver_ip - { ns => 'ns2.nic.fr', ip => '192.134.4.1'}, - ], - ds_digest_pairs => [ # list of DS/Digest pairs up to 32 - { algorithm => 'sha1', digest => '0123456789012345678901234567890123456789'}, # key values pairs representing ds => digest - { algorithm => 'sha256', digest => '0123456789012345678901234567890123456789012345678901234567890123'}, # key values pairs representing ds => digest - ], + client_id => 'Zonemaster CGI/Dancer/node.js', # free string + client_version => '1.0', # free version like string + + domain => 'afnic.fr', # content of the domain text field + advanced => 1, # 0 or 1, is the advanced options checkbox checked + ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked + ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked + profile => 'test_profile_1', # the id if the Test profile listbox + nameservers => [ # list of the namaserves up to 32 + { ns => 'ns1.nic.fr', ip => '1.1.1.1' }, # key values pairs representing nameserver => namesterver_ip + { ns => 'ns2.nic.fr', ip => '192.134.4.1' }, + ], + ds_digest_pairs => [ # list of DS/Digest pairs up to 32 + { algorithm => 'sha1', digest => '0123456789012345678901234567890123456789' } + , # key values pairs representing ds => digest + { algorithm => 'sha256', digest => '0123456789012345678901234567890123456789012345678901234567890123' } + , # key values pairs representing ds => digest + ], }; -ok($engine->start_domain_test($frontend_params_1) == 1); -ok(scalar($engine->{db}->dbh->selectrow_array(q/SELECT id FROM test_results WHERE id=1/)) == 1); +ok( $engine->start_domain_test( $frontend_params_1 ) == 1 ); +ok( scalar( $engine->{db}->dbh->selectrow_array( q/SELECT id FROM test_results WHERE id=1/ ) ) == 1 ); # test test_progress API -ok($engine->test_progress(1) == 0); +ok( $engine->test_progress( 1 ) == 0 ); -require_ok('Zonemaster::WebBackend::Runner'); -my $command = qq/perl -MZonemaster::WebBackend::Runner -E'Zonemaster::WebBackend::Runner->new\(\{ db => "Zonemaster::WebBackend::DB::SQLite"\} \)->run\(1\)'/; -system ("$command &"); +require_ok( 'Zonemaster::WebBackend::Runner' ); +my $command = +qq/perl -MZonemaster::WebBackend::Runner -E'Zonemaster::WebBackend::Runner->new\(\{ db => "Zonemaster::WebBackend::DB::SQLite"\} \)->run\(1\)'/; +system( "$command &" ); -sleep(5); -ok($engine->test_progress(1) > 0); +sleep( 5 ); +ok( $engine->test_progress( 1 ) > 0 ); -foreach my $i (1..12) { - sleep(5); - my $progress = $engine->test_progress(1); - print STDERR "pregress: $progress\n"; - last if ($progress == 100); +foreach my $i ( 1 .. 12 ) { + sleep( 5 ); + my $progress = $engine->test_progress( 1 ); + print STDERR "pregress: $progress\n"; + last if ( $progress == 100 ); } -ok($engine->test_progress(1) == 100); -my $test_results = $engine->get_test_results({ id => 1, language => 'fr-FR' }); -ok(defined $test_results->{id}, 'TEST1 $test_results->{id} defined'); -ok(defined $test_results->{params}, 'TEST1 $test_results->{params} defined'); -ok(defined $test_results->{creation_time}, 'TEST1 $test_results->{creation_time} defined'); -ok(defined $test_results->{results}, 'TEST1 $test_results->{results} defined'); -ok(scalar(@{$test_results->{results}}) > 1, 'TEST1 got some results'); +ok( $engine->test_progress( 1 ) == 100 ); +my $test_results = $engine->get_test_results( { id => 1, language => 'fr-FR' } ); +ok( defined $test_results->{id}, 'TEST1 $test_results->{id} defined' ); +ok( defined $test_results->{params}, 'TEST1 $test_results->{params} defined' ); +ok( defined $test_results->{creation_time}, 'TEST1 $test_results->{creation_time} defined' ); +ok( defined $test_results->{results}, 'TEST1 $test_results->{results} defined' ); +ok( scalar( @{ $test_results->{results} } ) > 1, 'TEST1 got some results' ); -done_testing(); \ No newline at end of file +done_testing(); diff --git a/t/test02.t b/t/test02.t index e78eddcd9..088152632 100644 --- a/t/test02.t +++ b/t/test02.t @@ -5,10 +5,14 @@ use 5.14.2; use Test::More; # see done_testing() my $can_use_threads = eval 'use threads; 1'; +my $can_use_pg = eval 'use DBD::Pg; 1'; if ( not $can_use_threads ) { plan skip_all => 'No threads in this perl.'; } +elsif ( not $can_use_pg) { + plan skip_all => 'Could not load DBD::Pg.'; +} else { use_ok( 'Zonemaster::WebBackend::Engine' ); diff --git a/t/test03.t b/t/test03.t index 55a2ee56e..50e1eb367 100644 --- a/t/test03.t +++ b/t/test03.t @@ -11,7 +11,7 @@ if ( not $can_use_threads ) { } else { # Require Zonemaster::WebBackend::Engine.pm test - require_ok( 'Zonemaster::WebBackend::Engine' ); + use_ok( 'Zonemaster::WebBackend::Engine' ); #require Zonemaster::WebBackend::Engine; diff --git a/t/test_mysql_backend.t b/t/test_mysql_backend.t index 529780413..a32c6067b 100644 --- a/t/test_mysql_backend.t +++ b/t/test_mysql_backend.t @@ -2,7 +2,7 @@ use strict; use warnings; use 5.14.2; -use Test::More; # see done_testing() +use Test::More; # see done_testing() my $can_use_threads = eval 'use threads; 1'; @@ -11,162 +11,172 @@ if ( not $can_use_threads ) { } else { # Require Zonemaster::WebBackend::Engine.pm test -require_ok( 'Zonemaster::WebBackend::Engine' ); -#require Zonemaster::WebBackend::Engine; - -# Create Zonemaster::WebBackend::Engine object -my $engine = Zonemaster::WebBackend::Engine->new({ db => 'Zonemaster::WebBackend::DB::MySQL'} ); -isa_ok($engine, 'Zonemaster::WebBackend::Engine'); - -# create a new memory MySQL database -ok($engine->{db}->create_db()); - -# add test user -ok($engine->add_api_user({username => "zonemaster_test", api_key => "zonemaster_test's api key"}) == 1); -ok(scalar($engine->{db}->dbh->selectrow_array(q/SELECT * FROM users WHERE user_info like '%zonemaster_test%'/)) == 1); - -# add a new test to the db -my $frontend_params_1 = { - client_id => 'Zonemaster CGI/Dancer/node.js', # free string - client_version => '1.0', # free version like string - - domain => 'afnic.fr', # content of the domain text field - advanced_options => 1, # 0 or 1, is the advanced options checkbox checked - ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked - ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked - test_profile => 'test_profile_1', # the id if the Test profile listbox - nameservers => [ # list of the namaserves up to 32 - { ns => 'ns1.nic.fr', ip => '1.2.3.4'}, # key values pairs representing nameserver => namesterver_ip - { ns => 'ns2.nic.fr', ip => '192.134.4.1'}, + require_ok( 'Zonemaster::WebBackend::Engine' ); + + #require Zonemaster::WebBackend::Engine; + + # Create Zonemaster::WebBackend::Engine object + my $engine = Zonemaster::WebBackend::Engine->new( { db => 'Zonemaster::WebBackend::DB::MySQL' } ); + isa_ok( $engine, 'Zonemaster::WebBackend::Engine' ); + + # create a new memory MySQL database + ok( $engine->{db}->create_db() ); + + # add test user + ok( $engine->add_api_user( { username => "zonemaster_test", api_key => "zonemaster_test's api key" } ) == 1 ); + ok( + scalar( + $engine->{db}->dbh->selectrow_array( q/SELECT * FROM users WHERE user_info like '%zonemaster_test%'/ ) + ) == 1 + ); + + # add a new test to the db + my $frontend_params_1 = { + client_id => 'Zonemaster CGI/Dancer/node.js', # free string + client_version => '1.0', # free version like string + + domain => 'afnic.fr', # content of the domain text field + advanced_options => 1, # 0 or 1, is the advanced options checkbox checked + ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked + ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked + test_profile => 'test_profile_1', # the id if the Test profile listbox + nameservers => [ # list of the namaserves up to 32 + { ns => 'ns1.nic.fr', ip => '1.2.3.4' }, # key values pairs representing nameserver => namesterver_ip + { ns => 'ns2.nic.fr', ip => '192.134.4.1' }, ], - ds_digest_pairs => [ # list of DS/Digest pairs up to 32 - {'ds1' => 'ds-test1'}, # key values pairs representing ds => digest - {'ds2' => 'digest2'}, + ds_digest_pairs => [ # list of DS/Digest pairs up to 32 + { 'ds1' => 'ds-test1' }, # key values pairs representing ds => digest + { 'ds2' => 'digest2' }, ], -}; -ok($engine->start_domain_test($frontend_params_1) == 1); -ok(scalar($engine->{db}->dbh->selectrow_array(q/SELECT id FROM test_results WHERE id=1/)) == 1); - -# test test_progress API -ok($engine->test_progress(1) == 0); - -require_ok('Zonemaster::WebBackend::Runner'); -threads->create( sub { Zonemaster::WebBackend::Runner->new({ db => 'Zonemaster::WebBackend::DB::MySQL'} )->run(1); } )->detach(); - -sleep(5); -ok($engine->test_progress(1) > 0); - -foreach my $i (1..12) { - sleep(5); - my $progress = $engine->test_progress(1); - print STDERR "pregress: $progress\n"; - last if ($progress == 100); -} -ok($engine->test_progress(1) == 100); -my $test_results = $engine->get_test_results({ id => 1, language => 'fr-FR' }); -ok(defined $test_results->{id}); -ok(defined $test_results->{params}); -ok(defined $test_results->{creation_time}); -ok(defined $test_results->{results}); -ok(scalar(@{$test_results->{results}}) > 1); - -my $frontend_params_2 = { - client_id => 'Zonemaster CGI/Dancer/node.js', # free string - client_version => '1.0', # free version like string - - domain => 'afnic.fr', # content of the domain text field - advanced_options => 1, # 0 or 1, is the advanced options checkbox checked - ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked - ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked - test_profile => 'test_profile_1', # the id if the Test profile listbox - nameservers => [ # list of the namaserves up to 32 - { ns => 'ns1.nic.fr', ip => '1.2.3.4'}, # key values pairs representing nameserver => namesterver_ip - { ns => 'ns2.nic.fr', ip => '192.134.4.1'}, + }; + ok( $engine->start_domain_test( $frontend_params_1 ) == 1 ); + ok( scalar( $engine->{db}->dbh->selectrow_array( q/SELECT id FROM test_results WHERE id=1/ ) ) == 1 ); + + # test test_progress API + ok( $engine->test_progress( 1 ) == 0 ); + + require_ok( 'Zonemaster::WebBackend::Runner' ); + threads->create( + sub { Zonemaster::WebBackend::Runner->new( { db => 'Zonemaster::WebBackend::DB::MySQL' } )->run( 1 ); } ) + ->detach(); + + sleep( 5 ); + ok( $engine->test_progress( 1 ) > 0 ); + + foreach my $i ( 1 .. 12 ) { + sleep( 5 ); + my $progress = $engine->test_progress( 1 ); + print STDERR "pregress: $progress\n"; + last if ( $progress == 100 ); + } + ok( $engine->test_progress( 1 ) == 100 ); + my $test_results = $engine->get_test_results( { id => 1, language => 'fr-FR' } ); + ok( defined $test_results->{id} ); + ok( defined $test_results->{params} ); + ok( defined $test_results->{creation_time} ); + ok( defined $test_results->{results} ); + ok( scalar( @{ $test_results->{results} } ) > 1 ); + + my $frontend_params_2 = { + client_id => 'Zonemaster CGI/Dancer/node.js', # free string + client_version => '1.0', # free version like string + + domain => 'afnic.fr', # content of the domain text field + advanced_options => 1, # 0 or 1, is the advanced options checkbox checked + ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked + ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked + test_profile => 'test_profile_1', # the id if the Test profile listbox + nameservers => [ # list of the namaserves up to 32 + { ns => 'ns1.nic.fr', ip => '1.2.3.4' }, # key values pairs representing nameserver => namesterver_ip + { ns => 'ns2.nic.fr', ip => '192.134.4.1' }, ], - ds_digest_pairs => [ # list of DS/Digest pairs up to 32 - {'ds1' => 'ds-test2'}, # key values pairs representing ds => digest - {'ds2' => 'digest2'}, + ds_digest_pairs => [ # list of DS/Digest pairs up to 32 + { 'ds1' => 'ds-test2' }, # key values pairs representing ds => digest + { 'ds2' => 'digest2' }, ], -}; -ok($engine->start_domain_test($frontend_params_2) == 2); -ok(scalar($engine->{db}->dbh->selectrow_array(q/SELECT id FROM test_results WHERE id=2/)) == 2); - -# test test_progress API -ok($engine->test_progress(2) == 0); - -require_ok('Zonemaster::WebBackend::Runner'); -threads->create( sub { Zonemaster::WebBackend::Runner->new({ db => 'Zonemaster::WebBackend::DB::MySQL'} )->run(2); } )->detach(); - -sleep(5); -ok($engine->test_progress(2) > 0); - -foreach my $i (1..12) { - sleep(5); - my $progress = $engine->test_progress(2); - print STDERR "pregress: $progress\n"; - last if ($progress == 100); -} -ok($engine->test_progress(2) == 100); -$test_results = $engine->get_test_results({ id => 1, language => 'fr-FR' }); -ok(defined $test_results->{id}); -ok(defined $test_results->{params}); -ok(defined $test_results->{creation_time}); -ok(defined $test_results->{results}); -ok(scalar(@{$test_results->{results}}) > 1); - - -my $frontend_params_3 = { - client_id => 'Zonemaster CGI/Dancer/node.js', # free string - client_version => '1.0', # free version like string - - domain => 'nic.fr', # content of the domain text field - advanced_options => 1, # 0 or 1, is the advanced options checkbox checked - ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked - ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked - test_profile => 'test_profile_1', # the id if the Test profile listbox - nameservers => [ # list of the namaserves up to 32 - { ns => 'ns1.nic.fr', ip => '1.2.3.4'}, # key values pairs representing nameserver => namesterver_ip - { ns => 'ns2.nic.fr', ip => '192.134.4.1'}, + }; + ok( $engine->start_domain_test( $frontend_params_2 ) == 2 ); + ok( scalar( $engine->{db}->dbh->selectrow_array( q/SELECT id FROM test_results WHERE id=2/ ) ) == 2 ); + + # test test_progress API + ok( $engine->test_progress( 2 ) == 0 ); + + require_ok( 'Zonemaster::WebBackend::Runner' ); + threads->create( + sub { Zonemaster::WebBackend::Runner->new( { db => 'Zonemaster::WebBackend::DB::MySQL' } )->run( 2 ); } ) + ->detach(); + + sleep( 5 ); + ok( $engine->test_progress( 2 ) > 0 ); + + foreach my $i ( 1 .. 12 ) { + sleep( 5 ); + my $progress = $engine->test_progress( 2 ); + print STDERR "pregress: $progress\n"; + last if ( $progress == 100 ); + } + ok( $engine->test_progress( 2 ) == 100 ); + $test_results = $engine->get_test_results( { id => 1, language => 'fr-FR' } ); + ok( defined $test_results->{id} ); + ok( defined $test_results->{params} ); + ok( defined $test_results->{creation_time} ); + ok( defined $test_results->{results} ); + ok( scalar( @{ $test_results->{results} } ) > 1 ); + + my $frontend_params_3 = { + client_id => 'Zonemaster CGI/Dancer/node.js', # free string + client_version => '1.0', # free version like string + + domain => 'nic.fr', # content of the domain text field + advanced_options => 1, # 0 or 1, is the advanced options checkbox checked + ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked + ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked + test_profile => 'test_profile_1', # the id if the Test profile listbox + nameservers => [ # list of the namaserves up to 32 + { ns => 'ns1.nic.fr', ip => '1.2.3.4' }, # key values pairs representing nameserver => namesterver_ip + { ns => 'ns2.nic.fr', ip => '192.134.4.1' }, ], - ds_digest_pairs => [ # list of DS/Digest pairs up to 32 - {'ds1' => 'ds-test1'}, # key values pairs representing ds => digest - {'ds2' => 'digest2'}, + ds_digest_pairs => [ # list of DS/Digest pairs up to 32 + { 'ds1' => 'ds-test1' }, # key values pairs representing ds => digest + { 'ds2' => 'digest2' }, ], -}; -ok($engine->start_domain_test($frontend_params_3) == 3); -ok(scalar($engine->{db}->dbh->selectrow_array(q/SELECT id FROM test_results WHERE id=3/)) == 3); - -# test test_progress API -ok($engine->test_progress(3) == 0); - -require_ok('Zonemaster::WebBackend::Runner'); -threads->create( sub { Zonemaster::WebBackend::Runner->new({ db => 'Zonemaster::WebBackend::DB::MySQL'} )->run(3); } )->detach(); - -sleep(5); -ok($engine->test_progress(3) > 0); - -foreach my $i (1..20) { - sleep(5); - my $progress = $engine->test_progress(3); - print STDERR "pregress: $progress\n"; - last if ($progress == 100); + }; + ok( $engine->start_domain_test( $frontend_params_3 ) == 3 ); + ok( scalar( $engine->{db}->dbh->selectrow_array( q/SELECT id FROM test_results WHERE id=3/ ) ) == 3 ); + + # test test_progress API + ok( $engine->test_progress( 3 ) == 0 ); + + require_ok( 'Zonemaster::WebBackend::Runner' ); + threads->create( + sub { Zonemaster::WebBackend::Runner->new( { db => 'Zonemaster::WebBackend::DB::MySQL' } )->run( 3 ); } ) + ->detach(); + + sleep( 5 ); + ok( $engine->test_progress( 3 ) > 0 ); + + foreach my $i ( 1 .. 20 ) { + sleep( 5 ); + my $progress = $engine->test_progress( 3 ); + print STDERR "pregress: $progress\n"; + last if ( $progress == 100 ); + } + ok( $engine->test_progress( 3 ) == 100 ); + $test_results = $engine->get_test_results( { id => 1, language => 'fr-FR' } ); + ok( defined $test_results->{id} ); + ok( defined $test_results->{params} ); + ok( defined $test_results->{creation_time} ); + ok( defined $test_results->{results} ); + ok( scalar( @{ $test_results->{results} } ) > 1 ); + + my $offset = 0; + my $limit = 10; + my $test_history = + $engine->get_test_history( { frontend_params => $frontend_params_1, offset => $offset, limit => $limit } ); + print STDERR Dumper( $test_history ); + ok( scalar( @$test_history ) == 2 ); + ok( $test_history->[0]->{id} == 1 || $test_history->[1]->{id} == 1 ); + ok( $test_history->[0]->{id} == 2 || $test_history->[1]->{id} == 2 ); + + done_testing(); } -ok($engine->test_progress(3) == 100); -$test_results = $engine->get_test_results({ id => 1, language => 'fr-FR' }); -ok(defined $test_results->{id}); -ok(defined $test_results->{params}); -ok(defined $test_results->{creation_time}); -ok(defined $test_results->{results}); -ok(scalar(@{$test_results->{results}}) > 1); - - -my $offset = 0; -my $limit = 10; -my $test_history = $engine->get_test_history( { frontend_params => $frontend_params_1, offset => $offset, limit => $limit } ); -print STDERR Dumper($test_history); -ok(scalar(@$test_history) == 2); -ok($test_history->[0]->{id} == 1 || $test_history->[1]->{id} == 1); -ok($test_history->[0]->{id} == 2 || $test_history->[1]->{id} == 2); - -done_testing(); -} \ No newline at end of file diff --git a/t/test_validate_syntax.t b/t/test_validate_syntax.t index 785e97d71..5c36cb337 100644 --- a/t/test_validate_syntax.t +++ b/t/test_validate_syntax.t @@ -4,7 +4,7 @@ use 5.14.2; use utf8; use Encode; -use Test::More; # see done_testing() +use Test::More; # see done_testing() my $can_use_threads = eval 'use threads; 1'; @@ -13,227 +13,237 @@ if ( not $can_use_threads ) { } else { # Require Zonemaster::WebBackend::Engine.pm test -require_ok( 'Zonemaster::WebBackend::Engine' ); -#require Zonemaster::WebBackend::Engine; - -# Create Zonemaster::WebBackend::Engine object -my $engine = Zonemaster::WebBackend::Engine->new({ db => 'Zonemaster::WebBackend::DB::SQLite'} ); -isa_ok($engine, 'Zonemaster::WebBackend::Engine'); - -=coment -my $frontend_params = { - client_id => 'Zonemaster NoJS', # free string - client_version => '1.0', # free version like string - - domain => 'afnic.fr', # content of the domain text field - advanced_options => 1, # 0 or 1, is the advanced options checkbox checked - ipv4 => 1, # 0 or 1, is the ipv4 checkbox checked - ipv6 => 1, # 0 or 1, is the ipv6 checkbox checked - test_profile => 'test_profile_1', # the id if the Test profile listbox - nameservers => [ # list of the namaserves up to 32 - { ns => 'ns1.nic.fr', ip => '1.2.3.4'}, # key values pairs representing nameserver => namesterver_ip - { ns => 'ns2.nic.fr', ip => '192.134.4.1'}, - ], - ds_digest_pairs => [ # list of DS/Digest pairs up to 32 - { algorithm => 'ds1', digest => 'ds-test1'}, - { algorithm => 'ds2', digest => 'ds-test2'}, - ], -}; -=cut - -my $frontend_params; - -$frontend_params->{nameservers} = [ # list of the namaserves up to 32 - { ns => 'ns1.nic.fr', ip => '1.2.3.4'}, # key values pairs representing nameserver => namesterver_ip - { ns => 'ns2.nic.fr', ip => '192.134.4.1'}, - ]; - -# domain present? -$frontend_params->{domain} = ''; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', 'domain not present'); - -# domain present? -$frontend_params->{domain} = 'afnic.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', 'domain present'); - -# domain short -$frontend_params->{domain} = 'a'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', 'domain short'); - -# root zone -$frontend_params->{domain} = '.'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', 'root zone'); - -# idn -$frontend_params->{domain} = 'é'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('idn domain=[é]')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# idn -$frontend_params->{domain} = 'éé'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('idn domain=[éé]')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 253 characters long domain without dot -$frontend_params->{domain} = '123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('253 characters long domain without dot')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 254 characters long domain with trailing dot -$frontend_params->{domain} = '123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com.'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('254 characters long domain with trailing dot')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 254 characters long domain without trailing -$frontend_params->{domain} = '123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.club'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('254 characters long domain without trailing dot')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 63 characters long domain label -$frontend_params->{domain} = '012345678901234567890123456789012345678901234567890123456789-63.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('63 characters long domain label')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 64 characters long domain label -$frontend_params->{domain} = '012345678901234567890123456789012345678901234567890123456789-64-.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('64 characters long domain label')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# invalid domain characters -$frontend_params->{domain} = 'test1_.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('invalid domain characters')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -#TEST NS -$frontend_params->{domain} = 'afnic.fr'; -$frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4'; - -# ns present? -$frontend_params->{nameservers}->[0]->{ns} = ''; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', 'domain not present'); - -# domain present? -$frontend_params->{nameservers}->[0]->{ns} = 'afnic.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', 'domain present'); - -# domain short -$frontend_params->{nameservers}->[0]->{ns} = 'a'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', 'domain short'); - -# root zone -$frontend_params->{nameservers}->[0]->{ns} = '.'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', 'root zone'); - -# idn -$frontend_params->{nameservers}->[0]->{ns} = 'é'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('idn domain=[é]')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# idn -$frontend_params->{nameservers}->[0]->{ns} = 'éé'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('idn domain=[éé]')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 253 characters long domain without dot -$frontend_params->{nameservers}->[0]->{ns} = '123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('253 characters long domain without dot')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 254 characters long domain with trailing dot -$frontend_params->{nameservers}->[0]->{ns} = '123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com.'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('254 characters long domain with trailing dot')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 254 characters long domain without trailing -$frontend_params->{nameservers}->[0]->{ns} = '123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.club'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('254 characters long domain without trailing dot')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 63 characters long domain label -$frontend_params->{nameservers}->[0]->{ns} = '012345678901234567890123456789012345678901234567890123456789-63.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('63 characters long domain label')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# 64 characters long domain label -$frontend_params->{nameservers}->[0]->{ns} = '012345678901234567890123456789012345678901234567890123456789-64-.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('64 characters long domain label')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# invalid domain characters -$frontend_params->{nameservers}->[0]->{ns} = 'test1_.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('invalid domain characters')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# DELEGATED TEST -delete($frontend_params->{nameservers}); - -$frontend_params->{domain} = 'afnic.fr'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('delegated domain exists')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{domain} = 'afnic.sdfsdfsdlfsmdlf'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('delegated domain doesn\'t exists')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# IP ADDRESS FORMAT -$frontend_params->{domain} = 'afnic.fr'; -$frontend_params->{nameservers}->[0]->{ns} = 'ns1.nic.fr'; - -$frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('Valid IPV4')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4444'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid IPV4')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{nameservers}->[0]->{ip} = 'fe80::6ef0:49ff:fe7b:e4bb'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('Valid IPV6')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{nameservers}->[0]->{ip} = 'fe80::6ef0:49ff:fe7b:e4bbffffff'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid IPV6')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -# DS -$frontend_params->{domain} = 'afnic.fr'; -$frontend_params->{nameservers}->[0]->{ns} = 'ns1.nic.fr'; -$frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4'; - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha1'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = '0123456789012345678901234567890123456789'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('Valid Algorithm Type [sha1]')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha256'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = '0123456789012345678901234567890123456789012345678901234567890123'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'ok', encode_utf8('Valid Algorithm Type [sha256]')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha2'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = '0123456789012345678901234567890123456789'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid Algorithm Type')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha1'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = '01234567890123456789012345678901234567890'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid [sha1] digest length')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha256'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = '01234567890123456789012345678901234567890123456789012345678901230'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid [sha256] digest length')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha1'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = 'Z123456789012345678901234567890123456789'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid [sha1] digest format')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -$frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha256'; -$frontend_params->{ds_digest_pairs}->[0]->{digest} = 'Z123456789012345678901234567890123456789012345678901234567890123'; -ok($engine->validate_syntax($frontend_params)->{status} eq 'nok', encode_utf8('Invalid [sha256] digest fprmat')) - or diag($engine->validate_syntax($frontend_params)->{message}); - -done_testing(); -} \ No newline at end of file + use_ok( 'Zonemaster::WebBackend::Engine' ); + + # Create Zonemaster::WebBackend::Engine object + my $engine = Zonemaster::WebBackend::Engine->new( { db => 'Zonemaster::WebBackend::DB::SQLite' } ); + isa_ok( $engine, 'Zonemaster::WebBackend::Engine' ); + + my $frontend_params = { + ipv4 => 1, + ipv6 => 1, + }; + + $frontend_params->{nameservers} = [ # list of the namaserves up to 32 + { ns => 'ns1.nic.fr', ip => '1.2.3.4' }, # key values pairs representing nameserver => namesterver_ip + { ns => 'ns2.nic.fr', ip => '192.134.4.1' }, + ]; + + # domain present? + $frontend_params->{domain} = ''; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', 'domain not present' ); + + # domain present? + $frontend_params->{domain} = 'afnic.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', 'domain present' ); + + # domain short + $frontend_params->{domain} = 'a'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', 'domain short' ); + + # root zone + $frontend_params->{domain} = '.'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', 'root zone' ); + + # idn + $frontend_params->{domain} = 'é'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'idn domain=[é]' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # idn + $frontend_params->{domain} = 'éé'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'idn domain=[éé]' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 253 characters long domain without dot + $frontend_params->{domain} = +'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'ok', + encode_utf8( '253 characters long domain without dot' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 254 characters long domain with trailing dot + $frontend_params->{domain} = +'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com.'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'ok', + encode_utf8( '254 characters long domain with trailing dot' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 254 characters long domain without trailing + $frontend_params->{domain} = +'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.club'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( '254 characters long domain without trailing dot' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 63 characters long domain label + $frontend_params->{domain} = '012345678901234567890123456789012345678901234567890123456789-63.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', + encode_utf8( '63 characters long domain label' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 64 characters long domain label + $frontend_params->{domain} = '012345678901234567890123456789012345678901234567890123456789-64-.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( '64 characters long domain label' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # invalid domain characters + $frontend_params->{domain} = 'test1_.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'invalid domain characters' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + #TEST NS + $frontend_params->{domain} = 'afnic.fr'; + $frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4'; + + # ns present? + $frontend_params->{nameservers}->[0]->{ns} = ''; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', 'domain not present' ); + + # domain present? + $frontend_params->{nameservers}->[0]->{ns} = 'afnic.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', 'domain present' ); + + # domain short + $frontend_params->{nameservers}->[0]->{ns} = 'a'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', 'domain short' ); + + # root zone + $frontend_params->{nameservers}->[0]->{ns} = '.'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', 'root zone' ); + + # idn + $frontend_params->{nameservers}->[0]->{ns} = 'é'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'idn domain=[é]' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # idn + $frontend_params->{nameservers}->[0]->{ns} = 'éé'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'idn domain=[éé]' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 253 characters long domain without dot + $frontend_params->{nameservers}->[0]->{ns} = +'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'ok', + encode_utf8( '253 characters long domain without dot' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 254 characters long domain with trailing dot + $frontend_params->{nameservers}->[0]->{ns} = +'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.com.'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'ok', + encode_utf8( '254 characters long domain with trailing dot' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 254 characters long domain without trailing + $frontend_params->{nameservers}->[0]->{ns} = +'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.club'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( '254 characters long domain without trailing dot' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 63 characters long domain label + $frontend_params->{nameservers}->[0]->{ns} = '012345678901234567890123456789012345678901234567890123456789-63.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', + encode_utf8( '63 characters long domain label' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # 64 characters long domain label + $frontend_params->{nameservers}->[0]->{ns} = '012345678901234567890123456789012345678901234567890123456789-64-.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( '64 characters long domain label' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # invalid domain characters + $frontend_params->{nameservers}->[0]->{ns} = 'test1_.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'invalid domain characters' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # DELEGATED TEST + delete( $frontend_params->{nameservers} ); + + $frontend_params->{domain} = 'afnic.fr'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'delegated domain exists' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{domain} = 'afnic.sdfsdfsdlfsmdlf'; + ok( + $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( 'delegated domain doesn\'t exists' ) + ) or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # IP ADDRESS FORMAT + $frontend_params->{domain} = 'afnic.fr'; + $frontend_params->{nameservers}->[0]->{ns} = 'ns1.nic.fr'; + + $frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'Valid IPV4' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4444'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'Invalid IPV4' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{nameservers}->[0]->{ip} = 'fe80::6ef0:49ff:fe7b:e4bb'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'Valid IPV6' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{nameservers}->[0]->{ip} = 'fe80::6ef0:49ff:fe7b:e4bbffffff'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'Invalid IPV6' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + # DS + $frontend_params->{domain} = 'afnic.fr'; + $frontend_params->{nameservers}->[0]->{ns} = 'ns1.nic.fr'; + $frontend_params->{nameservers}->[0]->{ip} = '1.2.3.4'; + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha1'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = '0123456789012345678901234567890123456789'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'Valid Algorithm Type [sha1]' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha256'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = + '0123456789012345678901234567890123456789012345678901234567890123'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'ok', encode_utf8( 'Valid Algorithm Type [sha256]' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha2'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = '0123456789012345678901234567890123456789'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'Invalid Algorithm Type' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha1'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = '01234567890123456789012345678901234567890'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'Invalid [sha1] digest length' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha256'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = + '01234567890123456789012345678901234567890123456789012345678901230'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( 'Invalid [sha256] digest length' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha1'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = 'Z123456789012345678901234567890123456789'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', encode_utf8( 'Invalid [sha1] digest format' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + $frontend_params->{ds_digest_pairs}->[0]->{algorithm} = 'sha256'; + $frontend_params->{ds_digest_pairs}->[0]->{digest} = + 'Z123456789012345678901234567890123456789012345678901234567890123'; + ok( $engine->validate_syntax( $frontend_params )->{status} eq 'nok', + encode_utf8( 'Invalid [sha256] digest fprmat' ) ) + or diag( $engine->validate_syntax( $frontend_params )->{message} ); + + done_testing(); +}