summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/account_controller.rb1
-rw-r--r--test/integration/sudo_mode_test.rb27
2 files changed, 28 insertions, 0 deletions
diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb
index 798ccfb92..d5e0f30e2 100644
--- a/app/controllers/account_controller.rb
+++ b/app/controllers/account_controller.rb
@@ -201,6 +201,7 @@ class AccountController < ApplicationController
# Valid user
if user.active?
successful_authentication(user)
+ update_sudo_timestamp! # activate Sudo Mode
else
handle_inactive_user(user)
end
diff --git a/test/integration/sudo_mode_test.rb b/test/integration/sudo_mode_test.rb
index e92126386..1731a61bd 100644
--- a/test/integration/sudo_mode_test.rb
+++ b/test/integration/sudo_mode_test.rb
@@ -7,8 +7,24 @@ class SudoModeTest < Redmine::IntegrationTest
Redmine::SudoMode.stubs(:enabled?).returns(true)
end
+ def test_sudo_mode_should_be_active_after_login
+ log_user("admin", "admin")
+ get "/users/new"
+ assert_response :success
+ post "/users",
+ :user => { :login => "psmith", :firstname => "Paul",
+ :lastname => "Smith", :mail => "psmith@somenet.foo",
+ :language => "en", :password => "psmith09",
+ :password_confirmation => "psmith09" }
+ assert_response 302
+
+ user = User.find_by_login("psmith")
+ assert_kind_of User, user
+ end
+
def test_add_user
log_user("admin", "admin")
+ expire_sudo_mode!
get "/users/new"
assert_response :success
post "/users",
@@ -36,6 +52,7 @@ class SudoModeTest < Redmine::IntegrationTest
def test_create_member_xhr
log_user 'admin', 'admin'
+ expire_sudo_mode!
get '/projects/ecookbook/settings/members'
assert_response :success
@@ -59,6 +76,7 @@ class SudoModeTest < Redmine::IntegrationTest
def test_create_member
log_user 'admin', 'admin'
+ expire_sudo_mode!
get '/projects/ecookbook/settings/members'
assert_response :success
@@ -84,6 +102,7 @@ class SudoModeTest < Redmine::IntegrationTest
def test_create_role
log_user 'admin', 'admin'
+ expire_sudo_mode!
get '/roles'
assert_response :success
@@ -118,6 +137,7 @@ class SudoModeTest < Redmine::IntegrationTest
def test_update_email_address
log_user 'jsmith', 'jsmith'
+ expire_sudo_mode!
get '/my/account'
assert_response :success
post '/my/account', user: { mail: 'newmail@test.com' }
@@ -161,4 +181,11 @@ class SudoModeTest < Redmine::IntegrationTest
end
end
end
+
+ private
+
+ # sudo mode is active after sign, let it expire by advancing the time
+ def expire_sudo_mode!
+ travel_to 20.minutes.from_now
+ end
end