Module: WebMock::HttpLibAdapters::Plugin::ConnectionMethods

Defined in:
lib/httpx/adapters/webmock.rb

Instance Method Summary collapse

Instance Method Details

#initializeObject



71
72
73
74
# File 'lib/httpx/adapters/webmock.rb', line 71

def initialize(*)
  super
  @mocked = true
end

#interestsObject



82
83
84
85
86
# File 'lib/httpx/adapters/webmock.rb', line 82

def interests
  return if @mocked

  super
end

#open?Boolean

Returns:

  • (Boolean)


76
77
78
79
80
# File 'lib/httpx/adapters/webmock.rb', line 76

def open?
  return true if @mocked

  super
end

#send(request) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/httpx/adapters/webmock.rb', line 88

def send(request)
  request_signature = Plugin.build_webmock_request_signature(request)
  WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)

  if (mock_response = WebMock::StubRegistry.instance.response_for_request(request_signature))
    response = Plugin.build_from_webmock_response(request, mock_response)
    WebMock::CallbackRegistry.invoke_callbacks({ lib: :httpx }, request_signature, mock_response)
    log { "mocking #{request.uri} with #{mock_response.inspect}" }
    request.response = response
    request.emit(:response, response)
  elsif WebMock.net_connect_allowed?(request_signature.uri)
    if WebMock::CallbackRegistry.any_callbacks?
      request.on(:response) do |resp|
        unless resp.is_a?(HTTPX::ErrorResponse)
          webmock_response = Plugin.build_webmock_response(request, resp)
          WebMock::CallbackRegistry.invoke_callbacks(
            { lib: :httpx, real_request: true }, request_signature,
            webmock_response
          )
        end
      end
    end
    @mocked = false
    emit(:unmock_connection, self)
    super
  else
    raise WebMock::NetConnectNotAllowedError, request_signature
  end
end