Testing Session Authentication and Access Control in Maybe Finance
This test suite validates session management functionality in a Ruby on Rails application, covering user authentication flows, access control, and admin privileges. The tests ensure proper login/logout behavior and authorization checks for different user roles.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
maybe-finance/maybe
test/controllers/sessions_controller_test.rb
require "test_helper"
class SessionsControllerTest < ActionDispatch::IntegrationTest
setup do
@user = users(:family_admin)
end
test "login page" do
get new_session_url
assert_response :success
end
test "can sign in" do
sign_in @user
assert_redirected_to root_url
get root_url
assert_response :success
end
test "fails to sign in with bad password" do
post sessions_url, params: { email: @user.email, password: "bad" }
assert_response :unprocessable_entity
assert_equal "Invalid email or password.", flash[:alert]
end
test "can sign out" do
sign_in @user
delete session_url(@user.sessions.order(:created_at).last)
assert_redirected_to new_session_path
assert_equal "You have signed out successfully.", flash[:notice]
end
test "super admins can access the jobs page" do
sign_in users(:maybe_support_staff)
get good_job_url
assert_redirected_to "http://www.example.com/good_job/jobs?locale=en"
end
test "non-super admins cannot access the jobs page" do
get good_job_url
assert_response :not_found
end
end