devise_g5_authenticatable 0.2.3 → 0.2.4.beta

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: e876e0598bb033c7dfd71a0347876195f46d54f4
4
- data.tar.gz: 484b9c0ddcdd2a097eccc75b75427c1b3e9b18d5
3
+ metadata.gz: 8ad97f4949c57fec123b19a0cb9dfd4d562474a4
4
+ data.tar.gz: 74ed2ef0d3351498bb3b8a3b16e1b7bc88949c25
5
5
  SHA512:
6
- metadata.gz: 660c04a4ca12614fa1628508d8ab0e53c43fae373919a6b1f7624213fcfee6b428cbe692766b1c4df9a7cc26f1bd9a20559bf53d1d6d09ad13d400354b47faf4
7
- data.tar.gz: f88074acc7025e35ec2fafe7fe3ba5a608f898a8a3fc9addb2ebb408536f0ef4e71f18bd809cccc84d85d51a0ed21dd7a36fa2a475c5e4a855ee5ac219f58063
6
+ metadata.gz: 86fe1453a3d4b41adaae28e90b1debc6a3c5169682ccdf27d8c82de6e2d882b14678d8a98de03edccde482b53e19cefa1de8df919dc35552976ffd36111f3771
7
+ data.tar.gz: 303fad6ef8fc9f7c01b63152d7c5836ed4b2e8cf1abf262a258935142512416b6be0a53c9d9610906f62448a77432c45ef5cf408ce4699d868635119cc083975
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## v0.2.4.beta (2015-12-03)
2
+ * Enforces uniqueness of email address in when looking for an email without UID
3
+
1
4
  ## v0.2.3 (2015-11-30)
2
5
  * Pins version of devise to 3.5.1 due - https://github.com/plataformatec/devise/issues/3705
3
6
  * Pins version of omniauth-g5 to v0.3.1 due - https://github.com/G5/omniauth-g5/pull/10
@@ -72,7 +72,9 @@ module Devise
72
72
 
73
73
  module ClassMethods
74
74
  def find_for_g5_oauth(oauth_data)
75
- find_by_provider_and_uid(oauth_data.provider.to_s, oauth_data.uid.to_s)
75
+ found_user = find_by_provider_and_uid(oauth_data.provider.to_s, oauth_data.uid.to_s)
76
+ return found_user if found_user.present?
77
+ find_by_email_and_provider(oauth_data.info.email, oauth_data.provider.to_s)
76
78
  end
77
79
 
78
80
  def find_and_update_for_g5_oauth(oauth_data)
@@ -1,3 +1,3 @@
1
1
  module DeviseG5Authenticatable
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4.beta'
3
3
  end
@@ -7,19 +7,18 @@ describe Devise::Models::G5Authenticatable do
7
7
  let(:model) { model_class.new(attributes) }
8
8
  let(:attributes) { Hash.new }
9
9
 
10
-
11
10
  describe '#save!' do
12
11
  subject(:save) { model.save! }
13
12
 
14
13
  context 'when model is new' do
15
14
  let(:attributes) do
16
- {email: email,
17
- password: password,
18
- password_confirmation: password_confirmation,
19
- provider: provider,
20
- uid: uid,
21
- current_password: current_password,
22
- updated_by: updated_by}
15
+ { email: email,
16
+ password: password,
17
+ password_confirmation: password_confirmation,
18
+ provider: provider,
19
+ uid: uid,
20
+ current_password: current_password,
21
+ updated_by: updated_by }
23
22
  end
24
23
 
25
24
  let(:email) { 'test.email@test.host' }
@@ -158,10 +157,10 @@ describe Devise::Models::G5Authenticatable do
158
157
  let(:model) { create(:user) }
159
158
 
160
159
  let(:params) do
161
- {current_password: current_password,
162
- password: updated_password,
163
- password_confirmation: updated_password,
164
- email: updated_email}
160
+ { current_password: current_password,
161
+ password: updated_password,
162
+ password_confirmation: updated_password,
163
+ email: updated_email }
165
164
  end
166
165
 
167
166
  let(:current_password) {}
@@ -173,8 +172,9 @@ describe Devise::Models::G5Authenticatable do
173
172
 
174
173
  let(:password_validator) { double(:auth_password_validator) }
175
174
  before do
176
- allow(Devise::G5::AuthPasswordValidator).to receive(:new).
177
- and_return(password_validator)
175
+ allow(Devise::G5::AuthPasswordValidator)
176
+ .to receive(:new)
177
+ .and_return(password_validator)
178
178
  end
179
179
 
180
180
  context 'with valid current password' do
@@ -266,13 +266,15 @@ describe Devise::Models::G5Authenticatable do
266
266
  let(:password) { 'foobarbaz' }
267
267
 
268
268
  it 'should change the password to nil' do
269
- expect { clean_up_passwords }.to change { model.password }.
270
- from(password).to(nil)
269
+ expect { clean_up_passwords }
270
+ .to change { model.password }
271
+ .from(password).to(nil)
271
272
  end
272
273
 
273
274
  it 'should change the password_confirmation to nil' do
274
- expect { clean_up_passwords }.to change { model.password_confirmation }.
275
- from(password).to(nil)
275
+ expect { clean_up_passwords }
276
+ .to change { model.password_confirmation }
277
+ .from(password).to(nil)
276
278
  end
277
279
  end
278
280
 
@@ -326,13 +328,10 @@ describe Devise::Models::G5Authenticatable do
326
328
  subject(:find_and_update) { model_class.find_and_update_for_g5_oauth(auth_data) }
327
329
 
328
330
  let(:auth_data) do
