diff options
author | M Somerville <matthew-github@dracos.co.uk> | 2020-09-18 20:11:31 +0100 |
---|---|---|
committer | M Somerville <matthew-github@dracos.co.uk> | 2020-09-25 11:59:52 +0100 |
commit | ba1179d0378a35809f4eb2df0ceb3e189c4bd1bc (patch) | |
tree | 24d868cbd7ef96c8e13a57bec2ee362090cf5583 | |
parent | 49a2bf517a60d71b251bdf7e23e5717c792f527d (diff) |
Show username error in correct place only.
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 10 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/Update.pm | 10 | ||||
-rw-r--r-- | t/app/controller/report_new_errors.t | 20 | ||||
-rw-r--r-- | t/app/controller/report_new_open311.t | 4 | ||||
-rw-r--r-- | t/app/controller/report_updates.t | 19 | ||||
-rw-r--r-- | templates/web/base/contact/enquiry/index.html | 4 | ||||
-rw-r--r-- | templates/web/base/report/form/user_loggedout_email.html | 4 | ||||
-rw-r--r-- | templates/web/bromley/report/form/user_loggedout_email.html | 4 | ||||
-rw-r--r-- | templates/web/zurich/report/new/fill_in_details_form.html | 4 |
9 files changed, 67 insertions, 12 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index e7b4d70a7..d6314dacf 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -1250,6 +1250,16 @@ sub check_for_errors : Private { $field_errors{photo} = $photo_error; } + # Now assign the username error according to where it came from + if ($field_errors{username}) { + if ($c->get_param('submit_sign_in') || $c->get_param('password_sign_in')) { + $field_errors{username_sign_in} = $field_errors{username}; + } else { + $field_errors{username_register} = $field_errors{username}; + } + delete $field_errors{username}; + } + # all good if no errors return 1 unless scalar keys %field_errors || $c->stash->{login_success}; diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 8ffba3dcf..0fbdc6ce2 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -404,6 +404,16 @@ sub check_for_errors : Private { $field_errors{photo} = $photo_error; } + # Now assign the username error according to where it came from + if ($field_errors{username}) { + if ($c->get_param('submit_sign_in') || $c->get_param('password_sign_in')) { + $field_errors{username_sign_in} = $field_errors{username}; + } else { + $field_errors{username_register} = $field_errors{username}; + } + delete $field_errors{username}; + } + # all good if no errors return 1 unless ( scalar keys %field_errors diff --git a/t/app/controller/report_new_errors.t b/t/app/controller/report_new_errors.t index f45f13c1e..c82a5fa13 100644 --- a/t/app/controller/report_new_errors.t +++ b/t/app/controller/report_new_errors.t @@ -702,6 +702,26 @@ subtest "test password errors for a user who is signing in as they report" => su title => 'Test Report', detail => 'Test report details.', photo1 => '', + username => 'test-2', + password_sign_in => 'secret1', + category => 'Street lighting', + } + }, + "submit with wrong password" + ); + + is_deeply $mech->page_errors, [ + "Please enter a valid email", + "There was a problem with your login information. If you cannot remember your password, or do not have one, please fill in the \x{2018}No\x{2019} section of the form.", + ], "check there were errors"; + + $mech->submit_form_ok( + { + button => 'submit_sign_in', + with_fields => { + title => 'Test Report', + detail => 'Test report details.', + photo1 => '', username => 'test-2@example.com', password_sign_in => 'secret1', category => 'Street lighting', diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t index 7cd6dca09..9a8063a84 100644 --- a/t/app/controller/report_new_open311.t +++ b/t/app/controller/report_new_open311.t @@ -130,8 +130,8 @@ foreach my $test ( 'This information is required', 'Please enter a subject', 'Please enter some details', - 'Please enter your email', 'Please enter your name', + 'Please enter your email', ], submit_with => { title => 'test', @@ -170,8 +170,8 @@ foreach my $test ( 'This information is required', 'Please enter a subject', 'Please enter some details', - 'Please enter your email', 'Please enter your name', + 'Please enter your email', ], submit_with => { title => 'test', diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t index 92cbed861..7ae5ed7b2 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -285,7 +285,7 @@ for my $test ( password_sign_in => '', }, changes => {}, - field_errors => [ 'Please enter a message', 'Please enter your email', 'Please enter your name' ] + field_errors => [ 'Please enter a message', 'Please enter your name', 'Please enter your email' ] }, { desc => 'Invalid email, no message', @@ -303,7 +303,7 @@ for my $test ( password_register => '', }, changes => {}, - field_errors => [ 'Please enter a message', 'Please enter a valid email', 'Please enter your name' ] + field_errors => [ 'Please enter a message', 'Please enter your name', 'Please enter a valid email' ] }, { desc => 'email with spaces, no message', @@ -1223,6 +1223,21 @@ $report->comments->delete; for my $test ( { + desc => 'submit an update with bad email and password', + form_values => { + submit_update => 1, + username => 'registered@', + update => 'Update from a user', + add_alert => undef, + password_sign_in => 'secret', + }, + field_errors => [ + 'Please enter a valid email', + "There was a problem with your login information. If you cannot remember your password, or do not have one, please fill in the \x{2018}No\x{2019} section of the form.", + 'Please enter your name', # FIXME Not really necessary error + ], + }, + { desc => 'submit an update for a registered user, signing in with wrong password', form_values => { submit_update => 1, diff --git a/templates/web/base/contact/enquiry/index.html b/templates/web/base/contact/enquiry/index.html index 1180c08b4..33bdbed5a 100644 --- a/templates/web/base/contact/enquiry/index.html +++ b/templates/web/base/contact/enquiry/index.html @@ -16,8 +16,8 @@ <input type="text" class="form-control required" name="name" id="form_name" value="[% ( form_name OR c.user.name ) | html %]" size="30"> <label for="form_email">[% loc('Your email') %]</label> - [% IF field_errors.username %] - <div class="form-error">[% field_errors.username %]</div> + [% IF field_errors.username_register %] + <div class="form-error">[% field_errors.username_register %]</div> [% END %] <input type="text" class="form-control required email" name="username" id="form_email" [% "disabled" IF c.user.email %] value="[% ( email OR c.user.email ) | html %]" size="30"> diff --git a/templates/web/base/report/form/user_loggedout_email.html b/templates/web/base/report/form/user_loggedout_email.html index 9f631987b..f3163dc5c 100644 --- a/templates/web/base/report/form/user_loggedout_email.html +++ b/templates/web/base/report/form/user_loggedout_email.html @@ -10,8 +10,8 @@ [% END %] <label for="form_[% name %]">[% username_label %]</label> -[% IF field_errors.username %] - <p class='form-error'>[% field_errors.username %]</p> +[% IF field_errors.$name %] + <p class='form-error'>[% field_errors.$name %]</p> [% END %] <input type="[% username_type %]" name="username" id="form_[% name %]" value="[% username_value | html %]" diff --git a/templates/web/bromley/report/form/user_loggedout_email.html b/templates/web/bromley/report/form/user_loggedout_email.html index 8aad16289..5672dbc43 100644 --- a/templates/web/bromley/report/form/user_loggedout_email.html +++ b/templates/web/bromley/report/form/user_loggedout_email.html @@ -13,8 +13,8 @@ <span class="muted">([% loc('We never show your email') %])</span> [% END %] </label> -[% IF field_errors.username %] - <p class='form-error'>[% field_errors.username %]</p> +[% IF field_errors.$name %] + <p class='form-error'>[% field_errors.$name %]</p> [% END %] <input type="[% username_type %]" name="username" id="form_[% name %]" value="[% username_value | html %]" diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html index 376429dad..b2861bf40 100644 --- a/templates/web/zurich/report/new/fill_in_details_form.html +++ b/templates/web/zurich/report/new/fill_in_details_form.html @@ -51,8 +51,8 @@ [% PROCESS "report/new/category_wrapper.html" %] <label for="form_username_register">[% loc('Your email') %]</label> - [% IF field_errors.username %] - <p class='form-error'>[% field_errors.username %]</p> + [% IF field_errors.username_register %] + <p class='form-error'>[% field_errors.username_register %]</p> [% END %] <input class="form-control" type="email" value="[% email | html %]" name="username" id="form_username_register" required> |