end
def perform_request(&block)
- Request.new(:get, @url).add_headers('Accept' => ACCEPT_HEADER).on_behalf_of(Account.representative).perform(&block)
+ Request.new(:get, @url).tap do |request|
+ request.add_headers('Accept' => ACCEPT_HEADER)
+
+ # In a real setting we want to sign all outgoing requests,
+ # in case the remote server has secure mode enabled and requires
+ # authentication on all resources. However, during development,
+ # sending request signatures with an inaccessible host is useless
+ # and prevents even public resources from being fetched, so
+ # don't do it
+
+ request.on_behalf_of(Account.representative) unless Rails.env.development?
+ end.perform(&block)
end
def process_response(response, terminal = false)
context 'when OpenSSL::SSL::SSLError is raised' do
before do
- allow(Request).to receive_message_chain(:new, :add_headers, :on_behalf_of, :perform).and_raise(OpenSSL::SSL::SSLError)
+ request = double()
+ allow(Request).to receive(:new).and_return(request)
+ allow(request).to receive(:add_headers)
+ allow(request).to receive(:on_behalf_of)
+ allow(request).to receive(:perform).and_raise(OpenSSL::SSL::SSLError)
end
it { is_expected.to be_nil }
context 'when HTTP::ConnectionError is raised' do
before do
- allow(Request).to receive_message_chain(:new, :add_headers, :on_behalf_of, :perform).and_raise(HTTP::ConnectionError)
+ request = double()
+ allow(Request).to receive(:new).and_return(request)
+ allow(request).to receive(:add_headers)
+ allow(request).to receive(:on_behalf_of)
+ allow(request).to receive(:perform).and_raise(HTTP::ConnectionError)
end
it { is_expected.to be_nil }