* add resellerphonebookentries, customerphonebookentries, subscriberphonebookentries api-rest links * remove api-phonebookentries.t test as it has not been in use by the testrunner Change-Id: I0290b6af5ae45decd7bf98dd10a3ae53a8490f56mr12.0
parent
cec12f7b1e
commit
75a6a97605
@ -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:
|
Loading…
Reference in new issue