Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix omniauth consistency #1938

Merged
merged 2 commits into from
Feb 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 47 additions & 47 deletions lib/faker/default/omniauth.rb
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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 = '[email protected]'
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