cartodb/spec/lib/carto/oauth/google/api_spec.rb
2020-06-15 10:58:47 +08:00

60 lines
1.5 KiB
Ruby

require 'spec_helper_min'
require 'carto/oauth/google/api'
describe Carto::Oauth::Google::Api do
before(:all) do
@valid_token = 'valid_token'
stub_api_request(200, 'userinfo_valid_response.json')
end
describe '#user_params' do
it 'parses the user data from google' do
expected_result = {
username: 'fulanito',
email: 'fulanito@example.com',
name: 'Fulano',
last_name: 'de Tal',
google_sign_in: true
}
api = Carto::Oauth::Google::Api.new(nil, @valid_token)
api.user_params.should eql expected_result
end
end
describe '#user' do
context 'with existing user' do
before(:all) do
@user = FactoryGirl.create(:carto_user, email: 'fulanito@example.com', username: 'fulanito')
end
after(:all) do
@user.destroy
end
it 'returns the user when the email matches' do
api = Carto::Oauth::Google::Api.new(nil, @valid_token)
api.user.should eql @user
end
end
it 'returns nil if there is no matching user' do
api = Carto::Oauth::Google::Api.new(nil, @valid_token)
api.user.should be_nil
end
end
def stub_api_request(code, response_filename)
response_path = File.join(File.dirname(__FILE__), response_filename)
response = File.open(response_path).read
Typhoeus.stub(/openidconnect\.googleapis\.com\/v1\/userinfo\?access_token=#{@valid_}/).and_return(
Typhoeus::Response.new(code: code, body: response)
)
end
end