Module: ActiveAdmin::Oidc::TestHelpers
- Defined in:
- lib/activeadmin/oidc/test_helpers.rb
Overview
Test helpers for host apps. Include in your RSpec config:
require "activeadmin/oidc/test_helpers"
RSpec.configure do |config|
config.include ActiveAdmin::Oidc::TestHelpers, oidc_mode: true
config.after(:each, :oidc_mode) { reset_oidc_stubs }
end
Then in specs tagged ‘oidc_mode: true`:
before { stub_oidc_sign_in(sub: "alice-sub", claims: { "email" => "a@b" }) }
Constant Summary collapse
- DEFAULT_CLAIMS =
{ 'preferred_username' => 'alice', 'email' => 'alice@test', 'roles' => ['admin'] }.freeze
Instance Method Summary collapse
-
#reset_oidc_stubs ⇒ Object
Resets OmniAuth test mode.
-
#stub_oidc_failure(message_key = :invalid_credentials) ⇒ Object
Stubs OmniAuth to simulate a strategy failure.
-
#stub_oidc_sign_in(sub: 'alice-sub', claims: {}) ⇒ Object
Stubs OmniAuth to return a successful OIDC auth hash.
Instance Method Details
#reset_oidc_stubs ⇒ Object
Resets OmniAuth test mode. Call in an ‘after` hook.
60 61 62 63 64 |
# File 'lib/activeadmin/oidc/test_helpers.rb', line 60 def reset_oidc_stubs OmniAuth.config.mock_auth[:oidc] = nil OmniAuth.config.test_mode = false OmniAuth.config.request_validation_phase = @_oidc_saved_request_validation_phase if defined?(@_oidc_saved_request_validation_phase) end |
#stub_oidc_failure(message_key = :invalid_credentials) ⇒ Object
Stubs OmniAuth to simulate a strategy failure.
52 53 54 55 56 57 |
# File 'lib/activeadmin/oidc/test_helpers.rb', line 52 def stub_oidc_failure( = :invalid_credentials) OmniAuth.config.test_mode = true @_oidc_saved_request_validation_phase = OmniAuth.config.request_validation_phase OmniAuth.config.request_validation_phase = nil OmniAuth.config.mock_auth[:oidc] = end |
#stub_oidc_sign_in(sub: 'alice-sub', claims: {}) ⇒ Object
Stubs OmniAuth to return a successful OIDC auth hash. Merges the given claims with DEFAULT_CLAIMS.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/activeadmin/oidc/test_helpers.rb', line 29 def stub_oidc_sign_in(sub: 'alice-sub', claims: {}) merged = DEFAULT_CLAIMS.merge(claims.transform_keys(&:to_s)) OmniAuth.config.test_mode = true # OmniAuth 2.x still runs request_validation_phase in test mode # (mock_request_call, line 325 of strategy.rb). Disable it so # the CSRF check from omniauth-rails_csrf_protection doesn't # reject the mocked request. @_oidc_saved_request_validation_phase = OmniAuth.config.request_validation_phase OmniAuth.config.request_validation_phase = nil OmniAuth.config.mock_auth[:oidc] = OmniAuth::AuthHash.new( provider: 'oidc', uid: sub, info: { email: merged['email'], name: merged['name'], nickname: merged['preferred_username'] }, credentials: {}, extra: { raw_info: merged.merge('sub' => sub) } ) end |