diff options
Diffstat (limited to 't')
-rw-r--r-- | t/Mock/Twilio.pm | 4 | ||||
-rw-r--r-- | t/app/controller/auth_phone.t | 46 |
2 files changed, 25 insertions, 25 deletions
diff --git a/t/Mock/Twilio.pm b/t/Mock/Twilio.pm index eaad30b76..125daa55f 100644 --- a/t/Mock/Twilio.pm +++ b/t/Mock/Twilio.pm @@ -20,6 +20,10 @@ sub dispatch_request { sub (POST + /2010-04-01/Accounts/*/Messages.json + %*) { my ($self, $sid, $data) = @_; + if ($data->{To} eq '+18165550101') { + return [ 400, [ 'Content-Type' => 'application/json' ], + [ '{"code":"21408", "message": "Unable to send"}' ] ]; + } push @{$self->texts}, $data; return [ 200, [ 'Content-Type' => 'application/json' ], [ '{}' ] ]; }, diff --git a/t/app/controller/auth_phone.t b/t/app/controller/auth_phone.t index 435ea7552..dea1c3493 100644 --- a/t/app/controller/auth_phone.t +++ b/t/app/controller/auth_phone.t @@ -7,12 +7,13 @@ LWP::Protocol::PSGI->register($twilio->to_psgi_app, host => 'api.twilio.com'); my $mech = FixMyStreet::TestMech->new; -subtest 'Log in with invalid number, fail' => sub { - FixMyStreet::override_config { - SMS_AUTHENTICATION => 1, - PHONE_COUNTRY => 'GB', - TWILIO_ACCOUNT_SID => 'AC123', - }, sub { +FixMyStreet::override_config { + SMS_AUTHENTICATION => 1, + PHONE_COUNTRY => 'GB', + TWILIO_ACCOUNT_SID => 'AC123', +}, sub { + + subtest 'Log in with invalid number, fail' => sub { $mech->get_ok('/auth'); $mech->submit_form_ok({ form_name => 'general_auth', @@ -21,14 +22,8 @@ subtest 'Log in with invalid number, fail' => sub { }, "sign in using bad number"); $mech->content_contains('Please check your phone number is correct'); }; -}; -subtest 'Log in using landline, fail' => sub { - FixMyStreet::override_config { - SMS_AUTHENTICATION => 1, - PHONE_COUNTRY => 'GB', - TWILIO_ACCOUNT_SID => 'AC123', - }, sub { + subtest 'Log in using landline, fail' => sub { $mech->get_ok('/auth'); $mech->submit_form_ok({ form_name => 'general_auth', @@ -37,14 +32,18 @@ subtest 'Log in using landline, fail' => sub { }, "sign in using landline"); $mech->content_contains('Please enter a mobile number'); }; -}; -subtest 'Log in using mobile, by text' => sub { - FixMyStreet::override_config { - SMS_AUTHENTICATION => 1, - PHONE_COUNTRY => 'GB', - TWILIO_ACCOUNT_SID => 'AC123', - }, sub { + subtest 'Log in using number that fails at Twilio' => sub { + $mech->get_ok('/auth'); + $mech->submit_form_ok({ + form_name => 'general_auth', + fields => { username => '+18165550101' }, + button => 'sign_in_by_code', + }, "sign in using failing number"); + $mech->content_contains('Sending a confirmation text failed'); + }; + + subtest 'Log in using mobile, by text' => sub { $mech->submit_form_ok({ form_name => 'general_auth', fields => { username => '+18165550100', password_register => 'secret' }, @@ -67,12 +66,8 @@ subtest 'Log in using mobile, by text' => sub { $mech->logged_in_ok; $mech->log_out_ok; }; -}; -subtest 'Log in using mobile, by password' => sub { - FixMyStreet::override_config { - SMS_AUTHENTICATION => 1, - }, sub { + subtest 'Log in using mobile, by password' => sub { $mech->get_ok('/auth'); $mech->submit_form_ok({ form_name => 'general_auth', @@ -89,6 +84,7 @@ subtest 'Log in using mobile, by password' => sub { is $mech->uri->path, '/my', "redirected to the 'my' section of site"; $mech->logged_in_ok; }; + }; done_testing(); |