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 }