Browse Source

Re-use custom socket class for FASP requests (#37925)

pull/1389/head
David Roetzel 4 weeks ago committed by Misty De Meo
parent
commit
e53ad5fd0e
No known key found for this signature in database
GPG Key ID: 76CF846A2F674B2C
  1. 2
      app/lib/fasp/request.rb
  2. 2
      app/lib/request.rb
  3. 18
      spec/lib/fasp/request_spec.rb

2
app/lib/fasp/request.rb

@ -29,7 +29,7 @@ class Fasp::Request
response = HTTP
.headers(headers)
.use(http_signature: { key:, covered_components: COVERED_COMPONENTS })
.send(verb, url, body:)
.send(verb, url, body:, socket_class: ::Request::Socket)
validate!(response)
@provider.delivery_failure_tracker.track_success!

2
app/lib/request.rb

@ -349,5 +349,5 @@ class Request
end
end
private_constant :ClientLimit, :Socket, :ProxySocket
private_constant :ClientLimit
end

18
spec/lib/fasp/request_spec.rb

@ -78,6 +78,24 @@ RSpec.describe Fasp::Request do
expect(provider.delivery_failure_tracker.failures).to eq 1
end
end
context 'when the provider host name resolves to a private address' do
around do |example|
WebMock.disable!
example.run
WebMock.enable!
end
it 'raises Mastodon::ValidationError' do
resolver = instance_double(Resolv::DNS)
allow(resolver).to receive(:getaddresses).with('reqprov.example.com').and_return(%w(0.0.0.0 2001:db8::face))
allow(resolver).to receive(:timeouts=).and_return(nil)
allow(Resolv::DNS).to receive(:open).and_yield(resolver)
expect { subject.send(method, '/test_path') }.to raise_error(Mastodon::ValidationError)
end
end
end
describe '#get' do

Loading…
Cancel
Save