aboutsummaryrefslogtreecommitdiffstats
path: root/t/app/controller/auth.t
diff options
context:
space:
mode:
Diffstat (limited to 't/app/controller/auth.t')
-rw-r--r--t/app/controller/auth.t160
1 files changed, 20 insertions, 140 deletions
diff --git a/t/app/controller/auth.t b/t/app/controller/auth.t
index cb7d16969..661f99412 100644
--- a/t/app/controller/auth.t
+++ b/t/app/controller/auth.t
@@ -4,7 +4,6 @@ use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
my $test_email = 'test@example.com';
-my $test_email2 = 'test@example.net';
my $test_email3 = 'newuser@example.org';
my $test_password = 'foobar';
@@ -41,8 +40,8 @@ for my $test (
$mech->submit_form_ok(
{
form_name => 'general_auth',
- fields => { email => $email, },
- button => 'email_sign_in',
+ fields => { username => $email, },
+ button => 'sign_in_by_code',
},
"try to create an account with email '$email'"
);
@@ -60,8 +59,8 @@ $mech->get_ok('/auth');
$mech->submit_form_ok(
{
form_name => 'general_auth',
- fields => { email => $test_email, },
- button => 'email_sign_in',
+ fields => { username => $test_email, password_register => $test_password },
+ button => 'sign_in_by_code',
},
"create an account for '$test_email'"
);
@@ -101,125 +100,6 @@ $mech->not_logged_in_ok;
$mech->log_out_ok;
}
-# get a sign in email and change password
-{
- $mech->clear_emails_ok;
- $mech->get_ok('/auth');
- $mech->submit_form_ok(
- {
- form_name => 'general_auth',
- fields => {
- email => "$test_email",
- r => 'faq', # Just as a test
- },
- button => 'email_sign_in',
- },
- "email_sign_in with '$test_email'"
- );
-
- # rest is as before so no need to test
-
- # follow link and change password - check not prompted for old password
- $mech->not_logged_in_ok;
-
- my $link = $mech->get_link_from_email;
- $mech->get_ok($link);
- is $mech->uri->path, '/faq', "redirected to the Help page";
-
- $mech->get_ok('/auth/change_password');
-
- ok my $form = $mech->form_name('change_password'),
- "found change password form";
- is_deeply [ sort grep { $_ } map { $_->name } $form->inputs ], #
- [ 'confirm', 'new_password', 'token' ],
- "check we got expected fields (ie not old_password)";
-
- # check the various ways the form can be wrong
- for my $test (
- { new => '', conf => '', err => 'enter a password', },
- { new => 'secret', conf => '', err => 'do not match', },
- { new => '', conf => 'secret', err => 'do not match', },
- { new => 'secret', conf => 'not_secret', err => 'do not match', },
- )
- {
- $mech->get_ok('/auth/change_password');
- $mech->content_lacks( $test->{err}, "did not find expected error" );
- $mech->submit_form_ok(
- {
- form_name => 'change_password',
- fields =>
- { new_password => $test->{new}, confirm => $test->{conf}, },
- },
- "change_password with '$test->{new}' and '$test->{conf}'"
- );
- $mech->content_contains( $test->{err}, "found expected error" );
- }
-
- my $user =
- FixMyStreet::App->model('DB::User')->find( { email => $test_email } );
- ok $user, "got a user";
- ok !$user->password, "user has no password";
-
- $mech->get_ok('/auth/change_password');
- $mech->submit_form_ok(
- {
- form_name => 'change_password',
- fields =>
- { new_password => $test_password, confirm => $test_password, },
- },
- "change_password with '$test_password' and '$test_password'"
- );
- is $mech->uri->path, '/auth/change_password',
- "still on change password page";
- $mech->content_contains( 'password has been changed',
- "found password changed" );
-
- $user->discard_changes();
- ok $user->password, "user now has a password";
-}
-
-subtest "Test change email page" => sub {
- # Still signed in from the above test
- $mech->get_ok('/my');
- $mech->follow_link_ok({url => '/auth/change_email'});
- $mech->submit_form_ok(
- { with_fields => { email => "" } },
- "submit blank change email form"
- );
- $mech->content_contains( 'Please enter your email', "found expected error" );
- $mech->submit_form_ok({ with_fields => { email => $test_email2 } }, "change_email to $test_email2");
- is $mech->uri->path, '/auth/change_email', "still on change email page";
- $mech->content_contains( 'Now check your email', "found check your email" );
- my $link = $mech->get_link_from_email;
- $mech->get_ok($link);
- is $mech->uri->path, '/auth/change_email/success', "redirected to the change_email page";
- $mech->content_contains('successfully confirmed');
- ok(FixMyStreet::App->model('DB::User')->find( { email => $test_email2 } ), "got a user");
-
- ok(FixMyStreet::App->model('DB::User')->create( { email => $test_email } ), "created old user");
- $mech->submit_form_ok({ with_fields => { email => $test_email } },
- "change_email back to $test_email"
- );
- is $mech->uri->path, '/auth/change_email', "still on change email page";
- $mech->content_contains( 'Now check your email', "found check your email" );
- $link = $mech->get_link_from_email;
- $mech->get_ok($link);
- is $mech->uri->path, '/auth/change_email/success', "redirected to the change_email page";
- $mech->content_contains('successfully confirmed');
-
- # Test you can't click the link if logged out
- $mech->submit_form_ok({ with_fields => { email => $test_email } },
- "change_email back to $test_email"
- );
- is $mech->uri->path, '/auth/change_email', "still on change email page";
- $mech->content_contains( 'Now check your email', "found check your email" );
- $link = $mech->get_link_from_email;
- $mech->log_out_ok;
- $mech->get_ok($link);
- isnt $mech->uri->path, '/auth/change_email/success', "not redirected to the change_email page";
- $mech->content_contains('Sorry');
-};
-
foreach my $remember_me ( '1', '0' ) {
subtest "sign in using valid details (remember_me => '$remember_me')" => sub {
$mech->get_ok('/auth');
@@ -227,11 +107,11 @@ foreach my $remember_me ( '1', '0' ) {
{
form_name => 'general_auth',
fields => {
- email => $test_email,
+ username => $test_email,
password_sign_in => $test_password,
remember_me => ( $remember_me ? 1 : undef ),
},
- button => 'sign_in',
+ button => 'sign_in_by_password',
},
"sign in with '$test_email' & '$test_password'"
);
@@ -253,15 +133,15 @@ $mech->submit_form_ok(
{
form_name => 'general_auth',
fields => {
- email => $test_email,
+ username => $test_email,
password_sign_in => 'not the password',
},
- button => 'sign_in',
+ button => 'sign_in_by_password',
},
"sign in with '$test_email' & 'not the password'"
);
is $mech->uri->path, '/auth', "redirected to correct page";
-$mech->content_contains( 'problem with your email/password combination', 'found error message' );
+$mech->content_contains( 'problem with your login information', 'found error message' );
subtest "sign in but have email form autofilled" => sub {
$mech->get_ok('/auth');
@@ -269,11 +149,11 @@ subtest "sign in but have email form autofilled" => sub {
{
form_name => 'general_auth',
fields => {
- email => $test_email,
+ username => $test_email,
password_sign_in => $test_password,
name => 'Auto-completed from elsewhere',
},
- button => 'sign_in',
+ button => 'sign_in_by_password',
},
"sign in with '$test_email' and auto-completed name"
);
@@ -289,10 +169,10 @@ subtest "sign in with uppercase email" => sub {
{
form_name => 'general_auth',
fields => {
- email => $uc_test_email,
+ username => $uc_test_email,
password_sign_in => $test_password,
},
- button => 'sign_in',
+ button => 'sign_in_by_password',
},
"sign in with '$uc_test_email' and auto-completed name"
);
@@ -317,8 +197,8 @@ FixMyStreet::override_config {
$mech->submit_form_ok(
{
form_name => 'general_auth',
- fields => { email => $test_email3, },
- button => 'email_sign_in',
+ fields => { username => $test_email3, },
+ button => 'sign_in_by_code',
},
"create a new account"
);
@@ -338,13 +218,13 @@ FixMyStreet::override_config {
{
form_name => 'general_auth',
fields => {
- email => "$test_email",
+ username => "$test_email",
password_register => $new_password,
r => 'faq', # Just as a test
},
- button => 'email_sign_in',
+ button => 'sign_in_by_code',
},
- "email_sign_in with '$test_email'"
+ "sign_in_by_code with '$test_email'"
);
$mech->not_logged_in_ok;
@@ -361,10 +241,10 @@ FixMyStreet::override_config {
{
form_name => 'general_auth',
fields => {
- email => $test_email,
+ username => $test_email,
password_sign_in => $new_password,
},
- button => 'sign_in',
+ button => 'sign_in_by_password',
},
"sign in with '$test_email' and new password"
);