You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
5.4 KiB
131 lines
5.4 KiB
use strict;
|
|
use warnings;
|
|
|
|
use Test::Collection;
|
|
use Test::FakeData;
|
|
use Test::More;
|
|
use Data::Dumper;
|
|
use File::Temp qw/tempfile/;
|
|
use File::Basename;
|
|
|
|
|
|
#init test_machine
|
|
my $fake_data = Test::FakeData->new;
|
|
$fake_data->set_data_from_script({
|
|
'faxes' => {
|
|
'data' => {
|
|
json => {
|
|
subscriber_id => sub { return shift->get_id('subscribers',@_); },
|
|
destination => "Cisco",
|
|
},
|
|
faxfile => [ (tempfile())[1] ],
|
|
},
|
|
'create_special'=> sub {
|
|
my ($self,$name,$test_machine) = @_;
|
|
my $data = $self->data->{faxes}->{data};
|
|
set_faxes_preferences($data->{json}->{subscriber_id});
|
|
$test_machine->resource_fill_file($data->{faxfile}->[0]);
|
|
my $created = $test_machine->check_create_correct( 1, sub { $_[0] = clone $data; } );
|
|
$test_machine->resource_clear_file($data->{faxfile}->[0]);
|
|
return $created;
|
|
},
|
|
'no_delete_available' => 1,
|
|
|
|
},
|
|
});
|
|
my $test_machine = Test::Collection->new(
|
|
name => 'faxes',
|
|
embedded_resources => [qw/subscribers/],
|
|
ALLOW_EMPTY_COLLECTION => 1,
|
|
);
|
|
|
|
my $remote_config = $test_machine->init_catalyst_config;
|
|
if( !$remote_config->{config}->{features}->{faxserver} ){
|
|
$remote_config->{config}->{features}->{faxserver} //= 0;
|
|
is($remote_config->{config}->{features}->{faxserver}, 0, "faxserver feature isn't enabled");
|
|
}else{
|
|
|
|
@{$test_machine->content_type}{qw/POST PUT/} = (('multipart/form-data') x 2);
|
|
$test_machine->methods->{collection}->{allowed} = {map {$_ => 1} qw(GET HEAD OPTIONS POST)};
|
|
$test_machine->methods->{item}->{allowed} = {map {$_ => 1} qw(GET HEAD OPTIONS)};
|
|
|
|
$test_machine->DATA_ITEM_STORE($fake_data->process('faxes'));
|
|
$test_machine->form_data_item();
|
|
|
|
set_faxes_preferences($test_machine->DATA_ITEM->{json}->{subscriber_id});
|
|
|
|
#we will create other customer's subscriber
|
|
diag("create subscriber of other customer");
|
|
my $fake_data_other_customer = Test::FakeData->new(keep_db_data => 1);
|
|
$fake_data_other_customer->{data}->{customers}->{data}->{external_id} = 'not_default_one_cust';
|
|
my $subscriber_other_customer = $fake_data_other_customer->create('subscribers')->[0];
|
|
set_faxes_preferences($subscriber_other_customer->{content}->{id});
|
|
|
|
$fake_data->{data}->{subscribers}->{data}->{administrative} = 1;
|
|
my $subscriberadmin = $fake_data->create('subscribers')->[0];
|
|
#manually add webpassword to content since it's not returned from TT#78557
|
|
$subscriberadmin->{content}->{webpassword} = $fake_data->{data}->{subscribers}->{data}->{webpassword};
|
|
set_faxes_preferences($subscriberadmin->{content}->{id});
|
|
|
|
$fake_data->{data}->{subscribers}->{data}->{administrative} = 0;
|
|
my $subscriber = $fake_data->create('subscribers')->[0];
|
|
#manually add webpassword to content since it's not returned from TT#78557
|
|
$subscriber->{content}->{webpassword} = $fake_data->{data}->{subscribers}->{data}->{webpassword};
|
|
set_faxes_preferences($subscriber->{content}->{id});
|
|
|
|
|
|
$test_machine->resource_fill_file($test_machine->DATA_ITEM->{faxfile}->[0]);
|
|
$test_machine->check_create_correct( 1 );
|
|
$test_machine->resource_clear_file($test_machine->DATA_ITEM->{faxfile}->[0]);
|
|
|
|
delete $test_machine->DATA_ITEM->{faxfile};
|
|
$test_machine->DATA_ITEM->{json}->{data}="äöüß";
|
|
$test_machine->form_data_item();
|
|
$test_machine->check_create_correct( 1 );
|
|
|
|
#diag("login as subscriber of other customer");
|
|
#$test_machine->set_subscriber_credentials($subscriber_other_customer->{content});
|
|
#$test_machine->runas('subscriber');
|
|
|
|
$test_machine->set_subscriber_credentials($subscriberadmin->{content});
|
|
$test_machine->runas('subscriber');
|
|
diag("\n\n\nSUBSCRIBERADMIN ".$subscriberadmin->{content}->{id}.":");
|
|
|
|
$test_machine->DATA_ITEM->{json}->{subscriber_id} = $subscriber_other_customer->{content}->{id};
|
|
$test_machine->form_data_item();
|
|
my($res,$content) = $test_machine->check_item_post();
|
|
$test_machine->http_code_msg(422, "Check that we cannot send a fax in a name of other customers subscriber",$res,$content);
|
|
diag("check that we can create as a subscriberadmin role");
|
|
$test_machine->check_create_correct( 1, sub { $_[0]->{json}->{subscriber_id} = $subscriberadmin->{content}->{id};} );
|
|
|
|
$test_machine->set_subscriber_credentials($subscriber->{content});
|
|
$test_machine->runas('subscriber');
|
|
diag("\n\n\nSUBSCRIBER ".$subscriber->{content}->{id}.":");
|
|
|
|
($res,$content) = $test_machine->check_item_post();
|
|
$test_machine->http_code_msg(422, "Check that we cannot send a fax in a name of other customers subscriber",$res,$content);
|
|
diag("check that we can create as a subscriber role");
|
|
$test_machine->check_create_correct( 1, sub { $_[0]->{json}->{subscriber_id} = $subscriber->{content}->{id};} );
|
|
|
|
}
|
|
$test_machine->runas('admin');
|
|
$test_machine->check_bundle();
|
|
$test_machine->clear_test_data_all();
|
|
undef $fake_data;
|
|
undef $test_machine;
|
|
done_testing;
|
|
|
|
|
|
#---------------------- aux
|
|
sub set_faxes_preferences{
|
|
my($subscriber_id) = @_;
|
|
my $test_machine_aux = Test::Collection->new(name => 'faxserversettings');
|
|
my $uri = $test_machine_aux->get_uri($subscriber_id);
|
|
my($res,$faxserversettings,$req) = $test_machine_aux->check_item_get($uri);
|
|
$faxserversettings->{active} = 1;
|
|
$faxserversettings->{password} = 'aaa111';
|
|
$test_machine_aux->request_put($faxserversettings,$uri);
|
|
}
|
|
|
|
# vim: set tabstop=4 expandtab:
|