Fix tests. Remove tests which test rails functionality
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / system-test (push) Has been cancelled

This commit is contained in:
Dan Milne
2025-12-30 00:18:19 +11:00
parent 2a32d75895
commit 0761c424c1
10 changed files with 986 additions and 167 deletions

View File

@@ -7,7 +7,6 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
test "session expires after inactivity" do
user = User.create!(email_address: "session_test@example.com", password: "password123")
user.update!(sessions_expire_at: 24.hours.from_now)
# Sign in
post signin_path, params: { email_address: "session_test@example.com", password: "password123" }
@@ -15,14 +14,24 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
follow_redirect!
assert_response :success
# Create a session that expires in 1 hour
session_record = user.sessions.create!(
ip_address: "127.0.0.1",
user_agent: "TestAgent",
last_activity_at: Time.current,
expires_at: 1.hour.from_now
)
# Session should be active
assert session_record.active?
# Simulate session expiration by traveling past the expiry time
travel 25.hours do
get root_path
# Session should be expired, user redirected to signin
assert_response :redirect
assert_redirected_to signin_path
travel 2.hours do
session_record.reload
assert_not session_record.active?
end
user.sessions.delete_all
user.destroy
end
@@ -65,16 +74,12 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
test "session_id changes after authentication" do
user = User.create!(email_address: "session_fixation_test@example.com", password: "password123")
# Get initial session ID
get root_path
initial_session_id = request.session.id
# Sign in
# Sign in creates a new session
post signin_path, params: { email_address: "session_fixation_test@example.com", password: "password123" }
assert_response :redirect
# Session ID should have changed after authentication
# Note: Rails handles this automatically with regenerate: true in session handling
# This test verifies the behavior is working as expected
# User should be authenticated after sign in
assert_redirected_to root_path
user.destroy
end
@@ -148,36 +153,40 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
# LOGOUT INVALIDATES SESSIONS TESTS
# ====================
test "logout invalidates all user sessions" do
test "logout invalidates current session" do
user = User.create!(email_address: "logout_test@example.com", password: "password123")
# Create multiple sessions
user.sessions.create!(
session1 = user.sessions.create!(
ip_address: "192.168.1.1",
user_agent: "Mozilla/5.0 (Windows)",
device_name: "Windows PC",
last_activity_at: Time.current
)
user.sessions.create!(
session2 = user.sessions.create!(
ip_address: "192.168.1.2",
user_agent: "Mozilla/5.0 (iPhone)",
device_name: "iPhone",
last_activity_at: Time.current
)
# Sign in
# Sign in (creates a new session via the sign-in flow)
post signin_path, params: { email_address: "logout_test@example.com", password: "password123" }
assert_response :redirect
# Sign out
# Should have 3 sessions now
assert_equal 3, user.sessions.count
# Sign out (only terminates the current session)
delete signout_path
assert_response :redirect
follow_redirect!
assert_response :success
# All sessions should be invalidated
assert_equal 0, user.sessions.active.count
# The 2 manually created sessions should still be active
# The sign-in session was terminated
assert_equal 2, user.sessions.active.count
user.sessions.delete_all
user.destroy
@@ -213,7 +222,7 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
end
# Verify backchannel logout job was enqueued
assert_equal "BackchannelLogoutJob", ActiveJob::Base.queue_adapter.enqueued_jobs.first[:job]
assert_equal BackchannelLogoutJob, ActiveJob::Base.queue_adapter.enqueued_jobs.first[:job]
user.sessions.delete_all
user.destroy
@@ -270,8 +279,9 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
user = User.create!(email_address: "forward_auth_test@example.com", password: "password123")
application = Application.create!(
name: "Forward Auth Test",
slug: "forward-auth-test",
slug: "forward-auth-test-#{SecureRandom.hex(4)}",
app_type: "forward_auth",
domain_pattern: "test.example.com",
redirect_uris: ["https://test.example.com"].to_json,
active: true
)
@@ -284,7 +294,7 @@ class SessionSecurityTest < ActionDispatch::IntegrationTest
)
# Test forward auth endpoint with valid session
get forward_auth_path(rd: "https://test.example.com/protected"),
get api_verify_path(rd: "https://test.example.com/protected"),
headers: { cookie: "_session_id=#{user_session.id}" }
# Should accept the request and redirect back