spec/concerns/authentication_spec.rb in mrkt-0.6.2 vs spec/concerns/authentication_spec.rb in mrkt-0.7.0
- old
+ new
@@ -20,9 +20,52 @@
expect { subject }.to raise_error(Mrkt::Errors::Error, 'Bad client credentials')
end
end
end
+ describe '#authenticate!' do
+ it 'should authenticate and then be authenticated?' do
+ expect(client.authenticated?).to_not be true
+ client.authenticate!
+ expect(client.authenticated?).to be true
+ end
+
+ context 'when the token has expired and @retry_authentication = true' do
+ before { remove_request_stub(@authentication_request_stub) }
+
+ let(:expired_authentication_stub) do
+ { access_token: SecureRandom.uuid, token_type: 'bearer', expires_in: 0, scope: 'RestClient' }
+ end
+
+ let(:valid_authentication_stub) do
+ { access_token: SecureRandom.uuid, token_type: 'bearer', expires_in: 1234, scope: 'RestClient' }
+ end
+
+ subject(:client) { Mrkt::Client.new(host: host, client_id: client_id, client_secret: client_secret, retry_authentication: true) }
+
+ before do
+ stub_request(:get, "https://#{host}/identity/oauth/token")
+ .with(query: { client_id: client_id, client_secret: client_secret, grant_type: 'client_credentials' })
+ .to_return(json_stub(expired_authentication_stub)).times(3).then
+ .to_return(json_stub(valid_authentication_stub))
+ end
+
+ it 'should retry until getting valid token and then be authenticated?' do
+ expect(client.authenticated?).to_not be true
+ client.authenticate!
+ expect(client.authenticated?).to be true
+ end
+
+ it 'should stop retrying after @retry_authentication_count tries and then raise an error' do
+ client = Mrkt::Client.new(host: host, client_id: client_id, client_secret: client_secret, retry_authentication: true, retry_authentication_count: 2)
+
+ expect(client.authenticated?).to_not be true
+
+ expect { client.authenticate! }.to raise_error(Mrkt::Errors::Error, 'Client not authenticated')
+ end
+ end
+ end
+
describe '#authenticated?' do
subject { client.authenticated? }
context 'before authentication' do
it { is_expected.to be_falsey }