Module: Verikloak::Rails::Testing::Helpers

Includes:
ClaimsBuilder, MiddlewareStub
Defined in:
lib/verikloak/rails/testing/helpers.rb

Overview

Top-level mix-in for RSpec example groups (request and policy specs). Composes ClaimsBuilder and MiddlewareStub, and adds Verikloak::Pundit::UserContext builders when the optional verikloak-pundit gem is loaded.

Constant Summary

Constants included from MiddlewareStub

MiddlewareStub::DEFAULT_STUB_TOKEN

Instance Method Summary collapse

Methods included from MiddlewareStub

#stub_verikloak_middleware

Methods included from ClaimsBuilder

#build_admin_claims, #build_jwt_claims, #build_user_claims

Instance Method Details

#build_admin_user_context(user, admin_group: '/admin', **options) ⇒ Verikloak::Pundit::UserContext

Convenience wrapper: admin claims + UserContext.

Parameters:

  • user (Object)

    user-like object used to build the claims

  • admin_group (String) (defaults to: '/admin')
  • options (Hash)

Returns:

  • (Verikloak::Pundit::UserContext)


43
44
45
# File 'lib/verikloak/rails/testing/helpers.rb', line 43

def build_admin_user_context(user, admin_group: '/admin', **options)
  build_pundit_user_context(build_admin_claims(user, admin_group: admin_group), **options)
end

#build_pundit_user_context(claims, **options) ⇒ Verikloak::Pundit::UserContext

Build a Verikloak::Pundit::UserContext for policy specs.

Matches verikloak-pundit's constructor (UserContext.new(claims, resource_client: nil, config: nil)), which wraps the JWT claims only — the application user object is not part of the context.

Parameters:

  • claims (Hash)

    JWT claims (string keys)

  • options (Hash)

    keyword options forwarded to UserContext.new (e.g. resource_client:, config:)

Returns:

  • (Verikloak::Pundit::UserContext)

Raises:

  • (RuntimeError)

    if verikloak-pundit is not loaded



29
30
31
32
33
34
35
# File 'lib/verikloak/rails/testing/helpers.rb', line 29

def build_pundit_user_context(claims, **options)
  unless defined?(::Verikloak::Pundit::UserContext)
    raise 'verikloak-pundit gem is not loaded; cannot build a UserContext'
  end

  ::Verikloak::Pundit::UserContext.new(claims, **options)
end

#build_user_user_context(user, user_group: '/user', **options) ⇒ Verikloak::Pundit::UserContext

Convenience wrapper: user claims + UserContext.

Parameters:

  • user (Object)

    user-like object used to build the claims

  • user_group (String) (defaults to: '/user')
  • options (Hash)

Returns:

  • (Verikloak::Pundit::UserContext)


53
54
55
# File 'lib/verikloak/rails/testing/helpers.rb', line 53

def build_user_user_context(user, user_group: '/user', **options)
  build_pundit_user_context(build_user_claims(user, user_group: user_group), **options)
end