+ <%= f.govuk_error_summary %>
+
<%= content_for(:title) %>
diff --git a/app/views/users/edit_password.html.erb b/app/views/users/edit_password.html.erb
index e95f4e869..9c1f29088 100644
--- a/app/views/users/edit_password.html.erb
+++ b/app/views/users/edit_password.html.erb
@@ -7,23 +7,25 @@
) %>
<% end %>
-<%= form_for(current_user, as: :user, html: { method: :patch }) do |f| %>
+<%= form_for(@user, as: :user, html: { method: :patch }) do |f| %>
+ <%= f.govuk_error_summary %>
+
<%= content_for(:title) %>
- <%= f.govuk_password_field :current_password,
- label: { text: "Current password" },
- autocomplete: "current-password"
- %>
-
<%= f.govuk_password_field :password,
+ label: { text: "New password" },
hint: @minimum_password_length ? { text: "Your password must be at least #{@minimum_password_length} characters and hard to guess." } : nil,
autocomplete: "new-password"
%>
+ <%= f.govuk_password_field :password_confirmation,
+ label: { text: "Confirm new password" }
+ %>
+
<%= f.govuk_submit "Update" %>
diff --git a/app/views/users/reset_password.html.erb b/app/views/users/reset_password.html.erb
index 656eaa264..e12a0beed 100644
--- a/app/views/users/reset_password.html.erb
+++ b/app/views/users/reset_password.html.erb
@@ -11,6 +11,8 @@
<%= f.hidden_field :reset_password_token %>
+ <%= f.govuk_error_summary %>
+
<%= content_for(:title) %>
diff --git a/spec/requests/user_controller_spec.rb b/spec/requests/user_controller_spec.rb
index c247ced48..ad7294469 100644
--- a/spec/requests/user_controller_spec.rb
+++ b/spec/requests/user_controller_spec.rb
@@ -44,6 +44,24 @@ RSpec.describe UsersController, type: :request do
get "/users/password/edit?reset_password_token=#{enc}"
expect(page).to have_css("h1", class: "govuk-heading-l", text: "Reset your password")
end
+
+ context "update password" do
+ let(:params) do
+ {
+ id: user.id, user: { password: new_value, password_confirmation: "something_else" }
+ }
+ end
+
+ before do
+ sign_in user
+ put "/users/#{user.id}", headers: headers, params: params
+ end
+
+ it "shows an error if passwords don't match" do
+ expect(response).to have_http_status(:unprocessable_entity)
+ expect(page).to have_selector("#error-summary-title")
+ end
+ end
end
end
@@ -144,5 +162,23 @@ RSpec.describe UsersController, type: :request do
expect(response).to have_http_status(:not_found)
end
end
+
+ context "update password" do
+ let(:params) do
+ {
+ id: user.id, user: { password: new_value, password_confirmation: "something_else" }
+ }
+ end
+
+ before do
+ sign_in user
+ patch "/users/#{user.id}", headers: headers, params: params
+ end
+
+ it "shows an error if passwords don't match" do
+ expect(response).to have_http_status(:unprocessable_entity)
+ expect(page).to have_selector("#error-summary-title")
+ end
+ end
end
end