diff --git a/t/api-rest/api-all-links.t b/t/api-rest/api-all-links.t index 61b4456cc4..12038416e0 100644 --- a/t/api-rest/api-all-links.t +++ b/t/api-rest/api-all-links.t @@ -44,7 +44,7 @@ $ua = Test::Collection->new()->ua(); next if $relname eq "interceptions"; my $skip = 0; if ($ngcp_type ne "sppro" && $ngcp_type ne "carrier") { - foreach my $pro_only (qw(phonebookentries headerrulesets headerrules headerruleconditions headerruleactions)) { + foreach my $pro_only (qw(resellerphonebookentries customerphonebookentries subscriberphonebookentries headerrulesets headerrules headerruleconditions headerruleactions)) { if ($relname eq $pro_only) { ok(1, "skip '$pro_only' links check as it is a PRO only endpoint"); $skip = 1; @@ -65,7 +65,9 @@ $ua = Test::Collection->new()->ua(); next if $relname eq "calllists"; next if $relname eq "resellerbrandinglogos"; next if $relname eq "conversations"; - next if $relname eq "phonebookentries"; + next if $relname eq "resellerphonebookentries"; + next if $relname eq "customerphonebookentries"; + next if $relname eq "subscriberphonebookentries"; #my $uri = "$uri/api/$relname/"; #if('conversations' eq $relname){ # $uri .= '?type=call'; diff --git a/t/api-rest/api-phonebookentries.t b/t/api-rest/api-phonebookentries.t deleted file mode 100644 index 9e6bae5afa..0000000000 --- a/t/api-rest/api-phonebookentries.t +++ /dev/null @@ -1,324 +0,0 @@ -use strict; -use warnings; - -use Test::Collection; -use Test::FakeData; -use Test::More; -use Data::Dumper; -use Clone qw/clone/; -use feature 'state'; -#use NGCP::Panel::Utils::Subscriber; - -my $test_machine = Test::Collection->new( - name => 'phonebookentries', - QUIET_DELETION => 1, -); -my $subscriber_test_machine = Test::Collection->new( - name => 'subscribers', - QUIET_DELETION => 1, -); -my $fake_data = Test::FakeData->new; - -$test_machine->methods->{collection}->{allowed} = {map {$_ => 1} qw(GET HEAD OPTIONS POST)}; -$test_machine->methods->{item}->{allowed} = {map {$_ => 1} qw(GET HEAD OPTIONS PUT PATCH DELETE)}; - -$fake_data->set_data_from_script({ - 'phonebookentries' => { - 'data' => { - customer_id => sub { return shift->get_id('customers',@_); }, - reseller_id => sub { return shift->get_id('resellers',@_); }, - subscriber_id => sub { return shift->get_id('subscribers',@_); }, - name => 'api_test phonebook username', - number => '111222333', - shared => '1', - }, - }, -}); - -$subscriber_test_machine->DATA_ITEM_STORE($fake_data->process('subscribers')); -$subscriber_test_machine->form_data_item(); -$test_machine->DATA_ITEM_STORE($fake_data->process('phonebookentries')); -$test_machine->form_data_item(); - -my $remote_config = $test_machine->init_catalyst_config; -$test_machine->QUERY_PARAMS('reseller_id='.$fake_data->{data}->{phonebookentries}->{data}->{reseller_id}); -my $admin_phonebookentries_created = $test_machine->check_create_correct(2, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{subscriber_id}; - delete $_[0]->{shared}; - $_[0]->{number} = time() + seq(); -} ); - -$test_machine->check_bundle(); -$test_machine->QUERY_PARAMS(''); - -{ - $fake_data->{data}->{subscribers}->{data}->{administrative} = 1; - my $subscriberadmin = $fake_data->create('subscribers')->[0]; - $fake_data->{data}->{subscribers}->{data}->{administrative} = 0; - my $subscriber = $fake_data->create('subscribers')->[0]; - - diag("create subscriber of other customer of other reseller"); - my $fake_data_other = Test::FakeData->new(keep_db_data => 1); - $fake_data_other->{data}->{customers}->{data}->{external_id} = 'not_default_one'; - $fake_data_other->{data}->{customercontacts}->{data}->{email} = 'not_default_one@email.com'; - $fake_data_other->{data}->{contracts}->{data}->{external_id} = 'not_default_one'; - $fake_data_other->{data}->{resellers}->{data}->{name} = 'not_default_one'; - my $subscriber_other_customer = $fake_data_other->create('subscribers')->[0]; - diag("create subscriber_other_phonebookentries"); - my $subscriber_other_phonebookentries = $test_machine->check_create_correct(2, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{subscriber_id} = $subscriber_other_customer->{content}->{customer_id}; - $_[0]->{number} = time() + seq(); - } ); - diag("create customer_other_phonebookentries"); - my $customer_other_phonebookentries = $test_machine->check_create_correct(2, sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{reseller_id}; - $_[0]->{customer_id} = $subscriber_other_customer->{content}->{customer_id}; - $_[0]->{number} = time() + seq(); - } ); - diag("create reseller_other_phonebookentries"); - my $reseller_other_phonebookentries = $test_machine->check_create_correct(2, sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{customer_id}; - $_[0]->{reseller_id} = $fake_data_other->get_id('resellers',@_); - $_[0]->{number} = time() + seq(); - } ); - -#------------------------- ADMIN - my ($res,$content); - $test_machine->runas('admin'); - diag("\n\n\nADMIN :"); - diag("create items one-by-one:"); - my $admin_phonebookentries_created = $test_machine->check_create_correct(2, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{subscriber_id}; - delete $_[0]->{shared}; - $_[0]->{number} = time() + seq(); - } ); - test_phonebook_collection($admin_phonebookentries_created,'/api/phonebookentries/?reseller_id='.$fake_data->{data}->{phonebookentries}->{data}->{reseller_id}); - -#------------------------- RESELLER - { - my $reseller_admin = $test_machine->get_item_hal('admins','/api/admins/?login=api_test'); - if (!(exists $reseller_admin->{total_count} && $reseller_admin->{total_count})) { - $fake_data->test_machine($test_machine);#because we removed shared certs when runas admin - my $data = $fake_data->process('admins'); - $data->{login} = 'api_test'; - $data->{password} = 'api_test'; - ($res,$content) = $test_machine->request_post($data, '/api/admins/'); - $test_machine->http_code_msg(201, "create reseller",$res,$content); - $test_machine->set_reseller_credentials($data); - } - } - - - $test_machine->runas('reseller'); - diag("\n\n\nRESELLER :"); - diag("reseller: attempt to create using other reseller_id"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{customer_id}; - $_[0]->{reseller_id} = $fake_data_other->get_id('resellers'); - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "reseller: attempt to create using other reseller customer_id:",$res,$content, - "Unknown reseller_id value '".$fake_data_other->get_id('resellers')."'"); - - diag("reseller: attempt to create using other reseller customer_id"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{reseller_id}; - $_[0]->{customer_id} = $subscriber_other_customer->{content}->{customer_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "reseller: attempt to create using other reseller customer_id:",$res,$content, - "Unknown customer_id value '".$subscriber_other_customer->{content}->{customer_id}."'"); - - diag("reseller: attempt to create using other reseller subscriber_id"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{subscriber_id} = $subscriber_other_customer->{content}->{id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "reseller: attempt to create using other reseller customer_id:",$res,$content, - "Unknown subscriber_id value '".$subscriber_other_customer->{content}->{id}."'"); - - diag("create items one-by-one:"); - my $reseller_phonebookentries_created = $test_machine->check_create_correct(1, sub { - delete $_[0]->{reseller_id}; - delete $_[0]->{subscriber_id}; - delete $_[0]->{shared}; - $_[0]->{number} = time() + seq(); - } ); - push @$reseller_phonebookentries_created, @{ - $test_machine->check_create_correct(1, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{subscriber_id}; - delete $_[0]->{shared}; - $_[0]->{number} = time() + seq(); - } ) - },@{ - $test_machine->check_create_correct(1, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{number} = time() + seq(); - } ) - }; - test_phonebook_collection($reseller_phonebookentries_created,'/api/phonebookentries/?customer_id='.$fake_data->{data}->{phonebookentries}->{data}->{customer_id}); - -#------------------------- SUBSCRIBERADMIN - $test_machine->set_subscriber_credentials($subscriberadmin->{content}); - $test_machine->runas('subscriber'); - diag("\n\n\nSUBSCRIBERADMIN ".$subscriberadmin->{content}->{id}.":"); - - diag("subscriberadmin: attempt to create using other customer subscriber:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{subscriber_id} = $subscriber_other_customer->{content}->{id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "Check that we can't create a phonebook entry in a name of other customers subscriber",$res,$content, - "Unknown subscriber_id value '".$subscriber_other_customer->{content}->{id}."'"); - - diag("subscriberadmin: attempt to create using other customer_id:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{reseller_id}; - $_[0]->{customer_id} = $subscriber_other_customer->{content}->{customer_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "subscriberadmin: attempt to create using customer_id:",$res,$content, - "Unknown customer_id value '".$subscriber_other_customer->{content}->{customer_id}."'"); - - diag("subscriberadmin: attempt to create using reseller_id:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{customer_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "subscriberadmin: attempt to create using reseller_id",$res,$content, - "'customer_id' or 'subscriber_id' should be specified."); - - diag("subscriberadmin: attempt to create using reseller_id and customer_id together:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "subscriberadmin: attempt to create using reseller_id and customer_id together:",$res,$content, - "Only one of either 'customer_id' or 'subscriber_id' should be specified"); - - diag("create items one-by-one:"); - my $subscriberadmin_phonebookentries_created = $test_machine->check_create_correct(2, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{subscriber_id} = $subscriberadmin->{content}->{id}; - $_[0]->{number} = time() + seq(); - } ); - test_phonebook_collection($subscriberadmin_phonebookentries_created, '/api/phonebookentries/?subscriber_id='.$subscriberadmin->{content}->{id}); - -#------------------------- SUBSCRIBER - - $test_machine->set_subscriber_credentials($subscriber->{content}); - $test_machine->runas('subscriber'); - diag("\n\n\nSUBSCRIBER ".$subscriber->{content}->{id}.":"); - - diag("subscriber: attempt to create using other customer subscriber:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{subscriber_id} = $subscriber_other_customer->{content}->{id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "Check that we can't create a phonebook entry in a name of other customers subscriber",$res,$content, - "Unknown subscriber_id value '".$subscriber_other_customer->{content}->{id}."'"); - - diag("subscriber: attempt to create using other customer_id:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{reseller_id}; - $_[0]->{customer_id} = $subscriber_other_customer->{content}->{customer_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "subscriber: attempt to create using customer_id:",$res,$content, - "'subscriber_id' should be specified."); - - diag("subscriber: attempt to create using reseller_id:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - delete $_[0]->{customer_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "subscriber: attempt to create using reseller_id",$res,$content, - "'subscriber_id' should be specified."); - - diag("subscriber: attempt to create using reseller_id and customer_id together:"); - ($res,$content) = $test_machine->check_item_post(sub { - delete $_[0]->{subscriber_id}; - $_[0]->{number} = time() + seq(); - }); - $test_machine->http_code_msg(422, "subscriber: attempt to create using reseller_id and customer_id together:",$res,$content, - "'subscriber_id' should be specified."); - - - diag("create items one-by-one:"); - my $subscriber_phonebookentries_created = $test_machine->check_create_correct(2, sub { - delete $_[0]->{customer_id}; - delete $_[0]->{reseller_id}; - $_[0]->{subscriber_id} = $subscriber->{content}->{id}; - $_[0]->{number} = time() + seq(); - } ); - test_phonebook_collection($subscriber_phonebookentries_created, '/api/phonebookentries/?subscriber_id='.$subscriber->{content}->{id}); -} - -$test_machine->runas('admin'); -$fake_data->clear_test_data_all(); -$test_machine->clear_test_data_all();#fake data aren't registered in this test machine, so they will stay. -$fake_data->clear_test_data_all(); -undef $test_machine; -undef $fake_data; -done_testing; - -sub test_phonebook_collection{ - my ($list,$collection_uri) = @_; - $collection_uri //= 'api/phonebookentries'; - diag("collection_uri: $collection_uri;"); - my $content_type = 'text/csv'; - my $content_type_old = clone $test_machine->content_type; - $test_machine->content_type->{POST} = $content_type; - diag("get collection:"); - $test_machine->get_collection_hal('phonebookentries',$collection_uri); - - my ($req,$res,$content); - $req = $test_machine->get_request_get( $collection_uri ); - $req->header('Accept' => $content_type); - diag("download csv:"); - $res = $test_machine->request($req); - my $csv_data = $res->content; - my $filename = "phonebook_list.csv"; - $test_machine->http_code_msg(200, "check response code", $res, $csv_data); - ok(length($csv_data) > 0, "Check that downloaded csv is not empty."); - diag("upload csv with purge_existing = 0:"); - ($res,$content) = $test_machine->request_post($csv_data, $collection_uri);# - $test_machine->http_code_msg(201, "check file upload", $res, $content); - $test_machine->content_type(clone $content_type_old); - - diag("go through list:"); - foreach my $entry (@$list) { - $test_machine->check_get2put($entry); - $test_machine->request_delete($entry->{location}); - } - - $test_machine->content_type->{POST} = $content_type; - diag("upload csv with purge_existing = 1:"); - ($res,$content) = $test_machine->request_post($csv_data, $collection_uri.($collection_uri !~/\?/?'?':'&').'purge_existing=true');# - $test_machine->http_code_msg(201, "check file upload", $res, $content); - $test_machine->content_type(clone $content_type_old); -} - - -# vim: set tabstop=4 expandtab: diff --git a/t/api-rest/api-root.t b/t/api-rest/api-root.t index 62391b2910..cdd02d28fe 100644 --- a/t/api-rest/api-root.t +++ b/t/api-rest/api-root.t @@ -133,7 +133,9 @@ $ua = Test::Collection->new()->ua(); peeringserverpreferencedefs => 1, peeringserverpreferences => 1, peeringservers => 1, - phonebookentries => 1, + resellerphonebookentries => 1, + customerphonebookentries => 1, + subscriberphonebookentries => 1, resellerbrandings => 1, resellerpreferencedefs => 1, resellerpreferences => 1,