Use retry_with_error in GCECredentials#fetch_access_token

This commit is contained in:
Kazuhiro Serizawa 2017-02-25 21:45:07 +09:00
parent 3014e6ddaf
commit a1a9387c2b
2 changed files with 27 additions and 10 deletions

View File

@ -88,6 +88,8 @@ END
def fetch_access_token(options = {}) def fetch_access_token(options = {})
c = options[:connection] || Faraday.default_connection c = options[:connection] || Faraday.default_connection
c.headers = { 'Metadata-Flavor' => 'Google' } c.headers = { 'Metadata-Flavor' => 'Google' }
retry_with_error do
resp = c.get(COMPUTE_AUTH_TOKEN_URI) resp = c.get(COMPUTE_AUTH_TOKEN_URI)
case resp.status case resp.status
when 200 when 200
@ -103,3 +105,4 @@ END
end end
end end
end end
end

View File

@ -77,6 +77,20 @@ describe Google::Auth::GCECredentials do
.to raise_error Signet::AuthorizationError .to raise_error Signet::AuthorizationError
expect(stub).to have_been_requested expect(stub).to have_been_requested
end end
it 'should fail with Signet::AuthorizationError if request times out' do
allow_any_instance_of(Faraday::Connection).to receive(:get)
.and_raise(Faraday::TimeoutError)
expect { @client.fetch_access_token! }
.to raise_error Signet::AuthorizationError
end
it 'should fail with Signet::AuthorizationError if request fails' do
allow_any_instance_of(Faraday::Connection).to receive(:get)
.and_raise(Faraday::ConnectionFailed, nil)
expect { @client.fetch_access_token! }
.to raise_error Signet::AuthorizationError
end
end end
end end