summaryrefslogtreecommitdiff
path: root/spec/support/omniauth_strategy.rb
blob: 5d5ee7dc1db811ec525619df7c413a8c439323ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true

module StrategyHelpers
  include Rack::Test::Methods
  include ActionDispatch::Assertions::ResponseAssertions
  include Shoulda::Matchers::ActionController
  include OmniAuth::Test::StrategyTestCase

  def auth_hash
    last_request.env['omniauth.auth']
  end

  def self.without_test_mode
    original_mode = OmniAuth.config.test_mode
    original_on_failure = OmniAuth.config.on_failure

    OmniAuth.config.test_mode = false
    OmniAuth.config.on_failure = proc do |env|
      OmniAuth::FailureEndpoint.new(env).redirect_to_failure
    end

    yield
  ensure
    OmniAuth.config.test_mode = original_mode
    OmniAuth.config.on_failure = original_on_failure
  end
end

RSpec.configure do |config|
  config.include StrategyHelpers, type: :strategy

  config.around(type: :strategy) do |example|
    StrategyHelpers.without_test_mode do
      example.run
    end
  end
end