Skip to content

Commit 616a865

Browse files
authored
Merge pull request #36 from dolfamli/main
Include verification timestamp in userinfo when requested in scope
2 parents 29f173e + 5adab2b commit 616a865

4 files changed

Lines changed: 40 additions & 18 deletions

File tree

lib/omniauth/login_dot_gov/userinfo.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ module LoginDotGov
1111
:social_security_number,
1212
:address,
1313
:phone,
14-
:phone_verified
14+
:phone_verified,
15+
:verified_at
1516
) do
1617
def initialize(
1718
uuid: nil,
@@ -24,7 +25,8 @@ def initialize(
2425
social_security_number: nil,
2526
address: nil,
2627
phone: nil,
27-
phone_verified: nil
28+
phone_verified: nil,
29+
verified_at: nil
2830
)
2931
self.uuid = uuid
3032
self.email = email
@@ -37,6 +39,7 @@ def initialize(
3739
self.address = address
3840
self.phone = phone
3941
self.phone_verified = phone_verified
42+
self.verified_at = verified_at
4043
end
4144

4245
def to_h

lib/omniauth/login_dot_gov/userinfo_request.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ def userinfo_from_response(response)
3333
social_security_number: parsed_body['social_security_number'],
3434
address: parsed_body['address'],
3535
phone: parsed_body['phone'],
36-
phone_verified: parsed_body['phone_verified']
36+
phone_verified: parsed_body['phone_verified'],
37+
verified_at: parsed_body['verified_at'] && Time.at(parsed_body['verified_at'].to_i)
3738
)
3839
end
3940

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module OmniAuth
22
module LoginDotGov
3-
VERSION = '2.1.0'.freeze
3+
VERSION = '2.2.0'.freeze
44
end
55
end

spec/omniauth/login_dot_gov/userinfo_request_spec.rb

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
expect(userinfo.email).to eq(email)
3737
expect(userinfo.email_verified).to eq(email_verified)
3838
expect(userinfo.all_emails).to be_nil
39+
expect(userinfo.verified_at).to be_nil
3940
end
4041

4142
context 'returns userinfo with all_emails' do
@@ -54,23 +55,40 @@
5455
expect(userinfo.all_emails).to eq(all_emails)
5556
end
5657
end
57-
end
5858

59-
context 'when the request fails' do
60-
before do
61-
stub_userinfo_request(
62-
body: 'Access Denied',
63-
status: 403,
64-
access_token: access_token
65-
)
59+
context 'returns userinfo with verified_at timestamp' do
60+
let(:verified_at) { 1723054856 }
61+
let(:response_body) do
62+
{
63+
sub: uuid,
64+
email: email,
65+
email_verified: email_verified,
66+
verified_at: verified_at
67+
}.to_json
68+
end
69+
70+
it 'returns verified_at' do
71+
userinfo = subject.request_userinfo
72+
expect(userinfo.verified_at).to eq(Time.at(1723054856))
73+
end
6674
end
6775

68-
it 'raises an error' do
69-
expect { subject.request_userinfo }.to raise_error(
70-
OmniAuth::LoginDotGov::UserinfoRequestError,
71-
'Userinfo request failed with status code: 403'
72-
)
76+
context 'when the request fails' do
77+
before do
78+
stub_userinfo_request(
79+
body: 'Access Denied',
80+
status: 403,
81+
access_token: access_token
82+
)
83+
end
84+
85+
it 'raises an error' do
86+
expect { subject.request_userinfo }.to raise_error(
87+
OmniAuth::LoginDotGov::UserinfoRequestError,
88+
'Userinfo request failed with status code: 403'
89+
)
90+
end
7391
end
7492
end
7593
end
76-
end
94+
end

0 commit comments

Comments
 (0)