Fix not being able to resolve public resources in development environment (#13505)
This commit is contained in:
parent
be637146f3
commit
2744f61696
2 changed files with 22 additions and 3 deletions
|
@ -25,7 +25,18 @@ class FetchResourceService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def perform_request(&block)
|
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
|
end
|
||||||
|
|
||||||
def process_response(response, terminal = false)
|
def process_response(response, terminal = false)
|
||||||
|
|
|
@ -21,7 +21,11 @@ RSpec.describe FetchResourceService, type: :service do
|
||||||
|
|
||||||
context 'when OpenSSL::SSL::SSLError is raised' do
|
context 'when OpenSSL::SSL::SSLError is raised' do
|
||||||
before 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
|
end
|
||||||
|
|
||||||
it { is_expected.to be_nil }
|
it { is_expected.to be_nil }
|
||||||
|
@ -29,7 +33,11 @@ RSpec.describe FetchResourceService, type: :service do
|
||||||
|
|
||||||
context 'when HTTP::ConnectionError is raised' do
|
context 'when HTTP::ConnectionError is raised' do
|
||||||
before 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
|
end
|
||||||
|
|
||||||
it { is_expected.to be_nil }
|
it { is_expected.to be_nil }
|
||||||
|
|
Loading…
Reference in a new issue