TT#8680 Consider E164 empty fields

Change-Id: I7accdbfc3421eb0fb94e3d9533a87c5489462bed
changes/68/10968/6
Irina Peshinskaya 9 years ago
parent 5053939fda
commit f1971bfcdd

@ -14,6 +14,7 @@ has_field 'cc' => (
}, },
do_label => 0, do_label => 0,
do_wrapper => 0, do_wrapper => 0,
#required => 1,
); );
has_field 'ac' => ( has_field 'ac' => (
@ -25,6 +26,7 @@ has_field 'ac' => (
}, },
do_label => 0, do_label => 0,
do_wrapper => 0, do_wrapper => 0,
#required => 1,
); );
has_field 'sn' => ( has_field 'sn' => (
@ -36,23 +38,26 @@ has_field 'sn' => (
}, },
do_label => 0, do_label => 0,
do_wrapper => 0, do_wrapper => 0,
#required => 1,
); );
sub validate { sub validate {
my $self = shift; my $self = shift;
my $cc = $self->field('cc')->value; my $cc = $self->field('cc')->value;
my $sn = $self->field('sn')->value; my $sn = $self->field('sn')->value;
my %sub_errors = map {$_, 1} ( my @sub_fields = (qw/cc ac sn/);
@{ $self->field('cc')->errors }, my %sub_errors =
@{ $self->field('ac')->errors }, map {$_, 1}
@{ $self->field('sn')->errors } ); map { ($self->field($_) && $self->field($_)->result ) ? @{$self->field($_)->errors} : () }
@sub_fields;
for my $sub_error( keys %sub_errors ) { for my $sub_error( keys %sub_errors ) {
$self->add_error($sub_error); $self->add_error($sub_error);
} }
$self->field('cc')->clear_errors if $self->field('cc'); for my $sub_field (@sub_fields){
$self->field('ac')->clear_errors if $self->field('ac'); $self->field($sub_field)->clear_errors if $self->field($sub_field) && $self->field($sub_field)->result;
$self->field('sn')->clear_errors if $self->field('sn'); }
if ($self->has_errors) { if ($self->has_errors) {
#dont add more errors #dont add more errors

@ -51,22 +51,22 @@ has_field 'snlength' => (
sub validate { sub validate {
my $self = shift; my $self = shift;
my $cc = $self->field('cc')->value; my $cc = $self->field('cc')->value;
my $sn = $self->field('snbase')->value; my $sn = $self->field('snbase')->value;
my $snlen = $self->field('snlength')->value; my $snlen = $self->field('snlength')->value;
my %sub_errors = map {$_, 1} ( my @sub_fields = qw/cc ac snbase snlength/;
@{ $self->field('cc')->errors }, my %sub_errors =
@{ $self->field('ac')->errors }, map {$_, 1}
@{ $self->field('snbase')->errors }, map { ($self->field($_) && $self->field($_)->result ) ? @{$self->field($_)->errors} : () }
@{ $self->field('snlength')->errors } ); @sub_fields;
for my $sub_error( keys %sub_errors ) { for my $sub_error( keys %sub_errors ) {
$self->add_error($sub_error); $self->add_error($sub_error);
} }
$self->field('cc')->clear_errors if $self->field('cc'); for my $sub_field (@sub_fields){
$self->field('ac')->clear_errors if $self->field('ac'); $self->field($sub_field)->clear_errors if $self->field($sub_field) && $self->field($sub_field)->result;
$self->field('snbase')->clear_errors if $self->field('snbase'); }
$self->field('snlength')->clear_errors if $self->field('snlength');
if ($self->has_errors) { if ($self->has_errors) {
#dont add more errors #dont add more errors

@ -254,11 +254,25 @@ sub prepare_resource {
$resource->{profile}{id} = delete $resource->{profile_id}; $resource->{profile}{id} = delete $resource->{profile_id};
my $subscriber_id = $item ? $item->id : 0; my $subscriber_id = $item ? $item->id : 0;
if(exists $resource->{alias_numbers} && ref $resource->{alias_numbers} ne "ARRAY") { if(defined $resource->{e164}) {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid alias_numbers parameter, must be array."); if( ref $resource->{e164} ne "HASH"){
return; $self->error($c, HTTP_UNPROCESSABLE_ENTITY, 'Invalid primary_number parameter, must be a hash.');
return;
}
}
if(exists $resource->{alias_numbers}) {
if( ref $resource->{alias_numbers} ne "ARRAY"){
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, 'Invalid alias_number parameter, must be an array.');
return;
}
$resource->{alias_numbers} = [ map {{ e164 => $_ }} @{ $resource->{alias_numbers} // [] } ];
foreach my $alias_number (@{$resource->{alias_numbers}}){
if( ref $alias_number->{e164} ne "HASH"){
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, 'Invalid alias_number parameter, must be an array of the hashes.');
return;
}
}
} }
$resource->{alias_numbers} = [ map {{ e164 => $_ }} @{ $resource->{alias_numbers} // [] } ];
my $form = $self->get_form($c); my $form = $self->get_form($c);
return unless $self->validate_form( return unless $self->validate_form(

@ -144,12 +144,12 @@ my $remote_config = $test_machine->init_catalyst_config;
#1 #1
$subscriber->{content}->{primary_number} = $intentional_primary_number; $subscriber->{content}->{primary_number} = $intentional_primary_number;
($subscriber_put,$subscriber_get,$preferences_get) = $test_machine->put_and_get($subscriber, $preferences_put); ($subscriber_put,$subscriber_get,$preferences_get) = $test_machine->put_and_get($subscriber, $preferences_put);
is($preferences_get->{content}->{cli}, $intentional_cli, "check that cli was preserved on subscriber phones update: $preferences_get->{content}->{cli} == $intentional_cli"); is($preferences_get->{content}->{cli}, $intentional_cli, "1. check that cli was preserved on subscriber phones update: $preferences_get->{content}->{cli} == $intentional_cli");
#/1 #/1
#2 #2
delete $subscriber->{content}->{primary_number}; delete $subscriber->{content}->{primary_number};
($subscriber_put,$subscriber_get,$preferences_get) = $test_machine->put_and_get($subscriber, $preferences_put); ($subscriber_put,$subscriber_get,$preferences_get) = $test_machine->put_and_get($subscriber, $preferences_put);
is($preferences_get->{content}->{cli}, $intentional_cli, "check that cli was preserved on subscriber phones update: $preferences_get->{content}->{cli} == $intentional_cli"); is($preferences_get->{content}->{cli}, $intentional_cli, "2. check that cli was preserved on subscriber phones update: $preferences_get->{content}->{cli} == $intentional_cli");
#/2 #/2
#now prepare preferences for zero situation, when synchronization will be restarted again #now prepare preferences for zero situation, when synchronization will be restarted again
delete $preferences->{content}->{cli}; delete $preferences->{content}->{cli};
@ -244,6 +244,21 @@ if($remote_config->{config}->{features}->{cloudpbx}){
$test_machine->clear_test_data_all();#fake data aren't registered in this test machine, so they will stay. $test_machine->clear_test_data_all();#fake data aren't registered in this test machine, so they will stay.
} }
} }
#TT#8680
{
diag("8680: check E164 fields format;\n");
my $data = clone $test_machine->DATA_ITEM;
#TT#9066
$data->{primary_number} = ["12123132"];
my($res,$content) = $test_machine->request_post( $data);
$test_machine->http_code_msg(422, "Pimary number should be a hash", $res, $content);
#MT#22853
my $data = clone $test_machine->DATA_ITEM;
$data->{alias_numbers} = ["49221222899813", "49221222899814", "49221222899814"];
my($res,$content) = $test_machine->request_post( $data);
$test_machine->http_code_msg(422, "Alias numbers should be the hashs", $res, $content);
}
$fake_data->clear_test_data_all(); $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. $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(); $fake_data->clear_test_data_all();

Loading…
Cancel
Save