60 lines
1.5 KiB
Ruby
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
|