121 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| require 'spec_helper'
 | |
| 
 | |
| require 'google/api_client/auth/storage'
 | |
| 
 | |
| describe Google::APIClient::Storage do
 | |
|   let(:root_path) { File.expand_path(File.join(__FILE__, '..', '..', '..')) }
 | |
|   let(:json_file) { File.expand_path(File.join(root_path, 'fixtures', 'files', 'auth_stored_credentials.json')) }
 | |
| 
 | |
|   let(:store) { double }
 | |
|   let(:client_stub) { double }
 | |
|   subject { Google::APIClient::Storage.new(store) }
 | |
| 
 | |
|   describe 'authorize' do
 | |
|     it 'should authorize' do
 | |
|       expect(subject).to respond_to(:authorization)
 | |
|       expect(subject.store).to be == store
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe 'authorize' do
 | |
|     describe 'with credentials' do
 | |
| 
 | |
|       it 'should initialize a new OAuth Client' do
 | |
|         expect(subject).to receive(:load_credentials).and_return({:first => 'a dummy'})
 | |
|         expect(client_stub).to receive(:issued_at=)
 | |
|         expect(client_stub).to receive(:expired?).and_return(false)
 | |
|         expect(Signet::OAuth2::Client).to receive(:new).and_return(client_stub)
 | |
|         expect(subject).not_to receive(:refresh_authorization)
 | |
|         subject.authorize
 | |
|       end
 | |
| 
 | |
|       it 'should refresh authorization' do
 | |
|         expect(subject).to receive(:load_credentials).and_return({:first => 'a dummy'})
 | |
|         expect(client_stub).to receive(:issued_at=)
 | |
|         expect(client_stub).to receive(:expired?).and_return(true)
 | |
|         expect(Signet::OAuth2::Client).to receive(:new).and_return(client_stub)
 | |
|         expect(subject).to receive(:refresh_authorization)
 | |
|         auth = subject.authorize
 | |
|         expect(auth).to be == subject.authorization
 | |
|         expect(auth).not_to be_nil
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     describe 'without credentials' do
 | |
| 
 | |
|       it 'should return nil' do
 | |
|         expect(subject.authorization).to be_nil
 | |
|         expect(subject).to receive(:load_credentials).and_return({})
 | |
|         expect(subject.authorize).to be_nil
 | |
|         expect(subject.authorization).to be_nil
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe 'write_credentials' do
 | |
|     it 'should call store to write credentials' do
 | |
|       authorization_stub = double
 | |
|       expect(authorization_stub).to receive(:refresh_token).and_return(true)
 | |
|       expect(subject).to receive(:credentials_hash)
 | |
|       expect(subject.store).to receive(:write_credentials)
 | |
|       subject.write_credentials(authorization_stub)
 | |
|       expect(subject.authorization).to be == authorization_stub
 | |
|     end
 | |
| 
 | |
|     it 'should not call store to write credentials' do
 | |
|       expect(subject).not_to receive(:credentials_hash)
 | |
|       expect(subject.store).not_to receive(:write_credentials)
 | |
|       expect {
 | |
|         subject.write_credentials()
 | |
|       }.not_to raise_error
 | |
|     end
 | |
|     it 'should not call store to write credentials' do
 | |
|       expect(subject).not_to receive(:credentials_hash)
 | |
|       expect(subject.store).not_to receive(:write_credentials)
 | |
|       expect {
 | |
|         subject.write_credentials('something')
 | |
|       }.not_to raise_error
 | |
|     end
 | |
| 
 | |
|   end
 | |
| 
 | |
|   describe 'refresh_authorization' do
 | |
|     it 'should call refresh and write credentials' do
 | |
|       expect(subject).to receive(:write_credentials)
 | |
|       authorization_stub = double
 | |
|       expect(subject).to receive(:authorization).and_return(authorization_stub)
 | |
|       expect(authorization_stub).to receive(:refresh!).and_return(true)
 | |
|       subject.refresh_authorization
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe 'load_credentials' do
 | |
|     it 'should call store to load credentials' do
 | |
|       expect(subject.store).to receive(:load_credentials)
 | |
|       subject.send(:load_credentials)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe 'credentials_hash' do
 | |
|     it 'should return an hash' do
 | |
|       authorization_stub = double
 | |
|       expect(authorization_stub).to receive(:access_token)
 | |
|       expect(authorization_stub).to receive(:client_id)
 | |
|       expect(authorization_stub).to receive(:client_secret)
 | |
|       expect(authorization_stub).to receive(:expires_in)
 | |
|       expect(authorization_stub).to receive(:refresh_token)
 | |
|       expect(authorization_stub).to receive(:issued_at).and_return('100')
 | |
|       allow(subject).to receive(:authorization).and_return(authorization_stub)
 | |
|       credentials = subject.send(:credentials_hash)
 | |
|       expect(credentials).to include(:access_token)
 | |
|       expect(credentials).to include(:authorization_uri)
 | |
|       expect(credentials).to include(:client_id)
 | |
|       expect(credentials).to include(:client_secret)
 | |
|       expect(credentials).to include(:expires_in)
 | |
|       expect(credentials).to include(:refresh_token)
 | |
|       expect(credentials).to include(:token_credential_uri)
 | |
|       expect(credentials).to include(:issued_at)
 | |
|     end
 | |
|   end
 | |
| end
 |