devise_token_auth 1.1.4 → 1.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/devise_token_auth/application_controller.rb +8 -0
  3. data/app/controllers/devise_token_auth/concerns/resource_finder.rb +14 -1
  4. data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +31 -7
  5. data/app/controllers/devise_token_auth/confirmations_controller.rb +8 -4
  6. data/app/controllers/devise_token_auth/passwords_controller.rb +6 -2
  7. data/app/controllers/devise_token_auth/sessions_controller.rb +7 -1
  8. data/app/controllers/devise_token_auth/unlocks_controller.rb +6 -2
  9. data/app/models/devise_token_auth/concerns/active_record_support.rb +0 -2
  10. data/app/models/devise_token_auth/concerns/confirmable_support.rb +2 -1
  11. data/app/models/devise_token_auth/concerns/tokens_serialization.rb +16 -4
  12. data/app/models/devise_token_auth/concerns/user.rb +4 -9
  13. data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +3 -0
  14. data/app/validators/devise_token_auth_email_validator.rb +1 -1
  15. data/app/views/devise_token_auth/omniauth_external_window.html.erb +1 -1
  16. data/config/locales/en.yml +3 -0
  17. data/lib/devise_token_auth/blacklist.rb +5 -1
  18. data/lib/devise_token_auth/controllers/helpers.rb +5 -9
  19. data/lib/devise_token_auth/engine.rb +6 -0
  20. data/lib/devise_token_auth/rails/routes.rb +15 -10
  21. data/lib/devise_token_auth/version.rb +1 -1
  22. data/lib/generators/devise_token_auth/install_generator.rb +1 -1
  23. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +1 -1
  24. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +91 -19
  25. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +2 -2
  26. data/test/controllers/devise_token_auth/passwords_controller_test.rb +73 -21
  27. data/test/controllers/devise_token_auth/registrations_controller_test.rb +28 -15
  28. data/test/controllers/devise_token_auth/sessions_controller_test.rb +39 -10
  29. data/test/controllers/devise_token_auth/unlocks_controller_test.rb +21 -4
  30. data/test/controllers/overrides/confirmations_controller_test.rb +1 -1
  31. data/test/dummy/app/views/layouts/application.html.erb +0 -2
  32. data/test/dummy/config/application.rb +0 -1
  33. data/test/dummy/config/environments/development.rb +0 -10
  34. data/test/dummy/config/environments/production.rb +0 -16
  35. data/test/dummy/tmp/generators/app/controllers/application_controller.rb +6 -0
  36. data/test/dummy/tmp/generators/app/models/azpire/v1/human_resource/user.rb +56 -0
  37. data/test/dummy/tmp/generators/config/initializers/devise_token_auth.rb +60 -0
  38. data/test/lib/devise_token_auth/blacklist_test.rb +11 -3
  39. data/test/lib/devise_token_auth/rails/custom_routes_test.rb +29 -0
  40. data/test/lib/devise_token_auth/rails/routes_test.rb +87 -0
  41. data/test/lib/generators/devise_token_auth/install_generator_test.rb +1 -1
  42. data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +1 -1
  43. data/test/models/concerns/tokens_serialization_test.rb +39 -5
  44. data/test/test_helper.rb +35 -4
  45. metadata +15 -25
  46. data/test/dummy/config/initializers/assets.rb +0 -10
  47. data/test/dummy/tmp/generators/app/views/devise/mailer/confirmation_instructions.html.erb +0 -5
  48. data/test/dummy/tmp/generators/app/views/devise/mailer/reset_password_instructions.html.erb +0 -8
@@ -13,7 +13,6 @@ if DEVISE_TOKEN_AUTH_ORM == :active_record
13
13
 
14
14
  user.tokens
15
15
  end
16
- let(:json) { JSON.generate(tokens) }
17
16
 
18
17
  it 'is defined' do
19
18
  assert_equal(ts.present?, true)
@@ -21,6 +20,9 @@ if DEVISE_TOKEN_AUTH_ORM == :active_record
21
20
  end
22
21
 
23
22
  describe '.load(json)' do
23
+
24
+ let(:json) { JSON.generate(tokens) }
25
+
24
26
  let(:default) { {} }
25
27
 
26
28
  it 'is defined' do
@@ -55,16 +57,48 @@ if DEVISE_TOKEN_AUTH_ORM == :active_record
55
57
  assert_equal(ts.dump({}), '{}')
56
58
  end
57
59
 
58
- it 'deserialize tokens' do
59
- assert_equal(ts.dump(tokens), json)
60
- end
61
-
62
60
  it 'removes nil values' do
63
61
  new_tokens = tokens.dup
64
62
  new_tokens[new_tokens.first[0]][:kos] = nil
65
63
 
66
64
  assert_equal(ts.dump(tokens), ts.dump(new_tokens))
67
65
  end
