devise_token_auth 0.1.43 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of devise_token_auth might be problematic. Click here for more details.

Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +40 -894
  3. data/Rakefile +2 -0
  4. data/app/controllers/devise_token_auth/application_controller.rb +6 -0
  5. data/app/controllers/devise_token_auth/concerns/resource_finder.rb +2 -0
  6. data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +9 -14
  7. data/app/controllers/devise_token_auth/confirmations_controller.rb +3 -1
  8. data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +2 -0
  9. data/app/controllers/devise_token_auth/passwords_controller.rb +8 -14
  10. data/app/controllers/devise_token_auth/registrations_controller.rb +26 -21
  11. data/app/controllers/devise_token_auth/sessions_controller.rb +2 -0
  12. data/app/controllers/devise_token_auth/token_validations_controller.rb +2 -0
  13. data/app/controllers/devise_token_auth/unlocks_controller.rb +2 -0
  14. data/app/models/devise_token_auth/concerns/user.rb +41 -16
  15. data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +2 -0
  16. data/app/validators/email_validator.rb +3 -1
  17. data/config/initializers/devise.rb +2 -0
  18. data/config/locales/da-DK.yml +1 -1
  19. data/config/locales/sv.yml +50 -0
  20. data/lib/devise_token_auth.rb +3 -0
  21. data/lib/devise_token_auth/controllers/helpers.rb +2 -0
  22. data/lib/devise_token_auth/controllers/url_helpers.rb +2 -0
  23. data/lib/devise_token_auth/engine.rb +2 -0
  24. data/lib/devise_token_auth/errors.rb +7 -0
  25. data/lib/devise_token_auth/rails/routes.rb +2 -0
  26. data/lib/devise_token_auth/url.rb +2 -0
  27. data/lib/devise_token_auth/version.rb +3 -1
  28. data/lib/generators/devise_token_auth/USAGE +1 -1
  29. data/lib/generators/devise_token_auth/install_generator.rb +7 -5
  30. data/lib/generators/devise_token_auth/install_views_generator.rb +2 -0
  31. data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +2 -0
  32. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +8 -7
  33. data/lib/generators/devise_token_auth/templates/user.rb +3 -1
  34. data/lib/tasks/devise_token_auth_tasks.rake +2 -0
  35. data/test/controllers/custom/custom_confirmations_controller_test.rb +2 -0
  36. data/test/controllers/custom/custom_omniauth_callbacks_controller_test.rb +2 -0
  37. data/test/controllers/custom/custom_passwords_controller_test.rb +2 -0
  38. data/test/controllers/custom/custom_registrations_controller_test.rb +11 -0
  39. data/test/controllers/custom/custom_sessions_controller_test.rb +2 -0
  40. data/test/controllers/custom/custom_token_validations_controller_test.rb +2 -0
  41. data/test/controllers/demo_group_controller_test.rb +2 -0
  42. data/test/controllers/demo_mang_controller_test.rb +4 -1
  43. data/test/controllers/demo_user_controller_test.rb +47 -10
  44. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +4 -6
  45. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +7 -4
  46. data/test/controllers/devise_token_auth/passwords_controller_test.rb +2 -0
  47. data/test/controllers/devise_token_auth/registrations_controller_test.rb +3 -1
  48. data/test/controllers/devise_token_auth/sessions_controller_test.rb +52 -0
  49. data/test/controllers/devise_token_auth/token_validations_controller_test.rb +2 -0
  50. data/test/controllers/devise_token_auth/unlocks_controller_test.rb +2 -0
  51. data/test/controllers/overrides/confirmations_controller_test.rb +2 -0
  52. data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +2 -0
  53. data/test/controllers/overrides/passwords_controller_test.rb +2 -0
  54. data/test/controllers/overrides/registrations_controller_test.rb +31 -27
  55. data/test/controllers/overrides/sessions_controller_test.rb +2 -0
  56. data/test/controllers/overrides/token_validations_controller_test.rb +2 -0
  57. data/test/dummy/app/controllers/application_controller.rb +2 -0
  58. data/test/dummy/app/controllers/auth_origin_controller.rb +2 -0
  59. data/test/dummy/app/controllers/custom/confirmations_controller.rb +2 -0
  60. data/test/dummy/app/controllers/custom/omniauth_callbacks_controller.rb +2 -0
  61. data/test/dummy/app/controllers/custom/passwords_controller.rb +2 -0
  62. data/test/dummy/app/controllers/custom/registrations_controller.rb +2 -1
  63. data/test/dummy/app/controllers/custom/sessions_controller.rb +2 -0
  64. data/test/dummy/app/controllers/custom/token_validations_controller.rb +2 -0
  65. data/test/dummy/app/controllers/demo_group_controller.rb +2 -0
  66. data/test/dummy/app/controllers/demo_mang_controller.rb +2 -0
  67. data/test/dummy/app/controllers/demo_user_controller.rb +2 -0
  68. data/test/dummy/app/controllers/overrides/confirmations_controller.rb +2 -0
  69. data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +2 -0
  70. data/test/dummy/app/controllers/overrides/passwords_controller.rb +2 -0
  71. data/test/dummy/app/controllers/overrides/registrations_controller.rb +2 -0
  72. data/test/dummy/app/controllers/overrides/sessions_controller.rb +2 -0
  73. data/test/dummy/app/controllers/overrides/token_validations_controller.rb +2 -0
  74. data/test/dummy/app/helpers/application_helper.rb +2 -0
  75. data/test/dummy/app/models/evil_user.rb +2 -0
  76. data/test/dummy/app/models/lockable_user.rb +2 -0
  77. data/test/dummy/app/models/mang.rb +2 -0
  78. data/test/dummy/app/models/nice_user.rb +2 -0
  79. data/test/dummy/app/models/only_email_user.rb +2 -0
  80. data/test/dummy/app/models/scoped_user.rb +2 -0
  81. data/test/dummy/app/models/unconfirmable_user.rb +2 -0
  82. data/test/dummy/app/models/unregisterable_user.rb +2 -0
  83. data/test/dummy/app/models/user.rb +2 -0
  84. data/test/dummy/config/application.rb +2 -0
  85. data/test/dummy/config/boot.rb +2 -0
  86. data/test/dummy/config/environment.rb +2 -0
  87. data/test/dummy/config/environments/development.rb +2 -0
  88. data/test/dummy/config/environments/production.rb +2 -0
  89. data/test/dummy/config/environments/test.rb +2 -0
  90. data/test/dummy/config/initializers/assets.rb +2 -0
  91. data/test/dummy/config/initializers/backtrace_silencers.rb +2 -0
  92. data/test/dummy/config/initializers/cookies_serializer.rb +3 -1
  93. data/test/dummy/config/initializers/devise.rb +2 -0
  94. data/test/dummy/config/initializers/devise_token_auth.rb +2 -0
  95. data/test/dummy/config/initializers/figaro.rb +2 -0
  96. data/test/dummy/config/initializers/filter_parameter_logging.rb +2 -0
  97. data/test/dummy/config/initializers/inflections.rb +2 -0
  98. data/test/dummy/config/initializers/mime_types.rb +2 -0
  99. data/test/dummy/config/initializers/omniauth.rb +2 -0
  100. data/test/dummy/config/initializers/session_store.rb +2 -0
  101. data/test/dummy/config/initializers/wrap_parameters.rb +2 -0
  102. data/test/dummy/config/routes.rb +2 -0
  103. data/test/dummy/config/spring.rb +2 -0
  104. data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +2 -0
  105. data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +2 -0
  106. data/test/dummy/db/migrate/20140829044006_add_operating_thetan_to_user.rb +2 -0
  107. data/test/dummy/db/migrate/20140916224624_add_favorite_color_to_mangs.rb +2 -0
  108. data/test/dummy/db/migrate/20140928231203_devise_token_auth_create_evil_users.rb +2 -0
  109. data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +2 -0
  110. data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +2 -0
  111. data/test/dummy/db/migrate/20150409095712_devise_token_auth_create_nice_users.rb +2 -0
  112. data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +2 -0
  113. data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +2 -0
  114. data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +2 -0
  115. data/test/dummy/lib/migration_database_helper.rb +15 -1
  116. data/test/dummy/tmp/generators/app/models/user.rb +5 -5
  117. data/test/dummy/tmp/generators/config/initializers/devise_token_auth.rb +2 -0
  118. data/test/dummy/tmp/generators/db/migrate/{20171014052631_devise_token_auth_create_users.rb → 20180805205504_devise_token_auth_create_users.rb} +1 -0
  119. data/test/integration/navigation_test.rb +2 -0
  120. data/test/lib/devise_token_auth/url_test.rb +2 -0
  121. data/test/lib/generators/devise_token_auth/install_generator_test.rb +2 -0
  122. data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +194 -0
  123. data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +2 -0
  124. data/test/models/only_email_user_test.rb +2 -0
  125. data/test/models/user_test.rb +6 -4
  126. data/test/test_helper.rb +30 -14
  127. metadata +23 -5
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
5
  # This file contains settings for ActionController::ParamsWrapper which
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.application.routes.draw do
2
4
  # when using multiple models, controllers will default to the first available
