omniauth-orcid 1.2.3 → 2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 353af87f1d370baacd6d609e4eca0b5fa388bcdf
4
- data.tar.gz: fd04e0e1500d68c43e7c8163f0398b94d076ec48
3
+ metadata.gz: bdc033017ce0638e8e20fbec70003539d806ec89
4
+ data.tar.gz: 8dcc4883295d1e26f5d50fcec5a633388f0ca13e
5
5
  SHA512:
6
- metadata.gz: fb3962e9eb0ef421998b825eaedd9729114cd9577559bf046c7b4da1128a1b706930e50259a126765b53776f2108fb8a17d01c05d6346e673c364b1fe9b24917
7
- data.tar.gz: ab041314860086b011f2184bbca5261e4443e3aeaccff6fdcb0075e30f2c1978369adb13139992aed2742c20208eb35d50333e4919afdcf7ecf49d7025df901c
6
+ metadata.gz: c364fee700aaf0781d9f38a886a9f78121f237033aefaad932a212d42e4953c755070d5e27e79cf380a39c9ce68773ef1139498f80e10cb6b6cfb4a0c103d732
7
+ data.tar.gz: a74e74f9c6d2522a6cea476b84a73764e05fd06cd08a03aceba3b64b20143eb286d4b26af27d28fb3378b16a1422a76d0df8b67f3a1e61d211cad0d104451867
data/README.md CHANGED
@@ -59,7 +59,7 @@ use OmniAuth::Builder do
59
59
  end
60
60
  ```
61
61
 
62
- `omniauth-orcid` sets the appropriate default scope depending on the `member` falg:
62
+ `omniauth-orcid` sets the appropriate default scope depending on the `member` flag:
63
63
 
64
64
  * non-member: `/authenticate`
65
65
  * member: `/read-limited /activities/update /person/update`
@@ -74,7 +74,14 @@ OmniAuth takes care of the OAuth external-authentication handshake or "dance". A
74
74
  "uid": "0000-0003-2012-0010",
75
75
  "info": {
76
76
  "name": "John Smith",
77
- "email": null
77
+ "email": "jsmith@example.com",
78
+ "first_name": "John",
79
+ "last_name": "Smith",
80
+ "location": "GB",
81
+ "description": "John Smith is the ...",
82
+ "urls": [
83
+ { "Blog": "http://blog.martinfenner.org" }
84
+ ]
78
85
  },
79
86
  "credentials": {
80
87
  "token": "e82938fa-a287-42cf-a2ce-f48ef68c9a35",
@@ -83,13 +90,32 @@ OmniAuth takes care of the OAuth external-authentication handshake or "dance". A
83
90
  "expires": true
84
91
  },
85
92
  "extra": {
93
+ "raw_info": {
94
+ "email": "jsmith@example.com",
95
+ "first_name": "John",
96
+ "last_name": "Smith",
97
+ "other_names": ["John Fitzgerald Smith"],
98
+ "location": "GB",
99
+ "description": "John Smith is the ...",
100
+ "urls": [
101
+ { "Blog": "http://blog.martinfenner.org" }
102
+ ],
103
+ "external_identifiers": [
104
+ { "type": "GitHub",
105
+ "value":"mfenner",
106
+ "url": "https://github.com/mfenner" }
107
+ ]
108
+ }
86
109
  }
87
110
  }
88
111
  ```
112
+ ject. Martin has a medical degree from the Free University of Berlin and is a Board-certified medical oncologist.", :location=>["DE"], :urls=>["http://blog.martinfenner.org"], :external_identifiers=>[{"type"=>"GitHub", "value"=>"mfenner", "url"=>"https://github.com/mfenner"}]}
113
+ ........
114
+
89
115
 
90
116
  You have to implement a callback handler to grab at least the `uid` from the hash and (typically) save it in a session. This effectively provides basic **Log in with your ORCID** functionality.
91
117
 
92
- Most likely, with the token in hand, you'll want to do something more sophisticated with the API, like retrieving profile data and do something cool with it. See the [API documentation](http://members.orcid.org/api/api-calls) for more details:
118
+ Most likely, with the token in hand, you'll want to do something more sophisticated with the API, like retrieving profile data and do something cool with it. See the [Basic Tutorial: Read data on ORCID record](http://members.orcid.org/api/tutorial/read-orcid-records) for more details.
93
119
 
94
120
  Here's how to get going with a couple of popular Rack-based frameworks:
95
121
 
@@ -133,10 +159,8 @@ ruby demo.rb
133
159
 