66
+
67
+ describe 'updated_at' do
68
+ before do
69
+ @default_format = ::Time::DATE_FORMATS[:default]
70
+ ::Time::DATE_FORMATS[:default] = 'imprecise format'
71
+ end
72
+
73
+ after do
74
+ ::Time::DATE_FORMATS[:default] = @default_format
75
+ end
76
+
77
+ def updated_ats(tokens)
78
+ tokens.
79
+ values.
80
+ flat_map do |token|
81
+ [:updated_at, 'updated_at'].map do |key|
82
+ token[key]
83
+ end
84
+ end.
85
+ compact
86
+ end
87
+
88
+ it 'is defined' do
89
+ refute_empty updated_ats(tokens)
90
+ end
91
+
92
+ it 'uses iso8601' do
93
+ updated_ats(JSON.parse(ts.dump(tokens))).each do |updated_at|
94
+ Time.strptime(updated_at, '%Y-%m-%dT%H:%M:%SZ')
95
+ end
96
+ end
97
+
98
+ it 'does not rely on Time#to_s' do
99
+ refute_includes(updated_ats(tokens), 'imprecise format')
100
+ end
101
+ end
68
102
  end
69
103
  end
70
104
  end
data/test/test_helper.rb CHANGED
@@ -15,7 +15,11 @@ require File.expand_path('dummy/config/environment', __dir__)
15
15
  require 'active_support/testing/autorun'
16
16
  require 'minitest/rails'
17
17
  require 'mocha/minitest'
18
- require 'database_cleaner'
18
+ if DEVISE_TOKEN_AUTH_ORM == :active_record
19
+ require 'database_cleaner'
20
+ else
21
+ require 'database_cleaner/mongoid'
22
+ end
19
23
 
20
24
  FactoryBot.definition_file_paths = [File.expand_path('factories', __dir__)]
21
25
  FactoryBot.find_definitions
@@ -37,16 +41,43 @@ class ActiveSupport::TestCase
37
41
  ActiveRecord::Migration.check_pending! if DEVISE_TOKEN_AUTH_ORM == :active_record
38
42
 
39
43
  strategies = { active_record: :transaction,
40
- mongoid: :truncation }
44
+ mongoid: :deletion }
41
45
  DatabaseCleaner.strategy = strategies[DEVISE_TOKEN_AUTH_ORM]
42
46
  setup { DatabaseCleaner.start }
43
47
  teardown { DatabaseCleaner.clean }
44
48
 
45
49
  # Add more helper methods to be used by all tests here...
46
50
 
51
+ # Execute the block setting the given values and restoring old values after
52
+ # the block is executed.
53
+ # shamelessly copied from devise test_helper.
54
+ def swap(object, new_values)
55
+ old_values = {}
56
+ new_values.each do |key, value|
57
+ old_values[key] = object.send key
58
+ object.send :"#{key}=", value
59
+ end
60
+ clear_cached_variables(new_values)
61
+ yield
62
+ ensure
63
+ clear_cached_variables(new_values)
64
+ old_values.each do |key, value|
65
+ object.send :"#{key}=", value
66
+ end
67
+ end
68
+
69
+ # shamelessly copied from devise test_helper.
70
+ def clear_cached_variables(options)
71
+ if options.key?(:case_insensitive_keys) || options.key?(:strip_whitespace_keys)
72
+ Devise.mappings.each do |_, mapping|
73
+ mapping.to.instance_variable_set(:@devise_parameter_filter, nil)
74
+ end
75
+ end
76
+ end
77
+
47
78
  def age_token(user, client_id)
48
79
  if user.tokens[client_id]
49
- user.tokens[client_id]['updated_at'] = (Time.zone.now - (DeviseTokenAuth.batch_request_buffer_throttle + 10.seconds)).to_s(:rfc822)
80
+ user.tokens[client_id]['updated_at'] = (Time.zone.now - (DeviseTokenAuth.batch_request_buffer_throttle + 10.seconds))
50
81
  user.save!
51
82
  end
52
83
  end
@@ -85,7 +116,7 @@ module Rails
85
116
  %w[get post patch put head delete get_via_redirect post_via_redirect].each do |method|
86
117
  define_method(method) do |path_or_action, **args|
87
118
  if Rails::VERSION::MAJOR >= 5
88
- super path_or_action, args
119
+ super path_or_action, **args
89
120
  else
90
121
  super path_or_action, args[:params], args[:headers]
91
122
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_token_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lynn Hurley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-02 00:00:00.000000000 Z
11
+ date: 2021-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 4.2.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.1'
22
+ version: '6.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,7 @@ dependencies:
29
29
  version: 4.2.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.1'
33
- - !ruby/object:Gem::Dependency
34
- name: sprockets
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - '='
38
- - !ruby/object:Gem::Version
39
- version: 3.7.2
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - '='
45
- - !ruby/object:Gem::Version
46
- version: 3.7.2
32
+ version: '6.2'
47
33
  - !ruby/object:Gem::Dependency
48
34
  name: devise
49
35
  requirement: !ruby/object:Gem::Requirement
@@ -308,7 +294,6 @@ files:
308
294
  - test/dummy/config/environments/development.rb
309
295
  - test/dummy/config/environments/production.rb