3
5
  # devise mapping. routes for subsequent devise mappings will need to defined
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Spring.application_root = './test/dummy'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateMangs < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddOperatingThetanToUser < ActiveRecord::Migration[4.2]
2
4
  def change
3
5
  add_column :users, :operating_thetan, :integer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddFavoriteColorToMangs < ActiveRecord::Migration[4.2]
2
4
  def change
3
5
  add_column :mangs, :favorite_color, :string
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateEvilUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateOnlyEmailUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateUnregisterableUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateNiceUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateUnconfirmableUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateScopedUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  include MigrationDatabaseHelper
2
4
 
3
5
  class DeviseTokenAuthCreateLockableUsers < ActiveRecord::Migration[4.2]
@@ -1,3 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ # polyfill Rails >= 5 versioned migrations
4
+
5
+ unless ActiveRecord::Migration.respond_to?(:[])
6
+ module ActiveRecord
7
+ class Migration
8
+ def self.[](_version)
9
+ self
10
+ end
11
+ end
12
+ end
13
+ end
14
+
1
15
  module MigrationDatabaseHelper
2
16
  def json_supported_database?
3
17
  (postgres? && postgres_correct_version?) || (mysql? && mysql_correct_version?)
@@ -26,4 +40,4 @@ module MigrationDatabaseHelper
26
40
  def database_version
