aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorM Somerville <matthew-github@dracos.co.uk>2020-09-18 20:11:31 +0100
committerM Somerville <matthew-github@dracos.co.uk>2020-09-25 11:59:52 +0100
commitba1179d0378a35809f4eb2df0ceb3e189c4bd1bc (patch)
tree24d868cbd7ef96c8e13a57bec2ee362090cf5583
parent49a2bf517a60d71b251bdf7e23e5717c792f527d (diff)
Show username error in correct place only.
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm10
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm10
-rw-r--r--t/app/controller/report_new_errors.t20
-rw-r--r--t/app/controller/report_new_open311.t4
-rw-r--r--t/app/controller/report_updates.t19
-rw-r--r--templates/web/base/contact/enquiry/index.html4
-rw-r--r--templates/web/base/report/form/user_loggedout_email.html4
-rw-r--r--templates/web/bromley/report/form/user_loggedout_email.html4
-rw-r--r--templates/web/zurich/report/new/fill_in_details_form.html4
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>