From 028376fe1ea7638f0119ba9614629f66453d206f Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 13 Nov 2017 13:16:41 +0100 Subject: fix: alternate email dialogue fixes #8796 Cleaned up UserController#update earlier but missed that it was used to change fallback email addresses. Now it is back. This time including an integration test. --- app/controllers/users_controller.rb | 8 +++++++- app/views/users/_edit.html.haml | 3 ++- test/integration/browser/alternate_email_test.rb | 25 ++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 test/integration/browser/alternate_email_test.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index da82d1c..b4c98a0 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -31,6 +31,12 @@ class UsersController < ApplicationController def edit end + def update + @user.update_attributes user_params + flash[:notice] = I18n.t(:changes_saved) if @user.valid? + respond_with @user, location: edit_user_path(@user) + end + def deactivate @user.account.disable flash[:notice] = I18n.t("actions.user_disabled_message", username: @user.username) @@ -62,7 +68,7 @@ class UsersController < ApplicationController if admin? params.require(:user).permit(:effective_service_level) else - params.require(:user).permit(:password, :password_confirmation) + params.require(:user).permit(:contact_email) end end diff --git a/app/views/users/_edit.html.haml b/app/views/users/_edit.html.haml index 1d2b68a..8662979 100644 --- a/app/views/users/_edit.html.haml +++ b/app/views/users/_edit.html.haml @@ -2,12 +2,13 @@ -# edit user form, used by both show and edit actions. -# -# We render a bunch of forms here. Which we use depends upon config settings --# user_actions and admin_actions. They both include an array of actions +-# user_actions and admin_actions. They both include an array of actions -# allowed to users and admins. -# Possible forms are: -# 'change_password' -# 'change_pgp_key' -# 'change_service_level' +-# 'contact_email' -# 'destroy_account' - actions = APP_CONFIG[admin? ? :admin_actions : :user_actions] || [] - actions.each do |action| diff --git a/test/integration/browser/alternate_email_test.rb b/test/integration/browser/alternate_email_test.rb new file mode 100644 index 0000000..fc58fb4 --- /dev/null +++ b/test/integration/browser/alternate_email_test.rb @@ -0,0 +1,25 @@ +require 'test_helper' + +class AlternateEmailTest < BrowserIntegrationTest + test "change alternate email" do + username, password = submit_signup + click_on 'Account Settings' + within(".edit_user") do + fill_in 'user_contact_email', with: 'test@leap.se' + click_on 'Save' + end + assert page.has_content?('Changes saved successfully') + assert_equal 'test@leap.se', + page.find('#user_contact_email').value + end + + test "change alternate email to invalid" do + username, password = submit_signup + click_on 'Account Settings' + within(".edit_user") do + fill_in 'user_contact_email', with: 'test@invalid' + click_on 'Save' + assert page.has_content?('is invalid') + end + end +end -- cgit v1.2.3