27
41
  ActiveRecord::Base.connection.select_value('SELECT VERSION()')
28
42
  end
29
- end
43
+ end
@@ -1,9 +1,9 @@
1
1
  class User < ApplicationRecord
2
- # Include default devise modules.
3
- devise :database_authenticatable, :registerable,
4
- :recoverable, :rememberable, :trackable, :validatable,
5
- :confirmable, :omniauthable
6
- include DeviseTokenAuth::Concerns::User
2
+ # Include default devise modules.
3
+ devise :database_authenticatable, :registerable,
4
+ :recoverable, :rememberable, :trackable, :validatable,
5
+ :confirmable, :omniauthable
6
+ include DeviseTokenAuth::Concerns::User
7
7
 
8
8
  def whatever
9
9
  puts 'whatever'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  DeviseTokenAuth.setup do |config|
2
4
  # By default the authorization headers will change after each request. The
3
5
  # client is responsible for keeping track of the changing tokens. Change
@@ -1,5 +1,6 @@
1
1
  class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[5.1]
2
2
  def change
3
+
3
4
  create_table(:users) do |t|
4
5
  ## Required
5
6
  t.string :provider, :null => false, :default => "email"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class NavigationTest < ActionDispatch::IntegrationTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class DeviseTokenAuth::UrlTest < ActiveSupport::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'fileutils'
