File: key_store_spec.rb

package info (click to toggle)
ruby-omniauth 2.1.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 400 kB
  • sloc: ruby: 2,483; makefile: 7
file content (80 lines) | stat: -rw-r--r-- 2,049 bytes parent folder | download | duplicates (3)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
require 'helper'

RSpec.describe OmniAuth::KeyStore do
  let(:logger) { double('Logger') }

  around(:each) do |example|
    patched = monkey_patch_logger
    example.run
    remove_logger(patched)
  end

  context 'on Hashie < 3.5.0' do
    let(:version) { '3.4.0' }

    it 'does not log anything to the console' do
      stub_const('Hashie::VERSION', version)
      OmniAuth::KeyStore.override_logging
      expect(logger).not_to receive(:info)
      OmniAuth::KeyStore.new(:id => 1234)
    end
  end

  context 'on Hashie 3.5.0 and 3.5.1' do
    let(:version) { '3.5.0' }

    it 'does not log anything to the console' do
      stub_const('Hashie::VERSION', version)
      allow(OmniAuth::KeyStore).to receive(:respond_to?).with(:disable_warnings).and_return(false)
      OmniAuth::KeyStore.override_logging
      expect(logger).not_to receive(:info)
      OmniAuth::KeyStore.new(:id => 1234)
    end
  end

  context 'on Hashie 3.5.2+' do
    let(:version) { '3.5.2' }

    around(:each) do |example|
      patching = monkey_patch_unreleased_interface
      example.run
      remove_monkey_patch(patching)
    end

    it 'does not log anything to the console' do
      stub_const('Hashie::VERSION', version)
      OmniAuth::KeyStore.override_logging
      expect(logger).not_to receive(:info)
      OmniAuth::KeyStore.new(:id => 1234)
    end
  end

  def monkey_patch_unreleased_interface
    return false if OmniAuth::KeyStore.class.respond_to?(:disable_warnings, true)

    OmniAuth::KeyStore.define_singleton_method(:disable_warnings) {}
    OmniAuth::KeyStore.define_singleton_method(:log_built_in_message) { |*| }

    true
  end

  def monkey_patch_logger
    return unless Hashie.respond_to?(:logger)

    original_logger = Hashie.logger
    Hashie.logger = logger
    original_logger
  end

  def remove_logger(logger)
    return unless logger

    Hashie.logger = logger
  end

  def remove_monkey_patch(perform)
    return unless perform

    OmniAuth::KeyStore.singleton_class.__send__(:remove_method, :disable_warnings)
  end
end