310
296
  - test/dummy/config/environments/test.rb
311
- - test/dummy/config/initializers/assets.rb
312
297
  - test/dummy/config/initializers/backtrace_silencers.rb
313
298
  - test/dummy/config/initializers/cookies_serializer.rb
314
299
  - test/dummy/config/initializers/devise.rb
@@ -334,10 +319,13 @@ files:
334
319
  - test/dummy/db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb
335
320
  - test/dummy/db/schema.rb
336
321
  - test/dummy/lib/migration_database_helper.rb
337
- - test/dummy/tmp/generators/app/views/devise/mailer/confirmation_instructions.html.erb
338
- - test/dummy/tmp/generators/app/views/devise/mailer/reset_password_instructions.html.erb
322
+ - test/dummy/tmp/generators/app/controllers/application_controller.rb
323
+ - test/dummy/tmp/generators/app/models/azpire/v1/human_resource/user.rb
324
+ - test/dummy/tmp/generators/config/initializers/devise_token_auth.rb
339
325
  - test/factories/users.rb
340
326
  - test/lib/devise_token_auth/blacklist_test.rb
327
+ - test/lib/devise_token_auth/rails/custom_routes_test.rb
328
+ - test/lib/devise_token_auth/rails/routes_test.rb
341
329
  - test/lib/devise_token_auth/token_factory_test.rb
342
330
  - test/lib/devise_token_auth/url_test.rb
343
331
  - test/lib/generators/devise_token_auth/install_generator_test.rb
@@ -369,7 +357,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
369
357
  - !ruby/object:Gem::Version
370
358
  version: '0'
371
359
  requirements: []
372
- rubygems_version: 3.0.3
360
+ rubygems_version: 3.1.4
373
361
  signing_key:
374
362
  specification_version: 4
375
363
  summary: Token based authentication for rails. Uses Devise + OmniAuth.
@@ -425,7 +413,6 @@ test_files:
425
413
  - test/dummy/config/initializers/filter_parameter_logging.rb
426
414
  - test/dummy/config/initializers/session_store.rb
427
415
  - test/dummy/config/initializers/wrap_parameters.rb
428
- - test/dummy/config/initializers/assets.rb
429
416
  - test/dummy/config/initializers/cookies_serializer.rb
430
417
  - test/dummy/config/initializers/devise.rb
431
418
  - test/dummy/config/initializers/omniauth.rb
@@ -444,8 +431,9 @@ test_files:
444
431
  - test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb
445
432
  - test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb
446
433
  - test/dummy/db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb
447
- - test/dummy/tmp/generators/app/views/devise/mailer/confirmation_instructions.html.erb
448
- - test/dummy/tmp/generators/app/views/devise/mailer/reset_password_instructions.html.erb
434
+ - test/dummy/tmp/generators/app/models/azpire/v1/human_resource/user.rb
435
+ - test/dummy/tmp/generators/app/controllers/application_controller.rb
436
+ - test/dummy/tmp/generators/config/initializers/devise_token_auth.rb
449
437
  - test/dummy/README.rdoc
450
438
  - test/models/only_email_user_test.rb
451
439
  - test/models/confirmable_user_test.rb
@@ -457,6 +445,8 @@ test_files:
457
445
  - test/lib/devise_token_auth/url_test.rb
458
446
  - test/lib/devise_token_auth/blacklist_test.rb
459
447
  - test/lib/devise_token_auth/token_factory_test.rb
448
+ - test/lib/devise_token_auth/rails/custom_routes_test.rb
449
+ - test/lib/devise_token_auth/rails/routes_test.rb
460
450
  - test/lib/generators/devise_token_auth/install_generator_test.rb
461
451
  - test/lib/generators/devise_token_auth/install_views_generator_test.rb
462
452
  - test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Be sure to restart your server when you modify this file.
4
-
5
- # Version of your assets, change this if you want to expire all your assets.
6
- Rails.application.config.assets.version = '1.0'
7
-
8
- # Precompile additional assets.
9
- # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
10
- # Rails.application.config.assets.precompile += %w( search.js )
@@ -1,5 +0,0 @@
1
- <p><%= t(:welcome).capitalize + ' ' + @email %>!</p>
2
-
3
- <p><%= t '.confirm_link_msg' %> </p>
4
-
5
- <p><%= link_to t('.confirm_account_link'), confirmation_url(@resource, {confirmation_token: @token, config: message['client-config'].to_s, redirect_url: message['redirect-url']}).html_safe %></p>
@@ -1,8 +0,0 @@
1
- <p><%= t(:hello).capitalize %> <%= @resource.email %>!</p>
2
-
3
- <p><%= t '.request_reset_link_msg' %></p>
4
-
5
- <p><%= link_to t('.password_change_link'), edit_password_url(@resource, reset_password_token: @token, config: message['client-config'].to_s, redirect_url: message['redirect-url'].to_s).html_safe %></p>
6
-
7
- <p><%= t '.ignore_mail_msg' %></p>
8
- <p><%= t '.no_changes_msg' %></p>