diff --git a/inc/Local/Module/Build.pm b/inc/Local/Module/Build.pm index 0496335691..e909e04a43 100644 --- a/inc/Local/Module/Build.pm +++ b/inc/Local/Module/Build.pm @@ -51,27 +51,6 @@ sub _test_preconditions { } } -sub _download_certs { - my ($self) = @_; - my $uri = $ENV{CATALYST_SERVER}; - use File::Temp qw/tempfile/; - my ($ua, $req, $res); - $ua = LWP::UserAgent->new(cookie_jar => {}, ssl_opts => {verify_hostname => 0}); - $res = $ua->post($uri.'/login/admin', {username => 'administrator', password => 'administrator'}, 'Referer' => $uri.'/login/admin'); - $res = $ua->get($uri.'/dashboard/'); - $res = $ua->get($uri.'/administrator/1/api_key'); - if ($res->decoded_content =~ m/gen\.generate/) { # key need to be generated first - $res = $ua->post($uri.'/administrator/1/api_key', {'gen.generate' => 'foo'}, 'Referer' => $uri.'/dashboard'); - } - my (undef, $tmp_apiclient_filename) = tempfile; - my (undef, $tmp_apica_filename) = tempfile; - $res = $ua->post($uri.'/administrator/1/api_key', {'pem.download' => 'foo'}, 'Referer' => $uri.'/dashboard', ':content_file' => $tmp_apiclient_filename); - $res = $ua->post($uri.'/administrator/1/api_key', {'ca.download' => 'foo'}, 'Referer' => $uri.'/dashboard', ':content_file' => $tmp_apica_filename); - $ENV{API_SSL_CLIENT_CERT} = $tmp_apiclient_filename; - $ENV{API_SSL_CA_CERT} = $tmp_apica_filename; - print "Client cert: $tmp_apiclient_filename - CA cert: $tmp_apica_filename\n" if $self->verbose; -} - around('ACTION_test', sub { my $super = shift; my $self = shift; @@ -121,19 +100,15 @@ sub ACTION_test_api { my ($self) = @_; $self->depends_on('code'); $self->_test_preconditions; - $self->_download_certs; $self->test_files('t/api-rest/*.t'); $self->generic_test(type => 'default'); - unlink ($ENV{API_SSL_CLIENT_CERT}, $ENV{API_SSL_CA_CERT}); # created by _download_certs() } sub ACTION_test_generic { my ($self) = @_; $self->depends_on('code'); $self->_test_preconditions; - $self->_download_certs; $self->generic_test(type => 'default'); - unlink ($ENV{API_SSL_CLIENT_CERT}, $ENV{API_SSL_CA_CERT}); # created by _download_certs() } sub ACTION_readme { diff --git a/t/api-rest/api-all-links.t b/t/api-rest/api-all-links.t index d0f728e586..43fdbfa541 100644 --- a/t/api-rest/api-all-links.t +++ b/t/api-rest/api-all-links.t @@ -1,25 +1,24 @@ -use Sipwise::Base; +use warnings; +use strict; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-auth.t b/t/api-rest/api-auth.t deleted file mode 100644 index bcf77be95b..0000000000 --- a/t/api-rest/api-auth.t +++ /dev/null @@ -1,74 +0,0 @@ -use Sipwise::Base; -use Net::Domain qw(hostfqdn); -use LWP::UserAgent; -use Test::More; - -my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; - -my $invalid_ssl_client_cert = $ENV{API_SSL_INVALID_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.invalid.pem"; -my $invalid_ssl_client_key = $ENV{API_SSL_INVALID_CLIENT_KEY} || - $invalid_ssl_client_cert; - -my $unauth_ssl_client_cert = $ENV{API_SSL_UNAUTH_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.unauth.pem"; -my $unauth_ssl_client_key = $ENV{API_SSL_UNAUTH_CLIENT_KEY} || - $unauth_ssl_client_cert; - -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; - -my ($ua, $res); -$ua = LWP::UserAgent->new; - -SKIP: { - if (! -e $invalid_ssl_client_cert) { - skip ("Skip Invalid client certificate, we have none", 1); - } - # invalid cert - $ua->ssl_opts( - SSL_cert_file => $invalid_ssl_client_cert, - SSL_key_file => $invalid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); - $res = $ua->get($uri.'/api/'); - is($res->code, 400, "check invalid client certificate") - || note ($res->message); -} - -SKIP: { - if (! -e $unauth_ssl_client_cert) { - skip ("Skip unauthorized client certificate, we have none", 1); - } - # unauth cert - $ua->ssl_opts( - SSL_cert_file => $unauth_ssl_client_cert, - SSL_key_file => $unauth_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); - $res = $ua->get($uri.'/api/'); - is($res->code, 403, "check unauthorized client certificate") - || note ($res->message); -} - -# successful auth -$ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); -$res = $ua->get($uri.'/api/'); -is($res->code, 200, "check valid client certificate") - || note ($res->message); - -#my @links = $res->header('Link'); -#ok(grep /^<\/api\/contacts\/>; rel="collection /, @links); -#ok(grep /^<\/api\/contracts\/>; rel="collection /, @links); - -done_testing; - -# vim: set tabstop=4 expandtab: diff --git a/t/api-rest/api-balanceintervals.t b/t/api-rest/api-balanceintervals.t index 3dcac8a9c7..73a0c15b6a 100644 --- a/t/api-rest/api-balanceintervals.t +++ b/t/api-rest/api-balanceintervals.t @@ -1,4 +1,3 @@ - use strict; use warnings; use threads qw(); @@ -51,31 +50,20 @@ if ($is_local_env) { my %config = $catalyst_config->getall(); my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -my $req_identifier; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); +my $req_identifier; my $infinite_future; { diff --git a/t/api-rest/api-billingfees.t b/t/api-rest/api-billingfees.t index 6b0125224e..8e8adde3c5 100644 --- a/t/api-rest/api-billingfees.t +++ b/t/api-rest/api-billingfees.t @@ -1,5 +1,5 @@ -#use Sipwise::Base; use strict; +use warnings; #use Moose; use Sipwise::Base; diff --git a/t/api-rest/api-billingnetworks.t b/t/api-rest/api-billingnetworks.t index 80b9735be0..70ff59f776 100644 --- a/t/api-rest/api-billingnetworks.t +++ b/t/api-rest/api-billingnetworks.t @@ -17,29 +17,18 @@ use NGCP::Panel::Utils::BillingNetworks qw(); my $is_local_env = 0; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); { my $blocks = [{ip=>'fdfe::5a55:caff:fefa:9089',mask=>128}, diff --git a/t/api-rest/api-billingprofiles.t b/t/api-rest/api-billingprofiles.t index 3fd8856665..0301cd6d83 100644 --- a/t/api-rest/api-billingprofiles.t +++ b/t/api-rest/api-billingprofiles.t @@ -7,29 +7,18 @@ use Test::More; my $is_local_env = 0; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-billingzones.t b/t/api-rest/api-billingzones.t index d030ec183c..954e9eb70d 100644 --- a/t/api-rest/api-billingzones.t +++ b/t/api-rest/api-billingzones.t @@ -1,17 +1,9 @@ -#use Sipwise::Base; use strict; +use warnings; -#use Moose; -use Sipwise::Base; use Test::Collection; use Test::FakeData; -use Net::Domain qw(hostfqdn); -use LWP::UserAgent; -use HTTP::Request::Common; -use JSON; use Test::More; -use Data::Dumper; - #init test_machine my $test_machine = Test::Collection->new( diff --git a/t/api-rest/api-callforwards.t b/t/api-rest/api-callforwards.t index 722c0aae1c..fa752ae95e 100644 --- a/t/api-rest/api-callforwards.t +++ b/t/api-rest/api-callforwards.t @@ -5,21 +5,18 @@ use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-cert-auth.t b/t/api-rest/api-cert-auth.t new file mode 100644 index 0000000000..f8dc534b5c --- /dev/null +++ b/t/api-rest/api-cert-auth.t @@ -0,0 +1,102 @@ +use warnings; +use strict; + +use Net::Domain qw(hostfqdn); +use LWP::UserAgent; +use Test::More; +use File::Temp qw/tempfile/; + +#use IO::Socket::SSL; +#$IO::Socket::SSL::DEBUG = 1; + +my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); + +#docker: CATALYST_SERVER=https://10.15.20.104:1443 perl t/api-rest/api-cert-auth.t + +my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT}; +my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || + $valid_ssl_client_cert; + +my $invalid_ssl_client_cert = $ENV{API_SSL_INVALID_CLIENT_CERT}; +my $invalid_ssl_client_key = $ENV{API_SSL_INVALID_CLIENT_KEY} || + $invalid_ssl_client_cert; + +my $unauth_ssl_client_cert = $ENV{API_SSL_UNAUTH_CLIENT_CERT}; +my $unauth_ssl_client_key = $ENV{API_SSL_UNAUTH_CLIENT_KEY} || + $unauth_ssl_client_cert; + +my $ssl_ca_cert = $ENV{API_SSL_CA_CERT}; + +unless ($valid_ssl_client_cert && $ssl_ca_cert) { + ($valid_ssl_client_cert, $ssl_ca_cert) = _download_certs($uri); + $valid_ssl_client_key = $valid_ssl_client_cert; +} + +my ($ua, $res); +$ua = LWP::UserAgent->new; + +SKIP: { + unless ( $invalid_ssl_client_cert && (-e $invalid_ssl_client_cert) ) { + skip ("Skip Invalid client certificate, we have none", 1); + } + # invalid cert + $ua->ssl_opts( + SSL_cert_file => $invalid_ssl_client_cert, + SSL_key_file => $invalid_ssl_client_key, + SSL_ca_file => $ssl_ca_cert, + ); + $res = $ua->get($uri.'/api/'); + is($res->code, 400, "check invalid client certificate") + || note ($res->message); +} + +SKIP: { + unless ( $unauth_ssl_client_cert && (-e $unauth_ssl_client_cert) ) { + skip ("Skip unauthorized client certificate, we have none", 1); + } + # unauth cert + $ua->ssl_opts( + SSL_cert_file => $unauth_ssl_client_cert, + SSL_key_file => $unauth_ssl_client_key, + SSL_ca_file => $ssl_ca_cert, + ); + $res = $ua->get($uri.'/api/'); + is($res->code, 403, "check unauthorized client certificate") + || note ($res->message); +} + +# successful auth +$ua->ssl_opts( + SSL_cert_file => $valid_ssl_client_cert, + SSL_verify_mode => 0, + verify_hostname => 0, +); +$res = $ua->get($uri.'/api/'); +is($res->code, 200, "check valid client certificate") + || note ($res->message); + +#my @links = $res->header('Link'); +#ok(grep /^<\/api\/contacts\/>; rel="collection /, @links); +#ok(grep /^<\/api\/contracts\/>; rel="collection /, @links); + +done_testing; + +sub _download_certs { + my ($uri) = @_; + my ($ua, $req, $res); + $ua = LWP::UserAgent->new(cookie_jar => {}, ssl_opts => {verify_hostname => 0, SSL_verify_mode => 0}); + $res = $ua->post($uri.'/login/admin', {username => 'administrator', password => 'administrator'}, 'Referer' => $uri.'/login/admin'); + $res = $ua->get($uri.'/dashboard/'); + $res = $ua->get($uri.'/administrator/1/api_key'); + if ($res->decoded_content =~ m/gen\.generate/) { # key need to be generated first + $res = $ua->post($uri.'/administrator/1/api_key', {'gen.generate' => 'foo'}, 'Referer' => $uri.'/dashboard'); + } + my (undef, $tmp_apiclient_filename) = tempfile; + my (undef, $tmp_apica_filename) = tempfile; + $res = $ua->post($uri.'/administrator/1/api_key', {'pem.download' => 'foo'}, 'Referer' => $uri.'/dashboard', ':content_file' => $tmp_apiclient_filename); + $res = $ua->post($uri.'/administrator/1/api_key', {'ca.download' => 'foo'}, 'Referer' => $uri.'/dashboard', ':content_file' => $tmp_apica_filename); + diag ("Client cert: $tmp_apiclient_filename - CA cert: $tmp_apica_filename\n"); + return ($tmp_apiclient_filename, $tmp_apica_filename); +} + +# vim: set tabstop=4 expandtab: diff --git a/t/api-rest/api-contracts.t b/t/api-rest/api-contracts.t index 153e23a9bd..dee4d65da0 100644 --- a/t/api-rest/api-contracts.t +++ b/t/api-rest/api-contracts.t @@ -10,32 +10,19 @@ use DateTime qw(); use DateTime::Format::Strptime qw(); use DateTime::Format::ISO8601 qw(); -my $is_local_env = 0; - my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-customercontacts.t b/t/api-rest/api-customercontacts.t index d8f278a0c8..c6acc64a51 100644 --- a/t/api-rest/api-customercontacts.t +++ b/t/api-rest/api-customercontacts.t @@ -5,21 +5,18 @@ use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-customers.t b/t/api-rest/api-customers.t index 5663552648..dd999431a7 100644 --- a/t/api-rest/api-customers.t +++ b/t/api-rest/api-customers.t @@ -1,6 +1,8 @@ # TODO: try to set reseller_id of contact of a system customer, which should fail -use Sipwise::Base; +use strict; +use warnings; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); @@ -15,33 +17,21 @@ BEGIN { } use NGCP::Panel::Utils::ProfilePackages qw(); -my $is_local_env = 0; my $enable_profile_packages = NGCP::Panel::Utils::ProfilePackages::ENABLE_PROFILE_PACKAGES; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { @@ -300,9 +290,12 @@ my @allcustomers = (); my $customer = JSON::from_json($res->decoded_content); ok(exists $customer->{status}, "check existence of status"); ok(exists $customer->{type}, "check existence of type"); - ok(exists $customer->{billing_profile_id} && $customer->{billing_profile_id}->is_int, "check existence of billing_profile_id"); - ok(exists $customer->{contact_id} && $customer->{contact_id}->is_int, "check existence of contact_id"); - ok(exists $customer->{id} && $customer->{id}->is_int, "check existence of id"); + ok(exists $customer->{billing_profile_id}, "check existence of billing_profile_id"); + like($customer->{billing_profile_id}, qr/[0-9]+/, "check validity of billing_profile_id"); + ok(exists $customer->{contact_id}, "check existence of contact_id"); + like($customer->{contact_id}, qr/[0-9]+/, "check validity of contact_id"); + ok(exists $customer->{id}, "check existence of id"); + like($customer->{id}, qr/[0-9]+/, "check validity of id"); ok(exists $customer->{max_subscribers}, "check existence of max_subscribers"); ok(!exists $customer->{product_id}, "check absence of product_id"); ok(exists $customer->{all_billing_profiles}, "check existence of all_billing_profiles"); diff --git a/t/api-rest/api-journals.t b/t/api-rest/api-journals.t index 52de873541..203cdb994b 100644 --- a/t/api-rest/api-journals.t +++ b/t/api-rest/api-journals.t @@ -40,29 +40,18 @@ if ($is_local_env) { my %config = $catalyst_config->getall(); my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); my $t = time; my $default_reseller_id = 1; diff --git a/t/api-rest/api-pbxdevicemodels.t b/t/api-rest/api-pbxdevicemodels.t index a42b1b492e..3ac03d83a5 100644 --- a/t/api-rest/api-pbxdevicemodels.t +++ b/t/api-rest/api-pbxdevicemodels.t @@ -1,8 +1,6 @@ -#use Sipwise::Base; use strict; +use warnings; -#use Moose; -use Sipwise::Base; use Test::Collection; use Test::FakeData; use Net::Domain qw(hostfqdn); @@ -144,7 +142,8 @@ foreach my $type(qw/extension phone/){ { my (undef, $item_first_get) = $test_machine->check_item_get; - ok(exists $item_first_get->{reseller_id} && $item_first_get->{reseller_id}->is_int, "check existence of the reseller_id"); + ok(exists $item_first_get->{reseller_id} , "check existence of the reseller_id"); + cmp_ok($item_first_get->{reseller_id}, '>', 0, "check validity of the reseller_id"); foreach(qw/vendor model/){ ok(exists $item_first_get->{$_}, "check existence of $_"); } diff --git a/t/api-rest/api-pbxdevices.t b/t/api-rest/api-pbxdevices.t index a4be96be06..d2d99491c4 100644 --- a/t/api-rest/api-pbxdevices.t +++ b/t/api-rest/api-pbxdevices.t @@ -1,7 +1,6 @@ -#use Sipwise::Base; use strict; -#use Moose; -use Sipwise::Base; +use warnings; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use HTTP::Request::Common; diff --git a/t/api-rest/api-profilepackages.t b/t/api-rest/api-profilepackages.t index ae3b435ae5..6527a63625 100644 --- a/t/api-rest/api-profilepackages.t +++ b/t/api-rest/api-profilepackages.t @@ -1,4 +1,6 @@ -use Sipwise::Base; +use warnings; +use strict; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); @@ -14,34 +16,21 @@ BEGIN { } use NGCP::Panel::Utils::ProfilePackages qw(); -my $is_local_env = 0; my $enable_profile_packages = NGCP::Panel::Utils::ProfilePackages::ENABLE_PROFILE_PACKAGES; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; -if ($is_local_env) { - $ua->ssl_opts( +$ua->ssl_opts( verify_hostname => 0, + SSL_verify_mode => 0, ); - $ua->credentials("127.0.0.1:4443", "api_admin_http", 'administrator', 'administrator'); - #$ua->timeout(500); #useless, need to change the nginx timeout -} else { - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); -} - +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-resellers.t b/t/api-rest/api-resellers.t index 158490a556..9e93224927 100644 --- a/t/api-rest/api-resellers.t +++ b/t/api-rest/api-resellers.t @@ -1,25 +1,24 @@ -use Sipwise::Base; +use warnings; +use strict; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { @@ -269,8 +268,10 @@ my @allresellers = (); $res = $ua->request($req); is($res->code, 200, "fetch one item"); my $reseller = JSON::from_json($res->decoded_content); - ok(exists $reseller->{id} && $reseller->{id}->is_int, "check existence of id"); - ok(exists $reseller->{contract_id} && $reseller->{contract_id}->is_int, "check existence of contract_id"); + ok(exists $reseller->{id}, "check existence of id"); + like($reseller->{id}, qr/[0-9]+/, "check validity of id"); + ok(exists $reseller->{contract_id}, "check existence of contract_id"); + like($reseller->{contract_id}, qr/[0-9]+/, "check validity of contract_id"); ok(exists $reseller->{name}, "check existence of name"); ok(exists $reseller->{status}, "check existence of status"); diff --git a/t/api-rest/api-rewriterulesets.t b/t/api-rest/api-rewriterulesets.t index 94400795d3..432ce9659c 100644 --- a/t/api-rest/api-rewriterulesets.t +++ b/t/api-rest/api-rewriterulesets.t @@ -1,25 +1,24 @@ -use Sipwise::Base; +use warnings; +use strict; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-root.t b/t/api-rest/api-root.t index 64dd2f2591..ba9fb28acb 100644 --- a/t/api-rest/api-root.t +++ b/t/api-rest/api-root.t @@ -1,25 +1,24 @@ -use Sipwise::Base; +use strict; +use warnings; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { diff --git a/t/api-rest/api-systemcontacts.t b/t/api-rest/api-systemcontacts.t index 35493b3605..44e6622588 100644 --- a/t/api-rest/api-systemcontacts.t +++ b/t/api-rest/api-systemcontacts.t @@ -1,25 +1,24 @@ -use Sipwise::Base; +use strict; +use warnings; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); - -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); # OPTIONS tests { @@ -145,7 +144,8 @@ my @allcontacts = (); ok(exists $contact->{firstname}, "check existence of firstname"); ok(exists $contact->{lastname}, "check existence of lastname"); ok(exists $contact->{email}, "check existence of email"); - ok(exists $contact->{id} && $contact->{id}->is_int, "check existence of id"); + ok(exists $contact->{id}, "check existence of id"); + like($contact->{id}, qr/[0-9]+/, "check validity of id"); ok(!exists $contact->{reseller_id}, "check absence of reseller_id"); # PUT same result again diff --git a/t/api-rest/api-trustedsources.t b/t/api-rest/api-trustedsources.t index 9d494e6395..7215ce005d 100644 --- a/t/api-rest/api-trustedsources.t +++ b/t/api-rest/api-trustedsources.t @@ -1,7 +1,6 @@ -#use Sipwise::Base; use strict; -#use Moose; -use Sipwise::Base; +use warnings; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use HTTP::Request::Common; diff --git a/t/api-rest/api-valid-patch.t b/t/api-rest/api-valid-patch.t index 9f268c840f..8b6c16afd2 100644 --- a/t/api-rest/api-valid-patch.t +++ b/t/api-rest/api-valid-patch.t @@ -1,25 +1,26 @@ -use Sipwise::Base; +use strict; +use warnings; + use Net::Domain qw(hostfqdn); use LWP::UserAgent; use JSON qw(); use Test::More; my $uri = $ENV{CATALYST_SERVER} || ('https://'.hostfqdn.':4443'); +my ($netloc) = ($uri =~ m!^https?://(.*)/?.*$!); -my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; -my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; -my $ssl_ca_cert = $ENV{API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; - -my ($ua, $req, $res, $body); +my ($ua, $req, $res); $ua = LWP::UserAgent->new; $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, -); + verify_hostname => 0, + SSL_verify_mode => 0, + ); +my $user = $ENV{API_USER} // 'administrator'; +my $pass = $ENV{API_PASS} // 'administrator'; +$ua->credentials($netloc, "api_admin_http", $user, $pass); + +my $body; { $req = HTTP::Request->new('PATCH', $uri.'/api/systemcontacts/1'); diff --git a/t/api-rest/api-vouchers.t b/t/api-rest/api-vouchers.t index 9d3373e4c0..7a6d37bd84 100644 --- a/t/api-rest/api-vouchers.t +++ b/t/api-rest/api-vouchers.t @@ -1,8 +1,6 @@ -#use Sipwise::Base; use strict; +use warnings; -#use Moose; -use Sipwise::Base; use Test::Collection; use Test::FakeData; use Test::More; diff --git a/t/lib/Test/Collection.pm b/t/lib/Test/Collection.pm index 10da7e7857..4d7ee0f1eb 100644 --- a/t/lib/Test/Collection.pm +++ b/t/lib/Test/Collection.pm @@ -184,28 +184,15 @@ sub get_catalyst_config{ sub init_ua { my $self = shift; my $ua = LWP::UserAgent->new; - if($self->local_test){ - my $uri = $self->base_uri; - $uri =~ s/^https?:\/\///; - my $user = $ENV{API_USER} // 'administrator'; - my $pass = $ENV{API_PASS} // 'administrator'; - $ua->credentials( $uri, 'api_admin_http', $user, $pass); - $ua->ssl_opts( - verify_hostname => 0, - SSL_verify_mode => 0x00, - ); - }else{ - my $valid_ssl_client_cert = $ENV{API_SSL_CLIENT_CERT} || - "/etc/ngcp-panel/api_ssl/NGCP-API-client-certificate.pem"; - my $valid_ssl_client_key = $ENV{API_SSL_CLIENT_KEY} || - $valid_ssl_client_cert; - my $ssl_ca_cert = $ENV{ API_SSL_CA_CERT} || "/etc/ngcp-panel/api_ssl/api_ca.crt"; - $ua->ssl_opts( - SSL_cert_file => $valid_ssl_client_cert, - SSL_key_file => $valid_ssl_client_key, - SSL_ca_file => $ssl_ca_cert, - ); - } + my $uri = $self->base_uri; + $uri =~ s/^https?:\/\///; + my $user = $ENV{API_USER} // 'administrator'; + my $pass = $ENV{API_PASS} // 'administrator'; + $ua->credentials( $uri, 'api_admin_http', $user, $pass); + $ua->ssl_opts( + verify_hostname => 0, + SSL_verify_mode => 0, + ); return $ua; } sub clear_data_created{