3
5
  require 'generators/devise_token_auth/install_generator'
@@ -0,0 +1,194 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ require 'fileutils'
5
+ require 'generators/devise_token_auth/install_generator'
6
+
7
+ module DeviseTokenAuth
8
+ class InstallGeneratorTest < Rails::Generators::TestCase
9
+ tests InstallGenerator
10
+ destination Rails.root.join('tmp/generators')
11
+
12
+ # The namespaced user model for testing
13
+ let(:user_class) { "Azpire::V1::HumanResource::User" }
14
+ let(:namespace_path) { user_class.underscore }
15
+ let(:table_name) { user_class.pluralize.underscore.gsub("/","_") }
16
+
17
+ describe 'user model with namespace, clean install' do
18
+ setup :prepare_destination
19
+
20
+ before do
21
+ run_generator %W(#{user_class} auth)
22
+ end
23
+
24
+ test 'user model (with namespace) is created, concern is included' do
25
+ assert_file "app/models/#{namespace_path}.rb" do |model|
26
+ assert_match(/include DeviseTokenAuth::Concerns::User/, model)
27
+ end
28
+ end
29
+
30
+ test 'initializer is created' do
31
+ assert_file 'config/initializers/devise_token_auth.rb'
32
+ end
33
+
34
+ test 'migration is created for user model with namespace' do
35
+ assert_migration "db/migrate/devise_token_auth_create_#{table_name}.rb"
36
+ end
37
+
38
+ test 'migration file for user model with namespace contains rails version' do
39
+ if Rails::VERSION::MAJOR >= 5
40
+ assert_migration "db/migrate/devise_token_auth_create_#{table_name}.rb", /#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}/
41
+ else
42
+ assert_migration "db/migrate/devise_token_auth_create_#{table_name}.rb"
43
+ end
44
+ end
45
+
46
+ test 'subsequent runs raise no errors' do
47
+ run_generator %W(#{user_class} auth)
48
+ end
49
+ end
50
+
51
+ describe 'existing user model' do
52
+ setup :prepare_destination
53
+
54
+ before do
55
+ @dir = File.join(destination_root, "app", "models")
56
+
57
+ @fname = File.join(@dir, "user.rb")
58
+
59
+ # make dir if not exists
60
+ FileUtils.mkdir_p(@dir)
61
+
62
+ # account for rails version 5
63
+ active_record_needle = (Rails::VERSION::MAJOR == 5) ? 'ApplicationRecord' : 'ActiveRecord::Base'
64
+
65
+ @f = File.open(@fname, 'w') {|f|
66
+ f.write <<-RUBY
67
+ class User < #{active_record_needle}
68
+
69
+ def whatever
70
+ puts 'whatever'
71
+ end
72
+ end
73
+ RUBY
74
+ }
75
+
76
+ run_generator
77
+ end
78
+
79
+ test 'user concern is injected into existing model' do
80
+ assert_file 'app/models/user.rb' do |model|
81
+ assert_match(/include DeviseTokenAuth::Concerns::User/, model)
82
+ end
83
+ end
84
+
85
+ test 'subsequent runs do not modify file' do
86
+ run_generator
87
+ assert_file 'app/models/user.rb' do |model|
88
+ matches = model.scan(/include DeviseTokenAuth::Concerns::User/m).size
89
+ assert_equal 1, matches
90
+ end
91
+ end
92
+ end
93
+
94
+
95
+ describe 'routes' do
96
+ setup :prepare_destination
97
+
98
+ before do
99
+ @dir = File.join(destination_root, "config")
100
+
101
+ @fname = File.join(@dir, "routes.rb")
102
+
103
+ # make dir if not exists
104
+ FileUtils.mkdir_p(@dir)
105
+
106
+ @f = File.open(@fname, 'w') {|f|
107
+ f.write <<-RUBY
108
+ Rails.application.routes.draw do
109
+ patch '/chong', to: 'bong#index'
110
+ end
111
+ RUBY
112
+ }
113
+
114
+ run_generator %W(#{user_class} auth)
115
+ end
116
+
117
+ test 'route method for user model with namespace is appended to routes file' do
118
+ assert_file 'config/routes.rb' do |routes|
119
+ assert_match(/mount_devise_token_auth_for '#{user_class}', at: 'auth'/, routes)
120
+ end
121
+ end
122
+
123
+ test 'subsequent runs do not modify file' do
124
+ run_generator %W(#{user_class} auth)
125
+ assert_file 'config/routes.rb' do |routes|
126
+ matches = routes.scan(/mount_devise_token_auth_for '#{user_class}', at: 'auth'/m).size
127
+ assert_equal 1, matches
128
+ end
129
+ end
130
+
131
+ describe 'subsequent models' do
132
+ before do
133
+ run_generator %w(Mang mangs)
134
+ end
135
+
136
+ test 'migration is created' do
137
+ assert_migration 'db/migrate/devise_token_auth_create_mangs.rb'
138
+ end
139
+
140
+ test 'route method is appended to routes file' do
141
+ assert_file 'config/routes.rb' do |routes|
142
+ assert_match(/mount_devise_token_auth_for 'Mang', at: 'mangs'/, routes)
143
+ end
144
+ end
145
+
146
+ test 'devise_for block is appended to routes file' do
147
+ assert_file 'config/routes.rb' do |routes|
148
+ assert_match(/as :mang do/, routes)
149
+ assert_match(/# Define routes for Mang within this block./, routes)
150
+ end
151
+ end
152
+ end
153
+ end
154
+
155
+ describe 'application controller' do
156
+ setup :prepare_destination
157
+
158
+ before do
159
+ @dir = File.join(destination_root, "app", "controllers")
160
+
161
+ @fname = File.join(@dir, "application_controller.rb")
162
+
163
+ # make dir if not exists
164
+ FileUtils.mkdir_p(@dir)
165
+
166
+ @f = File.open(@fname, 'w') {|f|
167
+ f.write <<-RUBY
168
+ class ApplicationController < ActionController::Base
169
+ def whatever
170
+ 'whatever'
171
+ end
172
+ end
173
+ RUBY
174
+ }
175
+
176
+ run_generator %W(#{user_class} auth)
177
+ end
178
+
179
+ test 'controller concern is appended to application controller' do
180
+ assert_file 'app/controllers/application_controller.rb' do |controller|
181
+ assert_match(/include DeviseTokenAuth::Concerns::SetUserByToken/, controller)
182
+ end
183
+ end
184
+
185
+ test 'subsequent runs do not modify file' do
186
+ run_generator %W(#{user_class} auth)
187
+ assert_file 'app/controllers/application_controller.rb' do |controller|
188
+ matches = controller.scan(/include DeviseTokenAuth::Concerns::SetUserByToken/m).size
189
+ assert_equal 1, matches
190
+ end
191
+ end
192
+ end
193
+ end
194
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'fileutils'
3
5
  require 'generators/devise_token_auth/install_views_generator'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class OnlyEmailUserTest < ActiveSupport::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class UserTest < ActiveSupport::TestCase
@@ -94,7 +96,7 @@ class UserTest < ActiveSupport::TestCase
94
96
  test 'should properly indicate whether token is current' do
95
97
  assert @resource.token_is_current?(@token, @client_id)
96
98
  # we want to update the expiry without forcing a cleanup (see below)
97
- @resource.tokens[@client_id]['expiry'] = Time.now.to_i - 10.seconds
99
+ @resource.tokens[@client_id]['expiry'] = Time.zone.now.to_i - 10.seconds
98
100
  refute @resource.token_is_current?(@token, @client_id)
99
101
  end
100
102
  end
@@ -121,13 +123,13 @@ class UserTest < ActiveSupport::TestCase
121
123
  test 'works per user' do
122
124
  assert @resource.token_is_current?(@token_global, @client_id_global)
123
125
 
124
- time = Time.now.to_i
125
- expiry_global = @resource.tokens[@client_id_global]['expiry']
126
+ time = Time.zone.now.to_i
127
+ expiry_global = @resource.tokens[@client_id_global]['expiry'] || @resource.tokens[@client_id_global][:expiry]
126
128
 
127
129
  assert expiry_global > time + DeviseTokenAuth.token_lifespan - 5.seconds
128
130
  assert expiry_global < time + DeviseTokenAuth.token_lifespan + 5.seconds
129
131
 
130
- expiry_specific = @resource.tokens[@client_id_specific]['expiry']
132
+ expiry_specific = @resource.tokens[@client_id_specific]['expiry'] || @resource.tokens[@client_id_specific][:expiry]
131
133
  assert expiry_specific > time + 55.seconds
132
134
  assert expiry_specific < time + 65.seconds
133
135
  end
data/test/test_helper.rb CHANGED
@@ -1,9 +1,6 @@
1
- require 'simplecov'
1
+ # frozen_string_literal: true
2
2
 
3
- # SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
- # SimpleCov::Formatter::HTMLFormatter,
5
- # CodeClimate::TestReporter::Formatter
6
- # ]
3
+ require 'simplecov'
7
4
 
8
5
  SimpleCov.start 'rails'
9
6
 
@@ -12,13 +9,7 @@ ENV['RAILS_ENV'] = 'test'
12
9
  require File.expand_path('../dummy/config/environment', __FILE__)
13
10
  require 'rails/test_help'
14
11
  require 'minitest/rails'
15
-
16
- # To add Capybara feature tests add `gem "minitest-rails-capybara"`
17
- # to the test group in the Gemfile and uncomment the following:
18
- # require "minitest/rails/capybara"
19
-
20
- # Uncomment for awesome colorful output
21
- # require "minitest/pride"
12
+ require 'mocha/minitest'
22
13
 
23
14
  ActiveSupport::TestCase.fixture_path = File.expand_path('../fixtures', __FILE__)
24
15
  ActionDispatch::IntegrationTest.fixture_path = File.expand_path('../fixtures', __FILE__)
@@ -45,14 +36,14 @@ class ActiveSupport::TestCase
45
36
 
46
37
  def age_token(user, client_id)
47
38
  if user.tokens[client_id]
48
- user.tokens[client_id]['updated_at'] = Time.now - (DeviseTokenAuth.batch_request_buffer_throttle + 10.seconds)
39
+ user.tokens[client_id]['updated_at'] = Time.zone.now - (DeviseTokenAuth.batch_request_buffer_throttle + 10.seconds)
49
40
  user.save!
50
41
  end
51
42
  end
52
43
 
53
44
  def expire_token(user, client_id)
54
45
  if user.tokens[client_id]
55
- user.tokens[client_id]['expiry'] = (Time.now - (DeviseTokenAuth.token_lifespan.to_f + 10.seconds)).to_i
46
+ user.tokens[client_id]['expiry'] = (Time.zone.now - (DeviseTokenAuth.token_lifespan.to_f + 10.seconds)).to_i
56
47
  user.save!
57
48
  end
58
49
  end
@@ -75,3 +66,28 @@ class ActionController::TestCase
75
66
  @request.env['devise.mapping'] = Devise.mappings[:user]
76
67
  end
77
68
  end
69
+
70
+ # TODO: remove it when support for Rails < 5 has been dropped
71
+ module Rails
72
+ module Controller
73
+ module Testing
74
+ module Integration
75
+ %w[get post patch put head delete get_via_redirect post_via_redirect].each do |method|
76
+ define_method(method) do |path_or_action, **args|
77
+ if Rails::VERSION::MAJOR >= 5
78
+ super path_or_action, args
79
+ else
80
+ super path_or_action, args[:params], args[:headers]
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ module ActionController
90
+ class TestCase
91
+ include Rails::Controller::Testing::Integration
92
+ end
93
+ end