Sha256: 47b006614709031447bed329d79a76e66b1629e9d0e8f7ca8121d239c1b49e89
Contents?: true
Size: 1.64 KB
Versions: 5
Compression:
Stored size: 1.64 KB
Contents
require './lib/dagger' require 'rspec/mocks' require 'rspec/expectations' describe 'Retries' do def send_request Dagger.get('http://foobar.com/test', opts) end let(:fake_http) { double('Net::HTTP', started?: true, "keep_alive_timeout=": true, "open_timeout=": true, "read_timeout=": true) } let(:fake_resp) { double('Net::HTTPResponse', code: 200, body: 'foo') } before do allow(Net::HTTP).to receive(:new).at_least(:once).and_return(fake_http) allow(fake_http).to receive(:verify_mode=).and_return(true) end describe 'on ECONNREFUSED' do context 'if no retries option passed' do let(:opts) { {} } it 'does not retry request, and raises error' do expect(fake_http).to receive(:request).once.and_raise(Errno::ECONNREFUSED) expect { send_request }.to raise_error(Errno::ECONNREFUSED) end end context 'if retries is 1' do let(:opts) { { retries: 1, retry_wait: 1 } } context 'and it still fails' do it 'sends a second request, and raises error' do expect(fake_http).to receive(:request).twice.and_raise(Errno::ECONNREFUSED) expect { send_request }.to raise_error(Errno::ECONNREFUSED) end end context 'and then it works' do it 'sends a second request, and does not raise error' do expect(fake_http).to receive(:request).once.and_raise(Errno::ECONNREFUSED) expect(fake_http).to receive(:request).once.and_return(fake_resp) allow(fake_resp).to receive(:[]).with('Content-Type').and_return('text/plain') expect(send_request.body).to eq('foo') end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
dagger-2.3.1 | spec/retries_spec.rb |
dagger-2.3.0 | spec/retries_spec.rb |
dagger-2.2.0 | spec/retries_spec.rb |
dagger-2.1.1 | spec/retries_spec.rb |
dagger-2.0.1 | spec/retries_spec.rb |