Skip to content

Commit

Permalink
Fix omniauth consistency (#1938)
Browse files Browse the repository at this point in the history
* Change omniauth linkedin return

Changed object keys to symbols instead of strings

* Change omniauth google id_info return

Changed object keys to symbols instead of strings
Changed to new hash syntax
  • Loading branch information
DouglasLutz committed Feb 21, 2020
1 parent ed7eed8 commit 8cebc87
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 114 deletions.
94 changes: 47 additions & 47 deletions lib/faker/default/omniauth.rb
Expand Up @@ -57,16 +57,16 @@ def google(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_G
hd: "#{Company.name.downcase}.com"
},
id_info: {
'iss' => 'accounts.google.com',
'at_hash' => Crypto.md5,
'email_verified' => true,
'sub' => Number.number(digits: 28).to_s,
'azp' => 'APP_ID',
'email' => auth.email,
'aud' => 'APP_ID',
'iat' => Time.forward.to_i,
'exp' => Time.forward.to_i,
'openid_id' => "https://www.google.com/accounts/o8/id?id=#{uid}"
iss: 'accounts.google.com',
at_hash: Crypto.md5,
email_verified: true,
sub: Number.number(digits: 28).to_s,
azp: 'APP_ID',
email: auth.email,
aud: 'APP_ID',
iat: Time.forward.to_i,
exp: Time.forward.to_i,
openid_id: "https://www.google.com/accounts/o8/id?id=#{uid}"
}
}
}
Expand Down Expand Up @@ -223,53 +223,53 @@ def linkedin(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT
industry = Commerce.department
url = "http://www.linkedin.com/in/#{first_name}#{last_name}"
{
'provider' => 'linkedin',
'uid' => uid,
'info' => {
'name' => auth.name,
'email' => auth.email,
'nickname' => auth.name,
'first_name' => auth.first_name,
'last_name' => auth.last_name,
'location' => location,
'description' => description,
'image' => image,
'phone' => PhoneNumber.phone_number,
'headline' => description,
'industry' => industry,
'urls' => {
'public_profile' => url
provider: 'linkedin',
uid: uid,
info: {
name: auth.name,
email: auth.email,
nickname: auth.name,
first_name: auth.first_name,
last_name: auth.last_name,
location: location,
description: description,
image: image,
phone: PhoneNumber.phone_number,
headline: description,
industry: industry,
urls: {
public_profile: url
}
},
'credentials' => {
'token' => token,
'secret' => secret
credentials: {
token: token,
secret: secret
},
'extra' => {
'access_token' => {
'token' => token,
'secret' => secret,
'consumer' => nil,
'params' => {
extra: {
access_token: {
token: token,
secret: secret,
consumer: nil,
params: {
oauth_token: token,
oauth_token_secret: secret,
oauth_expires_in: Time.forward.to_i,
oauth_authorization_expires_in: Time.forward.to_i
},
'response' => nil
response: nil
},
'raw_info' => {
'firstName' => auth.first_name,
'headline' => description,
'id' => uid,
'industry' => industry,
'lastName' => auth.last_name,
'location' => {
'country' => { 'code' => Address.country_code.downcase },
'name' => city_state.split(', ').first
raw_info: {
firstName: auth.first_name,
headline: description,
id: uid,
industry: industry,
lastName: auth.last_name,
location: {
country: { code: Address.country_code.downcase },
name: city_state.split(', ').first
},
'pictureUrl' => image,
'publicProfileUrl' => url
pictureUrl: image,
publicProfileUrl: url
}
}
}
Expand Down
134 changes: 67 additions & 67 deletions test/faker/default/test_faker_omniauth.rb
Expand Up @@ -39,14 +39,14 @@ def test_omniauth_google
assert_instance_of String, extra_raw_info[:birthday]
assert_equal 'en', extra_raw_info[:local]
assert_instance_of String, extra_raw_info[:hd]
assert_equal 'accounts.google.com', id_info['iss']
assert_instance_of String, id_info['at_hash']
assert [true, false].include? id_info['email_verified']
assert_equal 28, id_info['sub'].length
assert_equal 'APP_ID', id_info['azp']
assert_equal info[:email], id_info['email']
assert_equal 'APP_ID', id_info['aud']
assert_equal openid_id, id_info['openid_id']
assert_equal 'accounts.google.com', id_info[:iss]
assert_instance_of String, id_info[:at_hash]
assert [true, false].include? id_info[:email_verified]
assert_equal 28, id_info[:sub].length
assert_equal 'APP_ID', id_info[:azp]
assert_equal info[:email], id_info[:email]
assert_equal 'APP_ID', id_info[:aud]
assert_equal openid_id, id_info[:openid_id]

if RUBY_VERSION < '2.4.0'
assert_instance_of Fixnum, credentials[:expires_at]
Expand All @@ -55,15 +55,15 @@ def test_omniauth_google
end

if RUBY_VERSION < '2.4.0'
assert_instance_of Fixnum, id_info['iat']
assert_instance_of Fixnum, id_info[:iat]
else
assert_instance_of Integer, id_info['iat']
assert_instance_of Integer, id_info[:iat]
end

if RUBY_VERSION < '2.4.0'
assert_instance_of Fixnum, id_info['exp']
assert_instance_of Fixnum, id_info[:exp]
else
assert_instance_of Integer, id_info['exp']
assert_instance_of Integer, id_info[:exp]
end
end

Expand Down Expand Up @@ -95,7 +95,7 @@ def test_omniauth_google_with_email
assert_instance_of String, info[:email]
assert_equal custom_email, info[:email]
assert_equal custom_email, extra_raw_info[:email]
assert_equal custom_email, id_info['email']
assert_equal custom_email, id_info[:email]
end

def test_omniauth_google_with_uid
Expand Down Expand Up @@ -358,37 +358,37 @@ def test_omniauth_twitter_with_uid

def test_omniauth_linkedin
auth = @tester.linkedin
info = auth['info']
credentials = auth['credentials']
extra = auth['extra']
access_token = extra['access_token']
params = access_token['params']
raw_info = extra['raw_info']
first_name = info['first_name'].downcase
last_name = info['last_name'].downcase
info = auth[:info]
credentials = auth[:credentials]
extra = auth[:extra]
access_token = extra[:access_token]
params = access_token[:params]
raw_info = extra[:raw_info]
first_name = info[:first_name].downcase
last_name = info[:last_name].downcase
url = "http://www.linkedin.com/in/#{first_name}#{last_name}"

assert_equal 'linkedin', auth['provider']
assert_equal 6, auth['uid'].length
assert_equal 2, word_count(info['name'])
assert info['email'].match safe_email_regex(first_name, last_name)
assert_equal info['name'], info['nickname']
assert_instance_of String, info['first_name']
assert_instance_of String, info['last_name']
assert_equal 2, info['location'].split(', ').count
assert_instance_of String, info['description']
assert_instance_of String, info['image']
assert_instance_of String, info['phone']
assert_instance_of String, info['headline']
assert_instance_of String, info['industry']
assert_equal url, info['urls']['public_profile']
assert_instance_of String, credentials['token']
assert_instance_of String, credentials['secret']
assert_equal credentials['token'], access_token['token']
assert_equal credentials['secret'], access_token['secret']
refute access_token['consumer']
assert_equal credentials['token'], params[:oauth_token]
assert_equal credentials['secret'], params[:oauth_token_secret]
assert_equal 'linkedin', auth[:provider]
assert_equal 6, auth[:uid].length
assert_equal 2, word_count(info[:name])
assert info[:email].match safe_email_regex(first_name, last_name)
assert_equal info[:name], info[:nickname]
assert_instance_of String, info[:first_name]
assert_instance_of String, info[:last_name]
assert_equal 2, info[:location].split(', ').count
assert_instance_of String, info[:description]
assert_instance_of String, info[:image]
assert_instance_of String, info[:phone]
assert_instance_of String, info[:headline]
assert_instance_of String, info[:industry]
assert_equal url, info[:urls][:public_profile]
assert_instance_of String, credentials[:token]
assert_instance_of String, credentials[:secret]
assert_equal credentials[:token], access_token[:token]
assert_equal credentials[:secret], access_token[:secret]
refute access_token[:consumer]
assert_equal credentials[:token], params[:oauth_token]
assert_equal credentials[:secret], params[:oauth_token_secret]

if RUBY_VERSION < '2.4.0'
assert_instance_of Fixnum, params[:oauth_expires_in]
Expand All @@ -398,49 +398,49 @@ def test_omniauth_linkedin
assert_instance_of Integer, params[:oauth_authorization_expires_in]
end

refute access_token['response']
assert_equal info['first_name'], raw_info['firstName']
assert_equal info['headline'], raw_info['headline']
assert_equal auth['uid'], raw_info['id']
assert_equal info['industry'], raw_info['industry']
assert_equal info['last_name'], raw_info['lastName']
assert_instance_of String, raw_info['location']['country']['code']
assert_instance_of String, raw_info['location']['name']
assert_instance_of String, raw_info['pictureUrl']
assert_equal info['urls']['public_profile'], raw_info['publicProfileUrl']
refute access_token[:response]
assert_equal info[:first_name], raw_info[:firstName]
assert_equal info[:headline], raw_info[:headline]
assert_equal auth[:uid], raw_info[:id]
assert_equal info[:industry], raw_info[:industry]
assert_equal info[:last_name], raw_info[:lastName]
assert_instance_of String, raw_info[:location][:country][:code]
assert_instance_of String, raw_info[:location][:name]
assert_instance_of String, raw_info[:pictureUrl]
assert_equal info[:urls][:public_profile], raw_info[:publicProfileUrl]
end

def test_omniauth_linkedin_with_name
custom_name = 'Happy Gilmore'
first_name, last_name = custom_name.split
auth = @tester.linkedin(name: custom_name)
info = auth['info']

assert_equal 2, word_count(info['name'])
assert_instance_of String, info['name']
assert_equal custom_name, info['name']
assert info['email'].match safe_email_regex(first_name, last_name)
assert_equal custom_name, info['nickname']
assert_equal first_name, info['first_name']
assert_equal last_name, info['last_name']
info = auth[:info]

assert_equal 2, word_count(info[:name])
assert_instance_of String, info[:name]
assert_equal custom_name, info[:name]
assert info[:email].match safe_email_regex(first_name, last_name)
assert_equal custom_name, info[:nickname]
assert_equal first_name, info[:first_name]
assert_equal last_name, info[:last_name]
end

def test_omniauth_linkedin_with_email
custom_email = 'gilmore@happy.com'
auth = @tester.linkedin(email: custom_email)
info = auth['info']
info = auth[:info]

assert_equal custom_email, info['email']
assert_equal custom_email, info[:email]
end

def test_omniauth_linkedin_with_uid
custom_uid = '12345'
auth = @tester.linkedin(uid: custom_uid)
extra_raw_info = auth['extra']['raw_info']
extra_raw_info = auth[:extra][:raw_info]

assert_instance_of String, auth['uid']
assert_equal custom_uid, auth['uid']
assert_equal custom_uid, extra_raw_info['id']
assert_instance_of String, auth[:uid]
assert_equal custom_uid, auth[:uid]
assert_equal custom_uid, extra_raw_info[:id]
end

def test_omniauth_github
Expand Down

0 comments on commit 8cebc87

Please sign in to comment.