omniauth-orcid 1.0.27 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/omniauth/orcid/version.rb +1 -1
- data/lib/omniauth/strategies/orcid.rb +11 -8
- data/spec/omniauth/strategies/orcid_spec.rb +29 -15
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be8ac6054fc7fffbb4aff8dec4a87de75190f6cd
|
4
|
+
data.tar.gz: c79f88f018d30d56d6c3011bf0ab583a4577fe40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af6265b2e9d9ce3d3303bd47b0b2c4b4356bc12906732fbe463fef3f9cf486857b92084c4577340601215bb7deb84639ef0d59e9fb8df6551abe9cd98913a2d6
|
7
|
+
data.tar.gz: b160d02e565f93ba778bc529c7d46bab2c5ccbf52881a07855ae4d2f997f3aa32dba0749b4ca03a543b71266208ba63648c7f2eb78126e7e3b41fcd59ab9c0b6
|
@@ -91,28 +91,31 @@ module OmniAuth
|
|
91
91
|
uid { access_token.params["orcid"] }
|
92
92
|
|
93
93
|
info do
|
94
|
-
{ name:
|
94
|
+
{ name: raw_info[:name],
|
95
95
|
email: nil,
|
96
|
-
nickname: access_token.params["orcid"],
|
97
96
|
first_name: raw_info[:first_name],
|
98
97
|
last_name: raw_info[:last_name],
|
99
98
|
description: raw_info[:description],
|
100
99
|
urls: raw_info[:urls]
|
101
|
-
|
100
|
+
}
|
102
101
|
end
|
103
102
|
|
104
103
|
extra do
|
105
104
|
skip_info? ? {} : { :raw_info => raw_info }
|
106
105
|
end
|
107
106
|
|
107
|
+
def request_info
|
108
|
+
client.request(:get, "https://pub.orcid.org/v#{API_VERSION}/#{uid}/orcid-bio", headers: { accept: 'application/json' }).parsed || {}
|
109
|
+
end
|
110
|
+
|
108
111
|
def raw_info
|
109
|
-
|
110
|
-
orcid_bio = info.fetch('orcid-profile', {}).fetch('orcid-bio', {})
|
112
|
+
orcid_bio = request_info.fetch('orcid-profile', {}).fetch('orcid-bio', {})
|
111
113
|
|
112
|
-
{
|
114
|
+
{ name: orcid_bio.fetch('personal-details', {}).fetch('credit-name', {}).fetch('value', nil),
|
115
|
+
first_name: orcid_bio.fetch('personal-details', {}).fetch('given-names', {}).fetch('value', nil),
|
113
116
|
last_name: orcid_bio.fetch('personal-details', {}).fetch('family-name', {}).fetch('value', nil),
|
114
|
-
other_names: orcid_bio.fetch('personal-details', {}).fetch('other-names',
|
115
|
-
description:
|
117
|
+
other_names: orcid_bio.fetch('personal-details', {}).fetch('other-names', {}).fetch('other-name', [{}]).map { |other_name| other_name.fetch('value', nil) },
|
118
|
+
description: orcid_bio.fetch('biography', {}).fetch('value', nil),
|
116
119
|
urls: {}
|
117
120
|
}
|
118
121
|
end
|
@@ -23,35 +23,49 @@ describe OmniAuth::Strategies::ORCID do
|
|
23
23
|
|
24
24
|
describe 'uid' do
|
25
25
|
before do
|
26
|
-
allow(subject).to receive(:
|
26
|
+
allow(subject).to receive(:request_info).and_return(request_info_hash)
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'should return the uid' do
|
30
|
-
expect(subject.uid).to eq(
|
30
|
+
expect(subject.uid).to eq(1)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
describe 'info' do
|
35
35
|
before do
|
36
|
-
allow(subject).to receive(:
|
36
|
+
allow(subject).to receive(:request_info).and_return(request_info_hash)
|
37
37
|
end
|
38
38
|
|
39
|
-
it 'should
|
40
|
-
expect(subject.info[:name]).to eq(
|
39
|
+
it 'should return name' do
|
40
|
+
expect(subject.info[:name]).to eq("Martin Fenner")
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should return first_name' do
|
44
|
+
expect(subject.info[:first_name]).to eq("Martin")
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should return last_name' do
|
48
|
+
expect(subject.info[:last_name]).to eq("Fenner")
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should return description' do
|
52
|
+
expect(subject.info[:description]).to eq("Martin Fenner is the DataCite Technical Director and manages the technical architecture for Datacite as well as DataCite’s technical contributions for the EU-funded THOR project.. From 2012 to 2015 he was technical lead for the PLOS Article-Level Metrics project. He served on the Board of the Open Researcher and Contributor ID (ORCID) initiative from 2010-2012, and worked for ORCID EU in the EC-funded ODIN project from 2012 to 2013. Martin has a medical degree from the Free University of Berlin and is a Board-certified medical oncologist.")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe 'raw_info' do
|
57
|
+
before do
|
58
|
+
allow(subject).to receive(:request_info).and_return(request_info_hash)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should return other_names' do
|
62
|
+
expect(subject.raw_info[:other_names]).to eq([" Martin Hellmut Fenner", "M Fenner", "MH Fenner", "Martin H. Fenner"])
|
41
63
|
end
|
42
64
|
end
|
43
65
|
end
|
44
66
|
|
45
67
|
private
|
46
68
|
|
47
|
-
def
|
48
|
-
{
|
49
|
-
"name" => "Josiah Carberry",
|
50
|
-
"access_token" => "e6394ba4-34bd-43a8-8c3d-a99752fe0bf9",
|
51
|
-
"expires_in" => 631138518,
|
52
|
-
"token_type" => "bearer",
|
53
|
-
"orcid" => "0000-0002-1825-0097",
|
54
|
-
"scope" => "/authenticate",
|
55
|
-
"refresh_token" => "c07df09f-2015-4b88-a387-61b7e2a89fb0"
|
56
|
-
}
|
69
|
+
def request_info_hash
|
70
|
+
{ 'message-version' => '1.2', 'orcid-profile' => { 'orcid' => nil, 'orcid-id' => nil, 'orcid-identifier' => { 'value' => nil, 'uri' => 'http://orcid.org/0000-0003-1419-2405', 'path' => '0000-0003-1419-2405', 'host' => 'orcid.org' }, 'orcid-deprecated' => nil, 'orcid-preferences' => { 'locale' => 'EN' }, 'orcid-history' => { 'creation-method' => 'WEBSITE', 'completion-date' => { 'value' => 1_349_732_964_340 }, 'submission-date' => { 'value' => 1_349_729_360_270 }, 'last-modified-date' => { 'value' => 1_446_719_619_721 }, 'claimed' => { 'value' => true }, 'source' => nil, 'deactivation-date' => nil, 'verified-email' => { 'value' => true }, 'verified-primary-email' => { 'value' => true }, 'visibility' => nil }, 'orcid-bio' => { 'personal-details' => { 'given-names' => { 'value' => 'Martin' }, 'family-name' => { 'value' => 'Fenner' }, 'credit-name' => { 'value' => 'Martin Fenner', 'visibility' => 'PUBLIC' }, 'other-names' => { 'other-name' => [{ 'value' => ' Martin Hellmut Fenner' }, { 'value' => 'M Fenner' }, { 'value' => 'MH Fenner' }, { 'value' => 'Martin H. Fenner' }], 'visibility' => 'PUBLIC' } }, 'biography' => { 'value' => 'Martin Fenner is the DataCite Technical Director and manages the technical architecture for Datacite as well as DataCite’s technical contributions for the EU-funded THOR project.. From 2012 to 2015 he was technical lead for the PLOS Article-Level Metrics project. He served on the Board of the Open Researcher and Contributor ID (ORCID) initiative from 2010-2012, and worked for ORCID EU in the EC-funded ODIN project from 2012 to 2013. Martin has a medical degree from the Free University of Berlin and is a Board-certified medical oncologist.', 'visibility' => 'PUBLIC' }, 'researcher-urls' => { 'researcher-url' => [{ 'url-name' => { 'value' => 'Blog' }, 'url' => { 'value' => 'http://blog.martinfenner.org' } }, { 'url-name' => { 'value' => 'Twitter' }, 'url' => { 'value' => 'http://twitter.com/mfenner' } }, { 'url-name' => { 'value' => 'My SciENCV' }, 'url' => { 'value' => 'http://www.ncbi.nlm.nih.gov/myncbi/mfenner/cv/1413/' } }], 'visibility' => 'PUBLIC' }, 'contact-details' => { 'email' => [], 'address' => { 'country' => { 'value' => 'DE', 'visibility' => 'PUBLIC' } } }, 'keywords' => nil, 'external-identifiers' => { 'external-identifier' => [{ 'orcid' => nil, 'external-id-orcid' => nil, 'external-id-common-name' => { 'value' => 'ISNI' }, 'external-id-reference' => { 'value' => '000000035060549X' }, 'external-id-url' => { 'value' => 'http://isni.org/000000035060549X' }, 'external-id-source' => nil, 'source' => { 'source-orcid' => { 'value' => nil, 'uri' => 'http://orcid.org/0000-0003-0412-1857', 'path' => '0000-0003-0412-1857', 'host' => 'orcid.org' }, 'source-client-id' => nil, 'source-name' => nil, 'source-date' => nil } }, { 'orcid' => nil, 'external-id-orcid' => nil, 'external-id-common-name' => { 'value' => 'Scopus Author ID' }, 'external-id-reference' => { 'value' => '7006600825' }, 'external-id-url' => { 'value' => 'http://www.scopus.com/inward/authorDetails.url?authorID=7006600825&partnerID=MN8TOARS' }, 'external-id-source' => nil, 'source' => { 'source-orcid' => { 'value' => nil, 'uri' => 'http://orcid.org/0000-0002-5982-8983', 'path' => '0000-0002-5982-8983', 'host' => 'orcid.org' }, 'source-client-id' => nil, 'source-name' => nil, 'source-date' => nil } }], 'visibility' => 'PUBLIC' }, 'delegation' => nil, 'scope' => nil }, 'orcid-activities' => nil, 'orcid-internal' => nil, 'type' => 'USER', 'group-type' => nil, 'client-type' => nil }, 'orcid-search-results' => nil, 'error-desc' => nil }
|
57
71
|
end
|