MT#11917 test enviroment json boolean conversion

Change-Id: I5b880bfdd39898a14e50949aa9858f800d4bd558
changes/24/1724/1
Rene Krenn 11 years ago
parent a78a58dd9c
commit bce0058915

@ -22,16 +22,23 @@ class_has('resource_name', is => 'ro', default => 'autoattendants');
class_has('dispatch_path', is => 'ro', default => '/api/autoattendants/');
class_has('relation', is => 'ro', default => 'http://purl.org/sipwise/ngcp-api/#rel-autoattendants');
class_has(@{ __PACKAGE__->get_journal_query_params() });
__PACKAGE__->config(
action => {
map { $_ => {
(map { $_ => {
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Args => 1,
Does => [qw(ACL RequireSSL)],
Method => $_,
Path => __PACKAGE__->dispatch_path,
} } @{ __PACKAGE__->allowed_methods },
} } @{ __PACKAGE__->allowed_methods }),
@{ __PACKAGE__->get_journal_action_config(__PACKAGE__->resource_name,{
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Does => [qw(ACL RequireSSL)],
}) }
},
action_roles => [qw(HTTPMethods)],
);
@ -106,6 +113,9 @@ sub PUT :Allow {
$subscriber = $self->update_item($c, $subscriber, undef, $resource, $form);
last unless $subscriber;
my $hal = $self->hal_from_item($c, $subscriber);
last unless $self->add_update_journal_item_hal($c,{ hal => $hal, id => $subscriber->id });
$guard->commit;
if ('minimal' eq $preference) {
@ -113,7 +123,7 @@ sub PUT :Allow {
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_item($c, $subscriber);
#my $hal = $self->hal_from_item($c, $subscriber);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
@ -151,6 +161,9 @@ sub PATCH :Allow {
$subscriber = $self->update_item($c, $subscriber, undef, $resource, $form);
last unless $subscriber;
my $hal = $self->hal_from_item($c, $subscriber);
last unless $self->add_update_journal_item_hal($c,{ hal => $hal, id => $subscriber->id });
$guard->commit;
if ('minimal' eq $preference) {
@ -158,7 +171,7 @@ sub PATCH :Allow {
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_item($c, $subscriber);
#my $hal = $self->hal_from_item($c, $subscriber);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
@ -170,6 +183,41 @@ sub PATCH :Allow {
return;
}
sub item_base_journal :Journal {
my $self = shift @_;
return $self->handle_item_base_journal(@_);
}
sub journals_get :Journal {
my $self = shift @_;
return $self->handle_journals_get(@_);
}
sub journalsitem_get :Journal {
my $self = shift @_;
return $self->handle_journalsitem_get(@_);
}
sub journals_options :Journal {
my $self = shift @_;
return $self->handle_journals_options(@_);
}
sub journalsitem_options :Journal {
my $self = shift @_;
return $self->handle_journalsitem_options(@_);
}
sub journals_head :Journal {
my $self = shift @_;
return $self->handle_journals_head(@_);
}
sub journalsitem_head :Journal {
my $self = shift @_;
return $self->handle_journalsitem_head(@_);
}
sub end : Private {
my ($self, $c) = @_;

@ -183,6 +183,12 @@ sub POST :Allow {
last;
}
last unless $self->add_create_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;
my $_zone = $self->zone_by_id($c, $zone->id);
return $self->hal_from_zone($c, $_zone, $form); });
$guard->commit;
$c->response->status(HTTP_CREATED);

@ -19,16 +19,23 @@ class_has('resource_name', is => 'ro', default => 'billingzones');
class_has('dispatch_path', is => 'ro', default => '/api/billingzones/');
class_has('relation', is => 'ro', default => 'http://purl.org/sipwise/ngcp-api/#rel-billingzones');
class_has(@{ __PACKAGE__->get_journal_query_params() });
__PACKAGE__->config(
action => {
map { $_ => {
(map { $_ => {
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Args => 1,
Does => [qw(ACL RequireSSL)],
Method => $_,
Path => __PACKAGE__->dispatch_path,
} } @{ __PACKAGE__->allowed_methods }
} } @{ __PACKAGE__->allowed_methods }),
@{ __PACKAGE__->get_journal_action_config(__PACKAGE__->resource_name,{
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Does => [qw(ACL RequireSSL)],
}) }
},
action_roles => [qw(HTTPMethods)],
);
@ -107,6 +114,9 @@ sub PATCH :Allow {
$zone = $self->update_zone($c, $zone, $old_resource, $resource, $form);
last unless $zone;
my $hal = $self->hal_from_zone($c, $zone, $form);
last unless $self->add_update_journal_item_hal($c,$hal);
$guard->commit;
if ('minimal' eq $preference) {
@ -114,7 +124,7 @@ sub PATCH :Allow {
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_zone($c, $zone, $form);
#my $hal = $self->hal_from_zone($c, $zone, $form);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
@ -147,6 +157,9 @@ sub PUT :Allow {
$zone = $self->update_zone($c, $zone, $old_resource, $resource, $form);
last unless $zone;
my $hal = $self->hal_from_zone($c, $zone, $form);
last unless $self->add_update_journal_item_hal($c,$hal);
$guard->commit;
if ('minimal' eq $preference) {
@ -154,7 +167,7 @@ sub PUT :Allow {
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_zone($c, $zone, $form);
#my $hal = $self->hal_from_zone($c, $zone, $form);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
@ -172,6 +185,13 @@ sub DELETE :Allow {
{
my $zone = $self->zone_by_id($c, $id);
last unless $self->resource_exists($c, billingzone => $zone);
last unless $self->add_delete_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;
my $_form = $self->get_form($c);
return $self->hal_from_zone($c, $zone, $_form); });
try {
$zone->billing_fees->delete_all;
$zone->delete;
@ -188,6 +208,41 @@ sub DELETE :Allow {
return;
}
sub item_base_journal :Journal {
my $self = shift @_;
return $self->handle_item_base_journal(@_);
}
sub journals_get :Journal {
my $self = shift @_;
return $self->handle_journals_get(@_);
}
sub journalsitem_get :Journal {
my $self = shift @_;
return $self->handle_journalsitem_get(@_);
}
sub journals_options :Journal {
my $self = shift @_;
return $self->handle_journals_options(@_);
}
sub journalsitem_options :Journal {
my $self = shift @_;
return $self->handle_journalsitem_options(@_);
}
sub journals_head :Journal {
my $self = shift @_;
return $self->handle_journals_head(@_);
}
sub journalsitem_head :Journal {
my $self = shift @_;
return $self->handle_journalsitem_head(@_);
}
sub end : Private {
my ($self, $c) = @_;

@ -200,7 +200,6 @@ sub DELETE :Allow {
last unless $self->add_delete_journal_item_hal($c,{ hal_from_item => sub {
my $self = shift;
my ($c) = @_;
#my $_callforward = $self->item_by_id($c, $id, "callforwards");
return $self->hal_from_item($c,$item,"callforwards"); },
id => $id});

@ -19,16 +19,23 @@ class_has('resource_name', is => 'ro', default => 'customerbalances');
class_has('dispatch_path', is => 'ro', default => '/api/customerbalances/');
class_has('relation', is => 'ro', default => 'http://purl.org/sipwise/ngcp-api/#rel-customerbalances');
class_has(@{ __PACKAGE__->get_journal_query_params() });
__PACKAGE__->config(
action => {
map { $_ => {
(map { $_ => {
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Args => 1,
Does => [qw(ACL RequireSSL)],
Method => $_,
Path => __PACKAGE__->dispatch_path,
} } @{ __PACKAGE__->allowed_methods }
} } @{ __PACKAGE__->allowed_methods }),
@{ __PACKAGE__->get_journal_action_config(__PACKAGE__->resource_name,{
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Does => [qw(ACL RequireSSL)],
}) }
},
action_roles => [qw(HTTPMethods)],
);
@ -106,6 +113,9 @@ sub PATCH :Allow {
$item = $self->update_item($c, $item, $old_resource, $resource, $form);
last unless $item;
my $hal = $self->hal_from_item($c, $item, $form);
last unless $self->add_update_journal_item_hal($c,$hal);
$guard->commit;
if ('minimal' eq $preference) {
@ -113,7 +123,7 @@ sub PATCH :Allow {
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_item($c, $item, $form);
#my $hal = $self->hal_from_item($c, $item, $form);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
@ -146,6 +156,9 @@ sub PUT :Allow {
$item = $self->update_item($c, $item, $old_resource, $resource, $form);
last unless $item;
my $hal = $self->hal_from_item($c, $item, $form);
last unless $self->add_update_journal_item_hal($c,$hal);
$guard->commit;
if ('minimal' eq $preference) {
@ -165,6 +178,41 @@ sub PUT :Allow {
return;
}
sub item_base_journal :Journal {
my $self = shift @_;
return $self->handle_item_base_journal(@_);
}
sub journals_get :Journal {
my $self = shift @_;
return $self->handle_journals_get(@_);
}
sub journalsitem_get :Journal {
my $self = shift @_;
return $self->handle_journalsitem_get(@_);
}
sub journals_options :Journal {
my $self = shift @_;
return $self->handle_journals_options(@_);
}
sub journalsitem_options :Journal {
my $self = shift @_;
return $self->handle_journalsitem_options(@_);
}
sub journals_head :Journal {
my $self = shift @_;
return $self->handle_journals_head(@_);
}
sub journalsitem_head :Journal {
my $self = shift @_;
return $self->handle_journalsitem_head(@_);
}
sub end : Private {
my ($self, $c) = @_;

@ -118,7 +118,6 @@ sub DELETE :Allow {
last unless $self->add_delete_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;
#my $_domain = $self->item_by_id($c, $id);
return $self->hal_from_item($c,$domain); });
$domain->delete;

@ -205,7 +205,8 @@ sub DELETE :Allow {
last unless $self->add_delete_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;
return $self->hal_from_item($c, $item); });
my $_form = $self->get_form($c);
return $self->hal_from_item($c, $item, $_form); });
$item->delete;

@ -218,7 +218,8 @@ sub DELETE :Allow {
last unless $self->add_delete_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;
return $self->hal_from_item($c, $item); });
my $_form = $self->get_form($c);
return $self->hal_from_item($c, $item, $_form); });
$item->delete;

@ -212,7 +212,8 @@ sub DELETE :Allow {
last unless $self->add_delete_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;
return $self->hal_from_item($c, $item); });
my $_form = $self->get_form($c);
return $self->hal_from_item($c, $item, $_form); });
$item->delete;

@ -281,7 +281,7 @@ sub POST :Allow {
$resource = $r->{resource};
try {
my ($uuid_bin, $uuid_string);
my ($uuid_bin, $uuid_string); #what for?
UUID::generate($uuid_bin);
UUID::unparse($uuid_bin, $uuid_string);

@ -7,7 +7,7 @@ BEGIN { extends 'Catalyst::Controller'; }
use NGCP::Panel::Form::PeeringGroup;
use NGCP::Panel::Form::PeeringRule;
use NGCP::Panel::Form::PeeringServer;
use NGCP::Panel::Utils::DialogicImg;
#use NGCP::Panel::Utils::DialogicImg;
use NGCP::Panel::Utils::Message;
use NGCP::Panel::Utils::Navigation;
use NGCP::Panel::Utils::Preferences;

@ -40,6 +40,7 @@ sub hal_from_item {
Data::HAL::Link->new(relation => 'self', href => sprintf("%s%d", $self->dispatch_path, $item->id)),
Data::HAL::Link->new(relation => 'ngcp:autoattendants', href => sprintf("/api/autoattendants/%d", $item->id)),
Data::HAL::Link->new(relation => 'ngcp:subscribers', href => sprintf("/api/subscribers/%d", $item->id)),
$self->get_journal_relation_link($item->id),
],
relation => 'ngcp:'.$self->resource_name,
);

@ -59,6 +59,7 @@ sub hal_from_zone {
Data::HAL::Link->new(relation => 'self', href => sprintf("%s%d", $self->dispatch_path, $zone->id)),
Data::HAL::Link->new(relation => 'ngcp:billingprofiles', href => sprintf("/api/billingprofiles/%d", $zone->billing_profile->id)),
( map { Data::HAL::Link->new(relation => 'ngcp:billingfees', href => sprintf("/api/billingfees/%d", $_->id)) } $zone->billing_fees->all ),
$self->get_journal_relation_link($zone->id),
],
relation => 'ngcp:'.$self->resource_name,
);

@ -53,6 +53,7 @@ sub hal_from_item {
Data::HAL::Link->new(relation => 'profile', href => 'http://purl.org/sipwise/ngcp-api/'),
Data::HAL::Link->new(relation => 'self', href => sprintf("%s%d", $self->dispatch_path, $item->contract->id)),
Data::HAL::Link->new(relation => 'ngcp:customers', href => sprintf("/api/customers/%d", $item->contract->id)),
$self->get_journal_relation_link($item->contract->id),
],
relation => 'ngcp:'.$self->resource_name,
);

@ -317,4 +317,19 @@ log4perl.appender.Default.layout.ConversionPattern=%d{ISO8601} [%p] [%F +%L] %m{
enabled 1
</voicemailsettings>
<autoattendants>
operations create
operations update
operations delete
format sereal
enabled 1
</autoattendants>
<billingzones>
operations create
operations update
operations delete
format sereal
enabled 1
</billingzones>
</api_journal>

@ -13,8 +13,12 @@ BEGIN {
}
use NGCP::Panel::Utils::Journal qw();
my $json = JSON->new();
$json->allow_blessed(1);
$json->convert_blessed(1);
my $is_local_env = 0;
my $mysql_sqlstrict = not $is_local_env;
my $mysql_sqlstrict = 1; #not $is_local_env;
my $enable_journal_tests = 1;
use Config::General;
@ -64,6 +68,7 @@ my $t = time;
my $default_reseller_id = 1;
my $billingprofile = test_billingprofile($t,$default_reseller_id);
my $billingzone = test_billingzone($billingprofile);
my $systemcontact = test_systemcontact($t);
my $contract = test_contract($billingprofile,$systemcontact);
(my $reseller,$billingprofile) = test_reseller($t,$contract);
@ -72,12 +77,14 @@ my $customercontact = test_customercontact($t,$reseller);
my $customer = test_customer($customercontact,$billingprofile);
my $customerpreferences = test_customerpreferences($customer);
my $subscriberprofileset = test_subscriberprofileset($t,$reseller);
my $subscriberprofile = test_subscriberprofile($t,$subscriberprofileset);
my $profilepreferences = test_profilepreferences($subscriberprofile);
#my $subscriberprofileset = test_subscriberprofileset($t,$reseller);
#my $subscriberprofile = test_subscriberprofile($t,$subscriberprofileset);
#my $profilepreferences = test_profilepreferences($subscriberprofile);
my $subscriber = test_subscriber($t,$customer,$domain);
#my $autoattendants = test_autoattendants($t,$subscriber);
my $voicemailsettings = test_voicemailsettings($t,$subscriber);
my $trustedsource = test_trustedsource($subscriber);
@ -106,6 +113,198 @@ my $subscriberpreferences = test_subscriberpreferences($subscriber,$customersoun
done_testing;
#sub test_customerbalances {
# my ($t,$subscriber) = @_;
#
# my $customerbalances_uri = $uri.'/api/customerbalances/'.$subscriber->{id};
# $req = HTTP::Request->new('PUT', $customerbalances_uri); #$customer->{id});
# $req->header('Content-Type' => 'application/json');
# $req->header('Prefer' => 'return=representation');
# $req->content(JSON::to_json({
# cash_balance => 10,
# free_time_balance => 10,
# }));
# $res = $ua->request($req);
# is($res->code, 200, "PUT test customerbalances");
# $req = HTTP::Request->new('GET', $customerbalances_uri); # . '?page=1&rows=' . (scalar keys %$put_data));
# $res = $ua->request($req);
# is($res->code, 200, "fetch PUT test customerbalances");
# my $customerbalances = JSON::from_json($res->decoded_content);
#
# _test_item_journal_link('customerbalances',$customerbalances,$subscriber->{id});
# _test_journal_options_head('customerbalances',$subscriber->{id});
# my $journals = {};
# my $journal = _test_journal_top_journalitem('customerbalances',$subscriber->{id},$customerbalances,'update',$journals);
# _test_journal_options_head('customerbalances',$subscriber->{id},$journal->{id});
#
# $req = HTTP::Request->new('PATCH', $customerbalances_uri);
# $req->header('Content-Type' => 'application/json-patch+json');
# $req->header('Prefer' => 'return=representation');
# $req->content(JSON::to_json({
# cash_balance => 10,
# free_time_balance => 10,
# }));
# $res = $ua->request($req);
# is($res->code, 200, "PATCH test customerbalances");
# $req = HTTP::Request->new('GET', $customerbalances_uri);
# $res = $ua->request($req);
# is($res->code, 200, "fetch PATCHED test customerbalances");
# $customerbalances = JSON::from_json($res->decoded_content);
#
# _test_item_journal_link('customerbalances',$customerbalances,$subscriber->{id});
# $journal = _test_journal_top_journalitem('customerbalances',$subscriber->{id},$customerbalances,'update',$journals,$journal);
#
# _test_journal_collection('customerbalances',$subscriber->{id},$journals);
#
# return $customerbalances;
#
#}
sub test_billingzone {
my ($billingprofile) = @_;
$req = HTTP::Request->new('POST', $uri.'/api/billingzones/');
$req->header('Content-Type' => 'application/json');
$req->content(JSON::to_json({
zone => 'CH',
billing_profile_id => $billingprofile->{id},
}));
$res = $ua->request($req);
is($res->code, 201, "POST test billingzone");
my $billingzone_uri = $uri.'/'.$res->header('Location');
$req = HTTP::Request->new('GET', $billingzone_uri);
$res = $ua->request($req);
is($res->code, 200, "fetch POSTed test billingzone");
my $billingzone = JSON::from_json($res->decoded_content);
_test_item_journal_link('billingzones',$billingzone,$billingzone->{id});
_test_journal_options_head('billingzones',$billingzone->{id});
my $journals = {};
my $journal = _test_journal_top_journalitem('billingzones',$billingzone->{id},$billingzone,'create',$journals);
_test_journal_options_head('billingzones',$billingzone->{id},$journal->{id});
$req = HTTP::Request->new('PUT', $billingzone_uri);
$req->header('Content-Type' => 'application/json');
$req->header('Prefer' => 'return=representation');
$req->content(JSON::to_json({
zone => 'DE',
billing_profile_id => $billingprofile->{id},
}));
$res = $ua->request($req);
is($res->code, 200, "PUT test billingzone");
$req = HTTP::Request->new('GET', $billingzone_uri);
$res = $ua->request($req);
is($res->code, 200, "fetch PUT test billingzone");
$billingzone = JSON::from_json($res->decoded_content);
_test_item_journal_link('billingzones',$billingzone,$billingzone->{id});
$journal = _test_journal_top_journalitem('billingzones',$billingzone->{id},$billingzone,'update',$journals,$journal);
$req = HTTP::Request->new('PATCH', $billingzone_uri);
$req->header('Content-Type' => 'application/json-patch+json');
$req->header('Prefer' => 'return=representation');
$req->content(JSON::to_json(
[ { op => 'replace', path => '/zone', value => 'AT' } ]
));
$res = $ua->request($req);
is($res->code, 200, "PATCH test billingzone");
$req = HTTP::Request->new('GET', $billingzone_uri);
$res = $ua->request($req);
is($res->code, 200, "fetch PATCHed test billingzone");
$billingzone = JSON::from_json($res->decoded_content);
_test_item_journal_link('billingzones',$billingzone,$billingzone->{id});
$journal = _test_journal_top_journalitem('billingzones',$billingzone->{id},$billingzone,'update',$journals,$journal);
$req = HTTP::Request->new('DELETE', $billingzone_uri);
$res = $ua->request($req);
is($res->code, 204, "delete POSTed test billingzone");
#$domain = JSON::from_json($res->decoded_content);
$journal = _test_journal_top_journalitem('billingzones',$billingzone->{id},$billingzone,'delete',$journals,$journal);
_test_journal_collection('billingzones',$billingzone->{id},$journals);
$req = HTTP::Request->new('POST', $uri.'/api/billingzones/');
$req->header('Content-Type' => 'application/json');
$req->content(JSON::to_json({
zone => 'AT',
billing_profile_id => $billingprofile->{id},
}));
$res = $ua->request($req);
is($res->code, 201, "POST another test billingzone");
$billingzone_uri = $uri.'/'.$res->header('Location');
$req = HTTP::Request->new('GET', $billingzone_uri);
$res = $ua->request($req);
is($res->code, 200, "fetch POSTed test billingzone");
$billingzone = JSON::from_json($res->decoded_content);
return $billingzone;
}
sub test_autoattendants {
my ($t,$subscriber) = @_;
my $autoattendants_uri = $uri.'/api/autoattendants/'.$subscriber->{id};
$req = HTTP::Request->new('PUT', $autoattendants_uri); #$customer->{id});
$req->header('Content-Type' => 'application/json');
$req->header('Prefer' => 'return=representation');
$req->content(JSON::to_json({
slots => [ {slot => '0',
destination => 'autoattendant_dest_'.$t.'@example.com' },
{slot => '1',
destination => 'autoattendant_dest_'.$t.'@example.com' },
{slot => '2',
destination => 'autoattendant_dest_'.$t.'@example.com' },],
}));
$res = $ua->request($req);
is($res->code, 200, "PUT test autoattendants");
$req = HTTP::Request->new('GET', $autoattendants_uri); # . '?page=1&rows=' . (scalar keys %$put_data));
$res = $ua->request($req);
is($res->code, 200, "fetch PUT test autoattendants");
my $autoattendants = JSON::from_json($res->decoded_content);
_test_item_journal_link('autoattendants',$autoattendants,$subscriber->{id});
_test_journal_options_head('autoattendants',$subscriber->{id});
my $journals = {};
my $journal = _test_journal_top_journalitem('autoattendants',$subscriber->{id},$autoattendants,'update',$journals);
_test_journal_options_head('autoattendants',$subscriber->{id},$journal->{id});
$req = HTTP::Request->new('PATCH', $autoattendants_uri);
$req->header('Content-Type' => 'application/json-patch+json');
$req->header('Prefer' => 'return=representation');
$req->content(JSON::to_json(
[ { op => 'replace', path => '/slots', value => [ {slot => '3',
destination => 'autoattendant_dest_'.$t.'@example.com' },
{slot => '4',
destination => 'autoattendant_dest_'.$t.'@example.com' },
{slot => '5',
destination => 'autoattendant_dest_'.$t.'@example.com' },] } ]
));
$res = $ua->request($req);
is($res->code, 200, "PATCH test autoattendants");
$req = HTTP::Request->new('GET', $autoattendants_uri);
$res = $ua->request($req);
is($res->code, 200, "fetch PATCHED test autoattendants");
$autoattendants = JSON::from_json($res->decoded_content);
_test_item_journal_link('autoattendants',$autoattendants,$subscriber->{id});
$journal = _test_journal_top_journalitem('autoattendants',$subscriber->{id},$autoattendants,'update',$journals,$journal);
_test_journal_collection('autoattendants',$subscriber->{id},$journals);
return $autoattendants;
}
sub test_voicemailsettings {
my ($t,$subscriber) = @_;
@ -2098,4 +2297,12 @@ sub _get_preference_value {
return undef;
}
sub _to_json {
return $json->encode(shift);
}
sub _from_json {
return $json->decode(shift);
}
# vim: set tabstop=4 expandtab:

Loading…
Cancel
Save