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

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

@ -254,11 +254,25 @@ sub prepare_resource {
$resource->{profile}{id} = delete $resource->{profile_id};
my $subscriber_id = $item ? $item->id : 0;
if(exists $resource->{alias_numbers} && ref $resource->{alias_numbers} ne "ARRAY") {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid alias_numbers parameter, must be array.");
return;
if(defined $resource->{e164}) {
if( ref $resource->{e164} ne "HASH"){
$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);
return unless $self->validate_form(

@ -144,12 +144,12 @@ my $remote_config = $test_machine->init_catalyst_config;
#1
$subscriber->{content}->{primary_number} = $intentional_primary_number;
($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
#2
delete $subscriber->{content}->{primary_number};
($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
#now prepare preferences for zero situation, when synchronization will be restarted again
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.
}
}
#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();
$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();

Loading…
Cancel
Save