134
160
  ```
135
161
 
136
-
137
162
  ### Rails
138
163
 
139
-
140
164
  Add this to `config/initializers/omniauth.rb` to configure the strategy:
141
165
 
142
166
  ```ruby
@@ -168,13 +192,39 @@ class AuthenticationsController < ApplicationController
168
192
  end
169
193
  ```
170
194
 
195
+ Or use `omniauth-orcid` with the [Devise](https://github.com/plataformatec/devise)
196
+ authentication solution.
197
+
198
+ ```ruby
199
+ # in config/initializers/devise.rb
200
+
201
+ config.omniauth :orcid, ENV['ORCID_CLIENT_ID'],
202
+ ENV['ORCID_CLIENT_SECRET'],
203
+ member: ENV['ORCID_MEMBER'],
204
+ sandbox: ENV['ORCID_SANDBOX']
205
+ ```
206
+
207
+ ```ruby
208
+ # in app/models/user.rb
209
+
210
+ devise :omniauthable, :omniauth_providers => [:orcid]
211
+ ```
212
+
213
+ ```ruby
214
+ # in config/routes.rb
215
+
216
+ Rails.application.routes.draw do
217
+ devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
218
+ ```
219
+
220
+ And then add custom logic in `users/omniauth_callbacks`.
221
+
171
222
  ## More information
172
223
 
173
224
  * [ORCID Open Source Project](https://github.com/ORCID/ORCID-Source)
174
225
  * [Developer Wiki](https://github.com/ORCID/ORCID-Source/wiki)
175
226
  * [Technical community](http://orcid.org/about/community/orcid-technical-community)
176
227
 
177
-
178
228
  ## License
179
229
 
180
230
  The [MIT License](license.txt) (OSI approved, see more at http://www.opensource.org/licenses/mit-license.php)
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Orcid
3
- VERSION = "1.2.3"
3
+ VERSION = "2.0"
4
4
  end
5
5
  end
@@ -6,7 +6,7 @@ module OmniAuth
6
6
  module Strategies
7
7
  class ORCID < OmniAuth::Strategies::OAuth2
8
8
 
9
- API_VERSION = '1.2'
9
+ API_VERSION = '2.0'
10
10
 
11
11
  option :name, "orcid"
12
12
 
@@ -20,7 +20,6 @@ module OmniAuth
20
20
  :given_names,
21
21
  :family_names,
22
22
  :email,
23
- :orcid,
24
23
  :scope]
25
24
 
26
25
  args [:client_id, :client_secret]
@@ -37,7 +36,7 @@ module OmniAuth
37
36
  # available options at https://members.orcid.org/api/get-oauthauthorize
38
37
  def authorize_params
39
38
  super.tap do |params|
40
- %w[scope redirect_uri show_login lang given_names family_names email orcid].each do |v|
39
+ %w[scope redirect_uri show_login lang given_names family_names email].each do |v|
41
40
  if request.params[v]
42
41
  params[v.to_sym] = request.params[v]
43
42
  end
@@ -76,9 +75,9 @@ module OmniAuth
76
75
 
77
76
  def api_base_url
78
77
  if options[:sandbox]
79
- "http://pub.sandbox.orcid.org/v#{API_VERSION}"
78
+ "https://pub.sandbox.orcid.org/v#{API_VERSION}"
80
79
  else
81
- "http://pub.orcid.org/v#{API_VERSION}"
80
+ "https://pub.orcid.org/v#{API_VERSION}"
82
81
  end
83
82
  end
84
83
 
@@ -109,10 +108,11 @@ module OmniAuth
109
108
  uid { access_token.params["orcid"] }
110
109
 
111
110
  info do
112
- { name: raw_info[:name],
111
+ { name: access_token.params["name"],
113
112
  email: raw_info[:email],
114
113
  first_name: raw_info[:first_name],
115
114
  last_name: raw_info[:last_name],
115
+ location: raw_info[:location],
116
116
  description: raw_info[:description],
117
117
  urls: raw_info[:urls]
118
118
  }
@@ -123,31 +123,31 @@ module OmniAuth
123
123
  end
124
124
 
125
125
  def request_info
126
- client.request(:get, "#{api_base_url}/#{uid}/orcid-bio", headers: { accept: 'application/json' }).parsed || {}
126
+ @request_info || client.request(:get, "#{api_base_url}/#{uid}/person", headers: { accept: 'application/json' }).parsed || {}
127
127
  end
128
128
 
129
129
  def raw_info
130
- orcid_bio = request_info.fetch('orcid-profile', nil).to_h.fetch('orcid-bio', {})
131
-
132
- emails = orcid_bio.fetch('contact-details', nil).to_h.fetch('email', nil)
133
- email = nil
134
-
135
- if emails.is_a? Array
136
- emails.each do |e|
137
- next unless e['visibility'] == "PUBLIC"
138
- next unless e['verified']
139
- email = e['value']
140
- break
130
+ # retrieve all verified email addresses and include visibility (LIMITED vs. PUBLIC)
131
+ # and whether this is the primary email address
132
+ # all other information will in almost all cases be PUBLIC
133
+ emails = request_info.dig('emails', 'email')
134
+ .select { |e| e.fetch('verified') }
135
+ .map { |e| e.select { |k, | %w(email visibility primary).include? k } }
136
+
137
+ { first_name: request_info.dig('name', 'given-names', 'value'),
138
+ last_name: request_info.dig('name', 'family-name', 'value'),
139
+ other_names: request_info.dig('other-names', 'other-name').map { |o| o.fetch('content') },
140
+ description: request_info.dig('biography', 'content'),
141
+ location: request_info.dig('addresses', 'address').map { |a| a.dig('country', 'value') }.first,
142
+ email: emails.find { |e| e.fetch('primary') }.to_h.fetch('email'),
143
+ urls: request_info.dig('researcher-urls', 'researcher-url').map do |r|
144
+ { r.fetch("url-name", nil) => r.dig('url', 'value') }
145
+ end,
146
+ external_identifiers: request_info.dig('external-identifiers', 'external-identifier').map do |e|
147
+ { 'type' => e.fetch('external-id-type', nil),
148
+ 'value' => e.fetch('external-id-value', nil),
149
+ 'url' => e.dig('external-id-url', 'value') }
141
150
  end
142
- end
143
-
144
- { name: orcid_bio.fetch('personal-details', nil).to_h.fetch('credit-name', nil).to_h.fetch('value', nil),
145
- first_name: orcid_bio.fetch('personal-details', nil).to_h.fetch('given-names', nil).to_h.fetch('value', nil),
146
- last_name: orcid_bio.fetch('personal-details', nil).to_h.fetch('family-name', nil).to_h.fetch('value', nil),
147
- other_names: orcid_bio.fetch('personal-details', nil).to_h.fetch('other-names', nil).to_h.fetch('other-name', [{}]).map { |other_name| other_name.fetch('value', nil) },
148
- description: orcid_bio.fetch('biography', nil).to_h.fetch('value', nil),
149
- urls: {},
150
- email: email
151
151
  }
152
152
  end
153
153
 
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency 'bundler', '~> 1.0'
24
24
  s.add_development_dependency 'rspec', '~> 3.4'
25
25
  s.add_development_dependency 'rack-test', '~> 0.6.3'
26
- s.add_development_dependency 'webmock', '~> 1.22', '>= 1.22.3'
26
+ s.add_development_dependency 'webmock', '~> 3.0', '>= 3.0.1'
27
27
  s.add_development_dependency 'codeclimate-test-reporter', "~> 1.0.0"
28
28
  s.add_development_dependency 'simplecov'
29
29
  end
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "Martin Fenner",
3
+ "access_token": "123",
4
+ "expires_in": 631138518,
5
+ "token_type": "bearer",
6
+ "orcid": "0000-0001-6528-2027",
7
+ "scope": "/read-limited",
8
+ "refresh_token": "456"
9
+ }
@@ -0,0 +1,213 @@
1
+ {
2
+ "name": {
3
+ "credit-name": {
4
+ "value": "Martin Fenner"
5
+ },
6
+ "family-name": {
7
+ "value": "Fenner"
8
+ },
9
+ "last-modified-date": {
10
+ "value": 1500190904445
11
+ },
12
+ "created-date": {
13
+ "value": 1460669194723
14
+ },
15
+ "visibility": "PUBLIC",
16
+ "source": null,
17
+ "given-names": {
18
+ "value": "Martin"
19
+ },
20
+ "path": "0000-0001-6528-2027"
21
+ },
22
+ "last-modified-date": {
23
+ "value": 1500192622273
24
+ },
25
+ "researcher-urls": {
26
+ "researcher-url": [
27
+ {
28
+ "put-code": 42818,
29
+ "last-modified-date": {
30
+ "value": 1500192382862
31
+ },
32
+ "url": {
33
+ "value": "http://blog.martinfenner.org"
34
+ },
35
+ "created-date": {
36
+ "value": 1500192382862
37
+ },
38
+ "visibility": "PUBLIC",
39
+ "source": {
40
+ "source-orcid": {
41
+ "path": "0000-0001-6528-2027",
42
+ "host": "sandbox.orcid.org",
43
+ "uri": "http://sandbox.orcid.org/0000-0001-6528-2027"
44
+ },
45
+ "source-name": {
46
+ "value": "Martin Fenner"
47
+ },
48
+ "source-client-id": null
49
+ },
50
+ "display-index": 1,
51
+ "path": "/0000-0001-6528-2027/researcher-urls/42818",
52
+ "url-name": "Blog"
53
+ }
54
+ ],
55
+ "path": "/0000-0001-6528-2027/researcher-urls",
56
+ "last-modified-date": {
57
+ "value": 1500192382862
58
+ }
59
+ },
60
+ "other-names": {
61
+ "other-name": [
62
+ {
63
+ "put-code": 16403,
64
+ "last-modified-date": {
65
+ "value": 1500191301536
66
+ },
67
+ "created-date": {
68
+ "value": 1500191301534
69
+ },
70
+ "visibility": "PUBLIC",
71
+ "content": "Martin Hellmut Fenner",
72
+ "source": {
73
+ "source-orcid": {
74
+ "path": "0000-0001-6528-2027",
75
+ "host": "sandbox.orcid.org",
76
+ "uri": "http://sandbox.orcid.org/0000-0001-6528-2027"
77
+ },
78
+ "source-name": {
79
+ "value": "Martin Fenner"
80
+ },
81
+ "source-client-id": null
82
+ },
83
+ "display-index": 1,
84
+ "path": "/0000-0001-6528-2027/other-names/16403"
85
+ }
86
+ ],
87
+ "path": "/0000-0001-6528-2027/other-names",
88
+ "last-modified-date": {
89
+ "value": 1500191301536
90
+ }
91
+ },
92
+ "keywords": {
93
+ "path": "/0000-0001-6528-2027/keywords",
94
+ "keyword": [],
95
+ "last-modified-date": null
96
+ },
97
+ "path": "/0000-0001-6528-2027/person",
98
+ "external-identifiers": {
99
+ "path": "/0000-0001-6528-2027/external-identifiers",
100
+ "external-identifier": [
101
+ {
102
+ "external-id-value": "mfenner",
103
+ "put-code": 3882,
104
+ "last-modified-date": {
105
+ "value": 1499800792190
106
+ },
107
+ "external-id-relationship": "SELF",
108
+ "created-date": {
109
+ "value": 1499800792189
110
+ },
111
+ "external-id-type": "GitHub",
112
+ "source": {
113
+ "source-orcid": null,
114
+ "source-name": {
115
+ "value": "DataCite/ORCID Claim Tool"
116
+ },
117
+ "source-client-id": {
118
+ "path": "APP-127VAQ5PMV9OKM9F",
119
+ "host": "sandbox.orcid.org",
120
+ "uri": "http://sandbox.orcid.org/client/APP-127VAQ5PMV9OKM9F"
121
+ }
122
+ },
123
+ "visibility": "PUBLIC",
124
+ "display-index": 0,
125
+ "path": "/0000-0001-6528-2027/external-identifiers/3882",
126
+ "external-id-url": {
127
+ "value": "https://github.com/mfenner"
128
+ }
129
+ }
130
+ ],
131
+ "last-modified-date": {
132
+ "value": 1499800792190
133
+ }
134
+ },
135
+ "emails": {
136
+ "path": "/0000-0001-6528-2027/email",
137
+ "email": [
138
+ {
139
+ "put-code": null,
140
+ "verified": true,
141
+ "last-modified-date": {
142
+ "value": 1438058214424
143
+ },
144
+ "created-date": {
145
+ "value": 1438058214424
146
+ },
147
+ "visibility": "LIMITED",
148
+ "primary": true,
149
+ "source": {
150
+ "source-orcid": {
151
+ "path": "0000-0001-6528-2027",
152
+ "host": "sandbox.orcid.org",
153
+ "uri": "http://sandbox.orcid.org/0000-0001-6528-2027"
154
+ },
155
+ "source-name": {
156
+ "value": "Martin Fenner"
157
+ },
158
+ "source-client-id": null
159
+ },
160
+ "path": null,
161
+ "email": "martin.fenner@datacite.org"
162
+ }
163
+ ],
164
+ "last-modified-date": {
165
+ "value": 1438058214424
166
+ }
167
+ },
168
+ "biography": {
169
+ "content": "Martin Fenner is the DataCite Technical Director and manages the technical architecture for Datacite as well as DataCite\u2019s technical contributions for the EU-funded THOR project. From 2012 to 2015 he was the technical lead for the PLOS Article-Level Metrics project. Martin has a medical degree from the Free University of Berlin and is a Board-certified medical oncologist.",
170
+ "path": "/0000-0001-6528-2027/biography",
171
+ "created-date": {
172
+ "value": 1460669194724
173
+ },
174
+ "visibility": "PUBLIC",
175
+ "last-modified-date": {
176
+ "value": 1500206408067
177
+ }
178
+ },
179
+ "addresses": {
180
+ "path": "/0000-0001-6528-2027/address",
181
+ "address": [
182
+ {
183
+ "put-code": 4809,
184
+ "last-modified-date": {
185
+ "value": 1500192622273
186
+ },
187
+ "country": {
188
+ "value": "DE"
189
+ },
190
+ "created-date": {
191
+ "value": 1500192622273
192
+ },
193
+ "visibility": "PUBLIC",
194
+ "source": {
195
+ "source-orcid": {
196
+ "path": "0000-0001-6528-2027",
197
+ "host": "sandbox.orcid.org",
198
+ "uri": "http://sandbox.orcid.org/0000-0001-6528-2027"
199
+ },
200
+ "source-name": {
201
+ "value": "Martin Fenner"
202
+ },
203
+ "source-client-id": null
204
+ },
205
+ "display-index": 1,
206
+ "path": "/0000-0001-6528-2027/address/4809"
207
+ }
208
+ ],
209
+ "last-modified-date": {
210
+ "value": 1500192622273
211
+ }
212
+ }
213
+ }
@@ -47,7 +47,7 @@ describe OmniAuth::Strategies::ORCID do
47
47
  end
48
48
 
49
49
  it 'should have correct base url' do
50
- expect(subject.options.client_options.api_base_url).to eq('http://pub.orcid.org/v1.2')
50
+ expect(subject.options.client_options.api_base_url).to eq('https://pub.orcid.org/v2.0')
51
51
  end
52
52
  end
53
53
 
@@ -73,7 +73,7 @@ describe OmniAuth::Strategies::ORCID do
73
73
  end
74
74
 
75
75
  it 'should have correct base url' do
76
- expect(subject.options.client_options.api_base_url).to eq("http://pub.sandbox.orcid.org/v1.2")
76
+ expect(subject.options.client_options.api_base_url).to eq("https://pub.sandbox.orcid.org/v2.0")
77
77
  end
78
78
  end
79
79
 
@@ -176,26 +176,90 @@ describe OmniAuth::Strategies::ORCID do
176
176
  end
177
177
  end
178
178
 
179
- describe 'extra' do
180
- describe 'raw_info' do
181
- context 'when skip_info is true' do
182
- before { subject.options[:skip_info] = true }
179
+ context 'info' do
180
+ let(:params) { JSON.parse(IO.read(fixture_path + 'access_token.json')) }
181
+ let(:access_token) { OpenStruct.new("params" => params) }
182
+ let(:request_info) { JSON.parse(IO.read(fixture_path + 'request_info.json')) }
183
183
 
184
- it 'should not include raw_info' do
185
- expect(subject.extra).not_to have_key(:raw_info)
186
- end
187
- end
184
+ before do
185
+ allow(subject).to receive(:access_token).and_return(access_token)
186
+ allow(subject).to receive(:request_info).and_return(request_info)
187
+ end
188
+
189
+ it 'should return name' do
190
+ expect(subject.info[:name]).to eq('Martin Fenner')
191
+ end
192
+
193
+ it 'should return first_name' do
194
+ expect(subject.info[:first_name]).to eq('Martin')
195
+ end
196
+
197
+ it 'should return last_name' do
198
+ expect(subject.info[:last_name]).to eq('Fenner')
199
+ end
200
+
201
+ it 'should return description' do
202
+ expect(subject.info[:description]).to start_with('Martin Fenner is the DataCite Technical Director')
203
+ end
204
+
205
+ it 'should return location' do
206
+ expect(subject.info[:location]).to eq("DE")
207
+ end
208
+
209
+ it 'should return email' do
210
+ expect(subject.info[:email]).to eq( "martin.fenner@datacite.org")
211
+ end
212
+
213
+ it 'should return urls' do
214
+ expect(subject.info[:urls]).to eq([{"Blog"=>"http://blog.martinfenner.org"}])
215
+ end
216
+ end
217
+
218
+ context 'raw_info' do
219
+ let(:params) { JSON.parse(IO.read(fixture_path + 'access_token.json')) }
220
+ let(:access_token) { OpenStruct.new("params" => params) }
221
+ let(:request_info) { JSON.parse(IO.read(fixture_path + 'request_info.json')) }
188
222
 
189
- # context 'when skip_info is false' do
190
- # before { subject.options[:skip_info] = false }
223
+ before do
224
+ allow(subject).to receive(:access_token).and_return(access_token)
225
+ allow(subject).to receive(:request_info).and_return(request_info)
226
+ end
227
+
228
+ it 'should not include raw_info' do
229
+ subject.options[:skip_info] = true
230
+ expect(subject.extra).not_to have_key(:raw_info)
231
+ end
232
+
233
+ it 'should return first_name' do
234
+ expect(subject.extra.dig(:raw_info, :first_name)).to eq('Martin')
235
+ end
236
+
237
+ it 'should return last_name' do
238
+ expect(subject.extra.dig(:raw_info, :last_name)).to eq('Fenner')
239
+ end
240
+
241
+ it 'should return other_names' do
242
+ expect(subject.extra.dig(:raw_info, :other_names)).to eq(["Martin Hellmut Fenner"])
243
+ end
244
+
245
+ it 'should return description' do
246
+ expect(subject.extra.dig(:raw_info, :description)).to start_with('Martin Fenner is the DataCite Technical Director')
247
+ end
248
+
249
+ it 'should return location' do
250
+ expect(subject.extra.dig(:raw_info, :location)).to eq("DE")
251
+ end
252
+
253
+ it 'should return email' do
254
+ expect(subject.extra.dig(:raw_info, :email)).to eq( "martin.fenner@datacite.org")
255
+ end
256
+
257
+ it 'should return urls' do
258
+ expect(subject.extra.dig(:raw_info, :urls)).to eq([{"Blog"=>"http://blog.martinfenner.org"}])
259
+ end
191
260
 
192
- # it 'should include raw_info' do
193
- # stub_request(:get, "http://pub.orcid.org/v1.2/0000-0002-1825-0097/orcid-bio").
194
- # with(:headers => { 'Accept'=>'application/json' }).
195
- # to_return(:status => 200, :body => "", :headers => {})
196
- # expect(subject.extra[:raw_info]).to eq('sub' => '12345')
197
- # end
198
- # end
261
+ it 'should return external_identifiers' do
262
+ expect(subject.extra.dig(:raw_info, :external_identifiers)).to eq([{"type"=>"GitHub", "value"=>"mfenner", "url"=>"https://github.com/mfenner"}])
199
263
  end
200
264
  end
201
265
  end
@@ -11,6 +11,10 @@ require 'webmock/rspec'
11
11
  require 'omniauth'
12
12
  require 'omniauth-orcid'
13
13
 
14
+ def fixture_path
15
+ File.expand_path("../fixtures", __FILE__) + '/'
16
+ end
17
+
14
18
  RSpec.configure do |config|
15
19
  config.include WebMock::API
16
20
  config.include Rack::Test::Methods
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-orcid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gudmundur A. Thorisson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-05 00:00:00.000000000 Z
12
+ date: 2017-07-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth-oauth2
@@ -73,20 +73,20 @@ dependencies:
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '1.22'
76
+ version: '3.0'
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 1.22.3
79
+ version: 3.0.1
80
80
  type: :development
81
81
  prerelease: false
82
82
  version_requirements: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
- version: '1.22'
86
+ version: '3.0'
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.22.3
89
+ version: 3.0.1
90
90
  - !ruby/object:Gem::Dependency
91
91
  name: codeclimate-test-reporter
92
92
  requirement: !ruby/object:Gem::Requirement
@@ -138,6 +138,8 @@ files:
138
138
  - lib/omniauth/orcid/version.rb
139
139
  - lib/omniauth/strategies/orcid.rb
140
140
  - omniauth-orcid.gemspec
141
+ - spec/fixtures/access_token.json
142
+ - spec/fixtures/request_info.json
141
143
  - spec/omniauth/strategies/orcid_spec.rb
142
144
  - spec/spec_helper.rb
143
145
  homepage: https://github.com/datacite/omniauth-orcid