Module: CommandTower::SpecHelper
- Defined in:
- lib/command_tower/spec_helper.rb
Instance Method Summary collapse
-
#extract_csrf_cookie(response) ⇒ Object
Helper to extract CSRF cookie from response.
-
#get_csrf_cookie_value ⇒ Object
Helper to get CSRF cookie value from request.
-
#get_login_token_and_cookie(user:, password:) ⇒ Hash
Helper method to get login token and cookie value Uses the login service directly to avoid controller double render issues.
-
#set_csrf_cookie!(token) ⇒ Object
Helper to set CSRF cookie in request.
-
#set_csrf_header!(token) ⇒ Object
Helper to set CSRF header in request.
- #set_jwt_token!(user:, with_reset: false, token: nil) ⇒ Object
- #unset_jwt_token! ⇒ Object
Instance Method Details
#extract_csrf_cookie(response) ⇒ Object
Helper to extract CSRF cookie from response
55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/command_tower/spec_helper.rb', line 55 def (response) = CommandTower.config.jwt..csrf. = response.headers["Set-Cookie"] return nil unless # Handle both string and array (when multiple cookies are set) = .is_a?(Array) ? : [] .each do |header| match = header.match(/#{}=([^;]+)/) return match[1] if match end nil end |
#get_csrf_cookie_value ⇒ Object
Helper to get CSRF cookie value from request
71 72 73 74 |
# File 'lib/command_tower/spec_helper.rb', line 71 def = CommandTower.config.jwt..csrf. @request.[] end |
#get_login_token_and_cookie(user:, password:) ⇒ Hash
Helper method to get login token and cookie value Uses the login service directly to avoid controller double render issues
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/command_tower/spec_helper.rb', line 24 def (user:, password:) # Authenticate user first result = CommandTower::Services::Auth::PlainText::Login.(identifier: user.username, password:) raise "Login failed: #{result.errors.map(&:code).join(", ")}" unless result.success? token = result.data[:token] expires_at = CommandTower.config.jwt.ttl.from_now.to_time.to_s = CommandTower.config.jwt..name # Create a mock response to set cookie mock_response = ActionDispatch::TestResponse.new CommandTower::Jwt::AuthorizationHelper.set_token(mock_response, token, expires_at: expires_at) = mock_response.headers["Set-Cookie"] = &.match(/#{}=([^;]+)/)&.[](1) { token:, cookie_value:, cookie_header: } end |
#set_csrf_cookie!(token) ⇒ Object
Helper to set CSRF cookie in request
43 44 45 46 |
# File 'lib/command_tower/spec_helper.rb', line 43 def (token) = CommandTower.config.jwt..csrf. @request.[] = token end |
#set_csrf_header!(token) ⇒ Object
Helper to set CSRF header in request
49 50 51 52 |
# File 'lib/command_tower/spec_helper.rb', line 49 def set_csrf_header!(token) csrf_header_name = CommandTower.config.jwt..csrf.header_name @request.headers[csrf_header_name] = token end |
#set_jwt_token!(user:, with_reset: false, token: nil) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/command_tower/spec_helper.rb', line 5 def set_jwt_token!(user:, with_reset: false, token: nil) if token.nil? result = CommandTower::Jwt::LoginCreate.(user:) token = result.token end @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearer #{token}" @request.headers[CommandTower::ApplicationController::AUTHENTICATION_WITH_RESET] = "true" if with_reset end |
#unset_jwt_token! ⇒ Object
15 16 17 |
# File 'lib/command_tower/spec_helper.rb', line 15 def unset_jwt_token! @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = nil end |