329
- OmniAuth::AuthHash.new({
330
- provider: 'g5',
331
- uid: '123999',
332
- info: {name: 'Foo Bar',
333
- email: 'foo@bar.com'},
334
- credentials: {token: 'abc123'}
335
- })
331
+ OmniAuth::AuthHash.new(provider: 'g5',
332
+ uid: '123999',
333
+ info: { name: 'Foo Bar', email: 'foo@bar.com' },
334
+ credentials: { token: 'abc123' })
336
335
  end
337
336
 
338
337
  context 'when model exists' do
@@ -364,19 +363,17 @@ describe Devise::Models::G5Authenticatable do
364
363
  subject(:find_for_g5_oauth) { model_class.find_for_g5_oauth(auth_data) }
365
364
 
366
365
  let(:auth_data) do
367
- OmniAuth::AuthHash.new({
368
- provider: 'g5',
369
- uid: uid,
370
- info: {name: 'Foo Bar',
371
- email: 'foo@bar.com'},
372
- credentials: {token: 'abc123'}
373
- })
366
+ OmniAuth::AuthHash.new(provider: 'g5',
367
+ uid: uid,
368
+ info: { name: 'Foo Bar', email: 'foo@bar.com' },
369
+ credentials: { token: 'abc123' })
374
370
  end
375
371
 
376
372
  context 'when model exists' do
377
373
  let!(:model) do
378
- create(:user, provider: auth_data.provider,
379
- uid: uid.to_s)
374
+ create(:user, email: 'foo@bar.com',
375
+ provider: auth_data.provider,
376
+ uid: uid.to_s)
380
377
  end
381
378
 
382
379
  context 'when auth data uid is an integer' do
@@ -404,6 +401,34 @@ describe Devise::Models::G5Authenticatable do
404
401
  end
405
402
  end
406
403
 
404
+ context 'given a model with invalid arguments' do
405
+ let(:uid) { 42 }
406
+
407
+ context 'having an un-existing uid' do
408
+ let!(:model) do
409
+ create(:user, email: 'foo@bar.com',
410
+ provider: auth_data.provider,
411
+ uid: 0)
412
+ end
413
+
414
+ it 'finds the record by email address' do
415
+ expect(find_for_g5_oauth).to eq(model)
416
+ end
417
+ end
418
+
419
+ context 'having an un-existing uid' do
420
+ let!(:model) do
421
+ create(:user, email: 'foo@bar.com',
422
+ provider: auth_data.provider,
423
+ uid: 0)
424
+ end
425
+
426
+ it 'finds the record by email address' do
427
+ expect(find_for_g5_oauth).to eq(model)
428
+ end
429
+ end
430
+ end
431
+
407
432
  context 'when model does not exist' do
408
433
  let(:uid) { '42' }
409
434
 
@@ -421,13 +446,10 @@ describe Devise::Models::G5Authenticatable do
421
446
  subject(:update_g5_credentials) { model.update_g5_credentials(auth_data) }
422
447
 
423
448
  let(:auth_data) do
424
- OmniAuth::AuthHash.new({
425
- provider: 'g5',
426
- uid: '123999',
427
- info: {name: 'Foo Bar',
428
- email: 'foo@bar.com'},
429
- credentials: {token: 'abc123'}
430
- })
449
+ OmniAuth::AuthHash.new(provider: 'g5',
450
+ uid: '123999',
451
+ info: { name: 'Foo Bar', email: 'foo@bar.com' },
452
+ credentials: { token: 'abc123' })
431
453
  end
432
454
 
433
455
  let(:model) do
@@ -483,21 +505,20 @@ describe Devise::Models::G5Authenticatable do
483
505
  subject(:new_with_session) { model_class.new_with_session(params, session) }
484
506
 
485
507
  let(:auth_data) do
486
- OmniAuth::AuthHash.new({
487
- provider: 'g5',
488
- uid: '123999',
489
- info: {name: 'Foo Bar',
490
- email: 'foo@bar.com'},
491
- credentials: {token: 'abc123'}
492
- })
508
+ OmniAuth::AuthHash.new(provider: 'g5',
509
+ uid: '123999',
510
+ info: { name: 'Foo Bar', email: 'foo@bar.com' },
511
+ credentials: { token: 'abc123' })
493
512
  end
494
513
 
495
514
  context 'with params' do
496
- let(:params) { {'email' => email_param} }
515
+ let(:params) do
516
+ { 'email' => email_param }
517
+ end
497
518
  let(:email_param) { 'my.email.param@test.host' }
498
519
 
499
520
  context 'with session data' do
500
- let(:session) { {'omniauth.auth' => auth_data} }
521
+ let(:session) { { 'omniauth.auth' => auth_data } }
501
522
 
502
523
  it { is_expected.to be_new_record }
503
524
 
@@ -537,7 +558,9 @@ describe Devise::Models::G5Authenticatable do
537
558
  let(:params) { Hash.new }
538
559
 
539
560
  context 'with session data' do
540
- let(:session) { {'omniauth.auth' => auth_data} }
561
+ let(:session) do
562
+ { 'omniauth.auth' => auth_data }
563
+ end
541
564
 
542
565
  it { is_expected.to be_new_record }
543
566
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_g5_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maeve Revels
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-30 00:00:00.000000000 Z
11
+ date: 2015-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
@@ -194,9 +194,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
194
  version: '0'
195
195
  required_rubygems_version: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - ">="
197
+ - - ">"
198
198
  - !ruby/object:Gem::Version
199
- version: '0'
199
+ version: 1.3.1
200
200
  requirements: []
201
201
  rubyforge_project:
202
202
  rubygems_version: 2.2.2
@@ -293,4 +293,3 @@ test_files:
293
293
  - spec/support/shared_examples/registration_error.rb
294
294
  - spec/support/user_feature_methods.rb
295
295
  - spec/tasks/export_users_spec.rb
296
- has_rdoc: