devise_token_auth 1.1.3 → 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 (71) 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 +9 -4
  6. data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +2 -1
  7. data/app/controllers/devise_token_auth/passwords_controller.rb +6 -2
  8. data/app/controllers/devise_token_auth/sessions_controller.rb +7 -1
  9. data/app/controllers/devise_token_auth/unlocks_controller.rb +6 -2
  10. data/app/models/devise_token_auth/concerns/active_record_support.rb +0 -2
  11. data/app/models/devise_token_auth/concerns/confirmable_support.rb +28 -0
  12. data/app/models/devise_token_auth/concerns/tokens_serialization.rb +16 -4
  13. data/app/models/devise_token_auth/concerns/user.rb +9 -10
  14. data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +4 -1
  15. data/app/validators/devise_token_auth_email_validator.rb +1 -1
  16. data/app/views/devise_token_auth/omniauth_external_window.html.erb +1 -1
  17. data/config/locales/en.yml +3 -0
  18. data/config/locales/ja.yml +1 -1
  19. data/config/locales/ko.yml +51 -0
  20. data/config/locales/pl.yml +4 -3
  21. data/config/locales/pt.yml +4 -3
  22. data/lib/devise_token_auth/blacklist.rb +5 -1
  23. data/lib/devise_token_auth/controllers/helpers.rb +5 -9
  24. data/lib/devise_token_auth/engine.rb +8 -0
  25. data/lib/devise_token_auth/rails/routes.rb +15 -10
  26. data/lib/devise_token_auth/url.rb +3 -0
  27. data/lib/devise_token_auth/version.rb +1 -1
  28. data/lib/generators/devise_token_auth/USAGE +1 -1
  29. data/lib/generators/devise_token_auth/install_generator.rb +4 -4
  30. data/lib/generators/devise_token_auth/install_mongoid_generator.rb +2 -2
  31. data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +5 -0
  32. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +1 -1
  33. data/lib/generators/devise_token_auth/templates/user.rb.erb +2 -2
  34. data/lib/generators/devise_token_auth/templates/user_mongoid.rb.erb +2 -2
  35. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +95 -19
  36. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +2 -2
  37. data/test/controllers/devise_token_auth/passwords_controller_test.rb +73 -21
  38. data/test/controllers/devise_token_auth/registrations_controller_test.rb +28 -15
  39. data/test/controllers/devise_token_auth/sessions_controller_test.rb +39 -10
  40. data/test/controllers/devise_token_auth/unlocks_controller_test.rb +21 -4
  41. data/test/controllers/overrides/confirmations_controller_test.rb +1 -1
  42. data/test/dummy/app/active_record/confirmable_user.rb +11 -0
  43. data/test/dummy/app/mongoid/confirmable_user.rb +52 -0
  44. data/test/dummy/app/views/layouts/application.html.erb +0 -2
  45. data/test/dummy/config/application.rb +0 -1
  46. data/test/dummy/config/environments/development.rb +0 -10
  47. data/test/dummy/config/environments/production.rb +0 -16
  48. data/test/dummy/config/initializers/figaro.rb +1 -1
  49. data/test/dummy/config/initializers/omniauth.rb +1 -0
  50. data/test/dummy/config/routes.rb +2 -0
  51. data/test/dummy/{tmp/generators/db/migrate/20170630171909_devise_token_auth_create_mangs.rb → db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb} +9 -14
  52. data/test/dummy/db/schema.rb +26 -1
  53. data/test/dummy/tmp/generators/app/controllers/application_controller.rb +6 -0
  54. data/test/dummy/tmp/generators/app/models/azpire/v1/human_resource/user.rb +56 -0
  55. data/test/dummy/tmp/generators/config/initializers/devise_token_auth.rb +12 -0
  56. data/test/factories/users.rb +1 -0
  57. data/test/lib/devise_token_auth/blacklist_test.rb +11 -3
  58. data/test/lib/devise_token_auth/rails/custom_routes_test.rb +29 -0
  59. data/test/lib/devise_token_auth/rails/routes_test.rb +87 -0
  60. data/test/lib/devise_token_auth/url_test.rb +2 -2
  61. data/test/lib/generators/devise_token_auth/install_generator_test.rb +1 -1
  62. data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +1 -1
  63. data/test/models/concerns/tokens_serialization_test.rb +39 -5
  64. data/test/models/confirmable_user_test.rb +35 -0
  65. data/test/test_helper.rb +35 -4
  66. metadata +25 -19
  67. data/test/dummy/config/initializers/assets.rb +0 -10
  68. data/test/dummy/tmp/generators/app/models/mang.rb +0 -7
  69. data/test/dummy/tmp/generators/app/models/user.rb +0 -7
  70. data/test/dummy/tmp/generators/config/routes.rb +0 -9
  71. data/test/dummy/tmp/generators/db/migrate/20170630171909_devise_token_auth_create_users.rb +0 -54
@@ -8,7 +8,7 @@ Arguments:
8
8
  # 'User'
9
9
  MOUNT_PATH # The path at which to mount the authentication routes. Default is
10
10
  # 'auth'. More detail documentation is here:
11
- # https://github.com/lynndylanhurley/devise_token_auth#usage-tldr
11
+ # https://devise-token-auth.gitbook.io/devise-token-auth/usage
12
12
 
13
13
  Example:
14
14
  rails generate devise_token_auth:install User auth
@@ -26,7 +26,7 @@ module DeviseTokenAuth
26
26
  inclusion = 'include DeviseTokenAuth::Concerns::User'
27
27
  unless parse_file_for_line(fname, inclusion)
28
28
 
29
- active_record_needle = (Rails::VERSION::MAJOR == 5) ? 'ApplicationRecord' : 'ActiveRecord::Base'
29
+ active_record_needle = (Rails::VERSION::MAJOR >= 5) ? 'ApplicationRecord' : 'ActiveRecord::Base'
30
30
  inject_into_file fname, after: "class #{user_class} < #{active_record_needle}\n" do <<-'RUBY'
31
31
  # Include default devise modules.
32
32
  devise :database_authenticatable, :registerable,
@@ -75,12 +75,12 @@ module DeviseTokenAuth
75
75
  ActiveRecord::Base.connection.select_value('SELECT VERSION()')
76
76
  end
77
77
 
78
- def rails5?
79
- Rails.version.start_with? '5'
78
+ def rails_5_or_newer?
79
+ Rails::VERSION::MAJOR >= 5
80
80
  end
81
81
 
82
82
  def primary_key_type
83
- primary_key_string if rails5?
83
+ primary_key_string if rails_5_or_newer?
84
84
  end
85
85
 
86
86
  def primary_key_string
@@ -29,9 +29,9 @@ module DeviseTokenAuth
29
29
  field :tokens, type: Hash, default: {}
30
30
 
31
31
  # Include default devise modules. Others available are:
32
- # :confirmable, :lockable, :timeoutable and :omniauthable
32
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
33
33
  devise :database_authenticatable, :registerable,
34
- :recoverable, :rememberable, :trackable, :validatable
34
+ :recoverable, :rememberable, :validatable
35
35
  include DeviseTokenAuth::Concerns::User
36
36
 
37
37
  index({ uid: 1, provider: 1}, { name: 'uid_provider_index', unique: true, background: true })
@@ -52,4 +52,9 @@ DeviseTokenAuth.setup do |config|
52
52
  # If, however, you wish to integrate with legacy Devise authentication, you can
53
53
  # do so by enabling this flag. NOTE: This feature is highly experimental!
54
54
  # config.enable_standard_devise_support = false
55
+
56
+ # By default DeviseTokenAuth will not send confirmation email, even when including
57
+ # devise confirmable module. If you want to use devise confirmable module and
58
+ # send email, set it to true. (This is a setting for compatibility)
59
+ # config.send_confirmation_email = true
55
60
  end
@@ -44,6 +44,6 @@ class DeviseTokenAuthCreate<%= user_class.pluralize.gsub("::","") %> < ActiveRec
44
44
  add_index :<%= table_name %>, [:uid, :provider], unique: true
45
45
  add_index :<%= table_name %>, :reset_password_token, unique: true
46
46
  add_index :<%= table_name %>, :confirmation_token, unique: true
47
- # add_index :<%= table_name %>, :unlock_token, unique: true
47
+ # add_index :<%= table_name %>, :unlock_token, unique: true
48
48
  end
49
49
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  class <%= user_class %> < ActiveRecord::Base
4
4
  # Include default devise modules. Others available are:
5
- # :confirmable, :lockable, :timeoutable and :omniauthable
5
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
6
6
  devise :database_authenticatable, :registerable,
7
- :recoverable, :rememberable, :trackable, :validatable
7
+ :recoverable, :rememberable, :validatable
8
8
  include DeviseTokenAuth::Concerns::User
9
9
  end
@@ -43,9 +43,9 @@ class <%= user_class %>
43
43
  field :tokens, type: Hash, default: {}
44
44
 
45
45
  # Include default devise modules. Others available are:
46
- # :confirmable, :lockable, :timeoutable and :omniauthable
46
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
47
47
  devise :database_authenticatable, :registerable,
48
- :recoverable, :rememberable, :trackable, :validatable
48
+ :recoverable, :rememberable, :validatable
49
49
  include DeviseTokenAuth::Concerns::User
50
50
 
51
51
  index({ email: 1 }, { name: 'email_index', unique: true, background: true })
@@ -53,6 +53,10 @@ class DeviseTokenAuth::ConfirmationsControllerTest < ActionController::TestCase
53
53
  assert @resource.confirmed?
54
54
  end
55
55
 
56
+ test 'should save the authentication token' do
57
+ assert @resource.reload.tokens.present?
58
+ end
59
+
56
60
  test 'should redirect to success url' do
57
61
  assert_redirected_to(/^#{@redirect_url}/)
58
62
  end
@@ -88,30 +92,102 @@ class DeviseTokenAuth::ConfirmationsControllerTest < ActionController::TestCase
88
92
  end
89
93
 
90
94
  describe 'resend confirmation' do
91
- before do
92
- post :create,
93
- params: { email: @new_user.email,
94
- redirect_url: @redirect_url },
95
- xhr: true
96
- @resource = assigns(:resource)
97
-
98
- @mail = ActionMailer::Base.deliveries.last
99
- @token, @client_config = token_and_client_config_from(@mail.body)
100
- end
101
-
102
- test 'user should not be confirmed' do
103
- assert_nil @resource.confirmed_at
95
+ describe 'without paranoid mode' do
96
+
97
+ describe 'on success' do
98
+ before do
99
+ post :create,
100
+ params: { email: @new_user.email,
101
+ redirect_url: @redirect_url },
102
+ xhr: true
103
+ @resource = assigns(:resource)
104
+ @data = JSON.parse(response.body)
105
+ @mail = ActionMailer::Base.deliveries.last
106
+ @token, @client_config = token_and_client_config_from(@mail.body)
107
+ end
108
+
109
+ test 'user should not be confirmed' do
110
+ assert_nil @resource.confirmed_at
111
+ end
112
+
113
+ test 'should generate raw token' do
114
+ assert @token
115
+ assert_equal @new_user.confirmation_token, @token
116
+ end
117
+
118
+ test 'user should receive confirmation email' do
119
+ assert_equal @resource.email, @mail['to'].to_s
120
+ end
121
+
122
+ test 'response should contain message' do
123
+ assert_equal @data['message'], I18n.t('devise_token_auth.confirmations.sended', email: @resource.email)
124
+ end
125
+ end
126
+
127
+ describe 'on failure' do
128
+ before do
129
+ post :create,
130
+ params: { email: 'chester@cheet.ah',
131
+ redirect_url: @redirect_url },
132
+ xhr: true
133
+ @data = JSON.parse(response.body)
134
+ end
135
+
136
+ test 'response should contain errors' do
137
+ assert_equal @data['errors'], [I18n.t('devise_token_auth.confirmations.user_not_found', email: 'chester@cheet.ah')]
138
+ end
139
+ end
104
140
  end
141
+ end
105
142
 
106
- test 'should generate raw token' do
107
- assert @token
108
- assert_equal @new_user.confirmation_token, @token
143
+ describe 'with paranoid mode' do
144
+ describe 'on success' do
145
+ before do
146
+ swap Devise, paranoid: true do
147
+ post :create,
148
+ params: { email: @new_user.email,
149
+ redirect_url: @redirect_url },
150
+ xhr: true
151
+ @resource = assigns(:resource)
152
+ @data = JSON.parse(response.body)
153
+ @mail = ActionMailer::Base.deliveries.last
154
+ @token, @client_config = token_and_client_config_from(@mail.body)
155
+ end
156
+ end
157
+
158
+ test 'user should not be confirmed' do
159
+ assert_nil @resource.confirmed_at
160
+ end
161
+
162
+ test 'should generate raw token' do
163
+ assert @token
164
+ assert_equal @new_user.confirmation_token, @token
165
+ end
166
+
167
+ test 'user should receive confirmation email' do
168
+ assert_equal @resource.email, @mail['to'].to_s
169
+ end
170
+
171
+ test 'response should contain message' do
172
+ assert_equal @data['message'], I18n.t('devise_token_auth.confirmations.sended_paranoid', email: @resource.email)
173
+ end
109
174
  end
110
175
 
111
- test 'user should receive confirmation email' do
112
- assert_equal @resource.email, @mail['to'].to_s
176
+ describe 'on failure' do
177
+ before do
178
+ swap Devise, paranoid: true do
179
+ post :create,
180
+ params: { email: 'chester@cheet.ah',
181
+ redirect_url: @redirect_url },
182
+ xhr: true
183
+ @data = JSON.parse(response.body)
184
+ end
185
+ end
186
+
187
+ test 'response should contain errors' do
188
+ assert_equal @data['errors'], [I18n.t('devise_token_auth.confirmations.sended_paranoid')]
189
+ end
113
190
  end
114
-
115
191
  end
116
192
  end
117
193
 
@@ -18,7 +18,7 @@ class OmniauthTest < ActionDispatch::IntegrationTest
18
18
 
19
19
  def get_parsed_data_json
20
20
  encoded_json_data = @response.body.match(/var data \= JSON.parse\(decodeURIComponent\(\'(.+)\'\)\)\;/)[1]
21
- JSON.parse(URI.unescape(encoded_json_data))
21
+ JSON.parse(CGI.unescape(encoded_json_data))
22
22
  end
23
23
 
24
24
  describe 'success callback' do
@@ -346,7 +346,7 @@ class OmniauthTest < ActionDispatch::IntegrationTest
346
346
  follow_all_redirects!
347
347
 
348
348
  data = get_parsed_data_json
349
- assert_equal "Redirect to &#39;#{@bad_redirect_url}&#39; not allowed.",
349
+ assert_equal "Redirect to '#{@bad_redirect_url}' not allowed.",
350
350
  data['error']
351
351
  end
352
352
 
@@ -85,37 +85,89 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase
85
85
  end
86
86
 
87
87
  describe 'request password reset' do
88
- describe 'unknown user should return 404' do
89
- before do
90
- post :create,
91
- params: { email: 'chester@cheet.ah',
92
- redirect_url: @redirect_url }
93
- @data = JSON.parse(response.body)
94
- end
88
+ describe 'unknown user' do
89
+ describe 'without paranoid mode' do
90
+ before do
91
+ post :create,
92
+ params: { email: 'chester@cheet.ah',
93
+ redirect_url: @redirect_url }
94
+ @data = JSON.parse(response.body)
95
+ end
95
96
 
96
- test 'unknown user should return 404' do
97
- assert_equal 404, response.status
97
+ test 'unknown user should return 404' do
98
+ assert_equal 404, response.status
99
+ end
100
+
101
+ test 'errors should be returned' do
102
+ assert @data['errors']
103
+ assert_equal @data['errors'],
104
+ [I18n.t('devise_token_auth.passwords.user_not_found',
105
+ email: 'chester@cheet.ah')]
106
+ end
98
107
  end
99
108
 
100
- test 'errors should be returned' do
101
- assert @data['errors']
102
- assert_equal @data['errors'],
103
- [I18n.t('devise_token_auth.passwords.user_not_found',
104
- email: 'chester@cheet.ah')]
109
+ describe 'with paranoid mode' do
110
+ before do
111
+ swap Devise, paranoid: true do
112
+ post :create,
113
+ params: { email: 'chester@cheet.ah',
114
+ redirect_url: @redirect_url }
115
+ @data = JSON.parse(response.body)
116
+ end
117
+ end
118
+
119
+ test 'unknown user should return 404' do
120
+ assert_equal 404, response.status
121
+ end
122
+
123
+ test 'errors should be returned' do
124
+ assert @data['errors']
125
+ assert_equal @data['errors'],
126
+ [I18n.t('devise_token_auth.passwords.sended_paranoid')]
127
+ end
105
128
  end
106
129
  end
107
130
 
108
131
  describe 'successfully requested password reset' do
109
- before do
110
- post :create,
111
- params: { email: @resource.email,
112
- redirect_url: @redirect_url }
132
+ describe 'without paranoid mode' do
133
+ before do
134
+ post :create,
135
+ params: { email: @resource.email,
136
+ redirect_url: @redirect_url }
113
137
 
114
- @data = JSON.parse(response.body)
138
+ @data = JSON.parse(response.body)
139
+ end
140
+
141
+ test 'response should not contain extra data' do
142
+ assert_nil @data['data']
143
+ end
144
+
145
+ test 'response should contains message' do
146
+ assert_equal \
147
+ @data['message'],
148
+ I18n.t('devise_token_auth.passwords.sended', email: @resource.email)
149
+ end
115
150
  end
116
151
 
117
- test 'response should not contain extra data' do
118
- assert_nil @data['data']
152
+ describe 'with paranoid mode' do
153
+ before do
154
+ swap Devise, paranoid: true do
155
+ post :create,
156
+ params: { email: @resource.email,
157
+ redirect_url: @redirect_url }
158
+ @data = JSON.parse(response.body)
159
+ end
160
+ end
161
+
162
+ test 'response should return success status' do
163
+ assert_equal 200, response.status
164
+ end
165
+
166
+ test 'response should contain message' do
167
+ assert_equal \
168
+ @data['message'],
169
+ I18n.t('devise_token_auth.passwords.sended_paranoid')
170
+ end
119
171
  end
120
172
  end
121
173
 
@@ -10,6 +10,17 @@ require 'test_helper'
10
10
 
11
11
  class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::IntegrationTest
12
12
  describe DeviseTokenAuth::RegistrationsController do
13
+
14
+ def mock_registration_params
15
+ {
16
+ email: Faker::Internet.email,
17
+ password: 'secret123',
18
+ password_confirmation: 'secret123',
19
+ confirm_success_url: Faker::Internet.url,
20
+ unpermitted_param: '(x_x)'
21
+ }
22
+ end
23
+
13
24
  describe 'Validate non-empty body' do
14
25
  before do
15
26
  # need to post empty data
@@ -41,13 +52,7 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
41
52
  @mails_sent = ActionMailer::Base.deliveries.count
42
53
 
43
54
  post '/auth',
44
- params: {
45
- email: Faker::Internet.email,
46
- password: 'secret123',
47
- password_confirmation: 'secret123',
48
- confirm_success_url: Faker::Internet.url,
49
- unpermitted_param: '(x_x)'
50
- }
55
+ params: mock_registration_params
51
56
 
52
57
  @resource = assigns(:resource)
53
58
  @data = JSON.parse(response.body)
@@ -87,17 +92,10 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
87
92
  before do
88
93
  @original_duration = Devise.allow_unconfirmed_access_for
89
94
  Devise.allow_unconfirmed_access_for = nil
90
- post '/auth',
91
- params: {
92
- email: Faker::Internet.email,
93
- password: 'secret123',
94
- password_confirmation: 'secret123',
95
- confirm_success_url: Faker::Internet.url,
96
- unpermitted_param: '(x_x)'
97
- }
98
95
  end
99
96
 
100
97
  test 'auth headers were returned in response' do
98
+ post '/auth', params: mock_registration_params
101
99
  assert response.headers['access-token']
102
100
  assert response.headers['token-type']
103
101
  assert response.headers['client']
@@ -105,6 +103,21 @@ class DeviseTokenAuth::RegistrationsControllerTest < ActionDispatch::Integration
105
103
  assert response.headers['uid']
106
104
  end
107
105
 
106
+ describe 'using auth cookie' do
107
+ before do
108
+ DeviseTokenAuth.cookie_enabled = true
109
+ end
110
+
111
+ test 'auth cookie was returned in response' do
112
+ post '/auth', params: mock_registration_params
113
+ assert response.cookies[DeviseTokenAuth.cookie_name]
114
+ end
115
+
116
+ after do
117
+ DeviseTokenAuth.cookie_enabled = false
118
+ end
119
+ end
120
+
108
121
  after do
109
122
  Devise.allow_unconfirmed_access_for = @original_duration
110
123
  end
@@ -17,11 +17,12 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
17
17
 
18
18
  describe 'success' do
19
19
  before do
20
- post :create,
21
- params: {
22
- email: @existing_user.email,
23
- password: @existing_user.password
24
- }
20
+ @user_session_params = {
21
+ email: @existing_user.email,
22
+ password: @existing_user.password
23
+ }
24
+
25
+ post :create, params: @user_session_params
25
26
 
26
27
  @resource = assigns(:resource)
27
28
  @data = JSON.parse(response.body)
@@ -35,17 +36,27 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
35
36
  assert_equal @existing_user.email, @data['data']['email']
36
37
  end
37
38
 
39
+ describe 'using auth cookie' do
40
+ before do
41
+ DeviseTokenAuth.cookie_enabled = true
42
+ end
43
+
44
+ test 'request should return auth cookie' do
45
+ post :create, params: @user_session_params
46
+ assert response.cookies[DeviseTokenAuth.cookie_name]
47
+ end
48
+
49
+ after do
50
+ DeviseTokenAuth.cookie_enabled = false
51
+ end
52
+ end
53
+
38
54
  describe "with multiple clients and headers don't change in each request" do
39
55
  before do
40
56
  # Set the max_number_of_devices to a lower number
41
57
  # to expedite tests! (Default is 10)
42
58
  DeviseTokenAuth.max_number_of_devices = 2
43
59
  DeviseTokenAuth.change_headers_on_each_request = false
44
-
45
- @user_session_params = {
46
- email: @existing_user.email,
47
- password: @existing_user.password
48
- }
49
60
  end
50
61
 
51
62
  test 'should limit the maximum number of concurrent devices' do
@@ -159,6 +170,24 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
159
170
  test 'session was destroyed' do
160
171
  assert_equal true, @controller.reset_session_called
161
172
  end
173
+
174
+ describe 'using auth cookie' do
175
+ before do
176
+ DeviseTokenAuth.cookie_enabled = true
177
+ @auth_token = @existing_user.create_new_auth_token
178
+ @controller.send(:cookies)[DeviseTokenAuth.cookie_name] = { value: @auth_token.to_json }
179
+ end
180
+
181
+ test 'auth cookie was destroyed' do
182
+ assert_equal @auth_token.to_json, @controller.send(:cookies)[DeviseTokenAuth.cookie_name] # sanity check
183
+ delete :destroy, format: :json
184
+ assert_nil @controller.send(:cookies)[DeviseTokenAuth.cookie_name]
185
+ end
186
+
187
+ after do
188
+ DeviseTokenAuth.cookie_enabled = false
189
+ end
190
+ end
162
191
  end
163
192
 
164
193
  describe 'unauthed user sign out' do
@@ -57,7 +57,7 @@ class DeviseTokenAuth::UnlocksControllerTest < ActionController::TestCase
57
57
  end
58
58
 
59
59
  describe 'request unlock' do
60
- describe 'unknown user should return 404' do
60
+ describe 'without paranoid mode' do
61
61
  before do
62
62
  post :create, params: { email: 'chester@cheet.ah' }
63
63
  @data = JSON.parse(response.body)
@@ -68,9 +68,26 @@ class DeviseTokenAuth::UnlocksControllerTest < ActionController::TestCase
68
68
 
69
69
  test 'errors should be returned' do
70
70
  assert @data['errors']
71
- assert_equal @data['errors'],
72
- [I18n.t('devise_token_auth.passwords.user_not_found',
73
- email: 'chester@cheet.ah')]
71
+ assert_equal @data['errors'], [I18n.t('devise_token_auth.unlocks.user_not_found',
72
+ email: 'chester@cheet.ah')]
73
+ end
74
+ end
75
+
76
+ describe 'with paranoid mode' do
77
+ before do
78
+ swap Devise, paranoid: true do
79
+ post :create, params: { email: 'chester@cheet.ah' }
80
+ @data = JSON.parse(response.body)
81
+ end
82
+ end
83
+
84
+ test 'unknown user should return 404' do
85
+ assert_equal 404, response.status
86
+ end
87
+
88
+ test 'errors should be returned' do
89
+ assert @data['errors']
90
+ assert_equal @data['errors'], [I18n.t('devise_token_auth.unlocks.sended_paranoid')]
74
91
  end
75
92
  end
76
93
 
@@ -38,7 +38,7 @@ class Overrides::ConfirmationsControllerTest < ActionDispatch::IntegrationTest
38
38
  override_proof_str = '(^^,)'
39
39
 
40
40
  # ensure present in redirect URL
41
- override_proof_param = URI.unescape(response.headers['Location']
41
+ override_proof_param = CGI.unescape(response.headers['Location']
42
42
  .match(/override_proof=([^&]*)&/)[1])
43
43
 
44
44
  assert_equal override_proof_str, override_proof_param
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ConfirmableUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :registerable,
6
+ :recoverable, :rememberable,
7
+ :validatable, :confirmable
8
+ DeviseTokenAuth.send_confirmation_email = true
9
+ include DeviseTokenAuth::Concerns::User
10
+ DeviseTokenAuth.send_confirmation_email = false
11
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ConfirmableUser
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+ include Mongoid::Locker
7
+
8
+ field :locker_locked_at, type: Time
9
+ field :locker_locked_until, type: Time
10
+
11
+ locker locked_at_field: :locker_locked_at,
12
+ locked_until_field: :locker_locked_until
13
+
14
+ ## User Info
15
+ field :name, type: String
16
+ field :nickname, type: String
17
+ field :image, type: String
18
+
19
+ ## Database authenticatable
20
+ field :email, type: String, default: ''
21
+ field :encrypted_password, type: String, default: ''
22
+
23
+ ## Recoverable
24
+ field :reset_password_token, type: String
25
+ field :reset_password_sent_at, type: Time
26
+ field :reset_password_redirect_url, type: String
27
+ field :allow_password_change, type: Boolean, default: false
28
+
29
+ ## Rememberable
30
+ field :remember_created_at, type: Time
31
+
32
+ ## Confirmable
33
+ field :confirmation_token, type: String
34
+ field :confirmed_at, type: Time
35
+ field :confirmation_sent_at, type: Time
36
+ field :unconfirmed_email, type: String # Only if using reconfirmable
37
+
38
+ ## Required
39
+ field :provider, type: String
40
+ field :uid, type: String, default: ''
41
+
42
+ ## Tokens
43
+ field :tokens, type: Hash, default: {}
44
+
45
+ # Include default devise modules.
46
+ devise :database_authenticatable, :registerable,
47
+ :recoverable, :rememberable, :trackable,
48
+ :validatable, :confirmable
49
+ DeviseTokenAuth.send_confirmation_email = true
50
+ include DeviseTokenAuth::Concerns::User
51
+ DeviseTokenAuth.send_confirmation_email = false
52
+ end
@@ -2,8 +2,6 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Dummy</title>
5
- <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
- <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
7
5
  <%= csrf_meta_tags %>
8
6
  </head>
9
7
  <body>
@@ -4,7 +4,6 @@ require File.expand_path('boot', __dir__)
4
4
 
5
5
  require 'action_controller/railtie'
6
6
  require 'action_mailer/railtie'
7
- require 'sprockets/railtie'
8
7
  require 'rails/generators'
9
8
  require 'rack/cors'
10
9
 
@@ -29,16 +29,6 @@ Rails.application.configure do
29
29
  # Raise an error on page load if there are pending migrations.
30
30
  config.active_record.migration_error = :page_load
31
31
 
32
- # Debug mode disables concatenation and preprocessing of assets.
33
- # This option may cause significant delays in view rendering with a large
34
- # number of complex assets.
35
- config.assets.debug = true
36
-
37
- # Adds additional error checking when serving assets at runtime.
38
- # Checks for improperly declared sprockets dependencies.
39
- # Raises helpful error messages.
40
- config.assets.raise_runtime_errors = true
41
-
42
32
  # Raises error for missing translations
43
33
  # config.action_view.raise_on_missing_translations = true
44
34