summaryrefslogtreecommitdiff
path: root/test/controllers
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-24 17:20:41 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-24 17:20:41 +0200
commitd5883869e97244335370d54e21ef46b3f1885899 (patch)
tree4575a24150f4c2fa98de54fdd556132f0aa0ff8c /test/controllers
parent0d2a8e4b61f4b79507519c73f127b7ab883d853c (diff)
Give all sessions a uniform absolute lifetime of one week
Enforced at restore via a login-time stamp, written only at genuine logins so the limit stays absolute rather than sliding. The cookie name rotation logs everyone out once at deploy. Second-factor users are deliberately not treated worse than password-only ones.
Diffstat (limited to 'test/controllers')
-rw-r--r--test/controllers/admin_controller_test.rb13
-rw-r--r--test/controllers/sessions_controller_test.rb1
2 files changed, 14 insertions, 0 deletions
diff --git a/test/controllers/admin_controller_test.rb b/test/controllers/admin_controller_test.rb
index a177851f..9747d8e9 100644
--- a/test/controllers/admin_controller_test.rb
+++ b/test/controllers/admin_controller_test.rb
@@ -45,4 +45,17 @@ class AdminControllerTest < ActionController::TestCase
45 get :index 45 get :index
46 assert_redirected_to edit_user_path(users(:quentin)) 46 assert_redirected_to edit_user_path(users(:quentin))
47 end 47 end
48
49 test "a session older than the absolute limit is rejected" do
50 login_as :quentin
51 @request.session[:logged_in_at] = (AuthenticatedSystem::SESSION_MAX_AGE.ago - 1.day).to_i
52 get :index
53 assert_response :redirect
54 end
55
56 test "a fresh session carries the login stamp" do
57 login_as :quentin
58 get :index
59 assert_response :success
60 end
48end 61end
diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb
index 62acd28a..86da0e61 100644
--- a/test/controllers/sessions_controller_test.rb
+++ b/test/controllers/sessions_controller_test.rb
@@ -9,6 +9,7 @@ class SessionsControllerTest < ActionController::TestCase
9 post :create, params: { login: 'quentin', password: 'monkey' } 9 post :create, params: { login: 'quentin', password: 'monkey' }
10 assert session[:user_id] 10 assert session[:user_id]
11 assert_response :redirect 11 assert_response :redirect
12 assert session[:logged_in_at].present?
12 end 13 end
13 14
14 def test_should_fail_login_and_not_redirect 15 def test_should_fail_login_and_not_redirect