From ad04649ece8731277e034543cf4d780c0db60a79 Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Wed, 28 Feb 2018 17:26:28 +0100 Subject: [PATCH] TT#26652 addditional subscriberregistrations error checks * return HTTP_UNPROCESSABLE_ENTRY if form data is not valid or a susbcriber is not found * POST: do not commit transaction if update_item fails Change-Id: I7149922d4e4d701213ce351112cc67e611c3d910 --- .../Controller/API/SubscriberRegistrations.pm | 2 +- .../Panel/Role/API/SubscriberRegistrations.pm | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/NGCP/Panel/Controller/API/SubscriberRegistrations.pm b/lib/NGCP/Panel/Controller/API/SubscriberRegistrations.pm index 98787f7217..0418a8013a 100644 --- a/lib/NGCP/Panel/Controller/API/SubscriberRegistrations.pm +++ b/lib/NGCP/Panel/Controller/API/SubscriberRegistrations.pm @@ -139,7 +139,7 @@ sub POST :Allow { my ($guard, $txn_ok) = ($c->model('DB')->txn_scope_guard, 0); { - $self->update_item($c, undef, undef, $resource, $form, $create); + last unless $self->update_item($c, "new", undef, $resource, $form, $create); $guard->commit; $txn_ok = 1; diff --git a/lib/NGCP/Panel/Role/API/SubscriberRegistrations.pm b/lib/NGCP/Panel/Role/API/SubscriberRegistrations.pm index bd253f2133..9b2b65771d 100644 --- a/lib/NGCP/Panel/Role/API/SubscriberRegistrations.pm +++ b/lib/NGCP/Panel/Role/API/SubscriberRegistrations.pm @@ -187,8 +187,11 @@ sub update_item { ); my $sub = $self->subscriber_from_id($c, $resource->{subscriber_id}); - return unless $sub; - unless($create) { + unless ($sub) { + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Could not find a subscriber with the provided subscriber_id"); + return; + } + if ($item && ref $item && !$create) { $self->delete_item($c, $item); } my $cflags = 0; @@ -211,10 +214,16 @@ sub update_item { sub fetch_item { my ($self, $c, $resource, $form, $old_item) = @_; - return unless $form; + unless ($form) { + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Missing data values"); + return; + } my $sub = $self->subscriber_from_id($c, $resource->{subscriber_id}); - return unless $sub; + unless ($sub) { + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Could not find a subscriber with the provided subscriber_id"); + return; + } my $item; my $flush_timeout = 30;