devise 4.3.0 → 4.4.2

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

Potentially problematic release.


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

Files changed (217) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +15 -5
  3. data/CHANGELOG.md +41 -0
  4. data/Gemfile +2 -3
  5. data/Gemfile.lock +3 -4
  6. data/ISSUE_TEMPLATE.md +19 -0
  7. data/README.md +97 -4
  8. data/Rakefile +1 -0
  9. data/app/controllers/devise/confirmations_controller.rb +2 -0
  10. data/app/controllers/devise/omniauth_callbacks_controller.rb +3 -1
  11. data/app/controllers/devise/passwords_controller.rb +2 -0
  12. data/app/controllers/devise/registrations_controller.rb +5 -3
  13. data/app/controllers/devise/sessions_controller.rb +3 -1
  14. data/app/controllers/devise/unlocks_controller.rb +2 -0
  15. data/app/controllers/devise_controller.rb +2 -0
  16. data/app/helpers/devise_helper.rb +2 -0
  17. data/app/mailers/devise/mailer.rb +2 -0
  18. data/app/views/devise/confirmations/new.html.erb +1 -1
  19. data/app/views/devise/passwords/new.html.erb +1 -1
  20. data/app/views/devise/registrations/edit.html.erb +1 -1
  21. data/app/views/devise/registrations/new.html.erb +1 -1
  22. data/app/views/devise/sessions/new.html.erb +1 -1
  23. data/app/views/devise/unlocks/new.html.erb +1 -1
  24. data/devise.gemspec +3 -1
  25. data/gemfiles/Gemfile.rails-4.1-stable +3 -1
  26. data/gemfiles/Gemfile.rails-4.1-stable.lock +4 -4
  27. data/gemfiles/Gemfile.rails-4.2-stable +3 -1
  28. data/gemfiles/Gemfile.rails-4.2-stable.lock +4 -4
  29. data/gemfiles/Gemfile.rails-5.0-stable +2 -3
  30. data/gemfiles/Gemfile.rails-5.0-stable.lock +3 -4
  31. data/gemfiles/Gemfile.rails-5.2-rc1 +26 -0
  32. data/gemfiles/Gemfile.rails-5.2-rc1.lock +201 -0
  33. data/guides/bug_report_templates/integration_test.rb +2 -0
  34. data/lib/devise/controllers/helpers.rb +2 -0
  35. data/lib/devise/controllers/rememberable.rb +2 -0
  36. data/lib/devise/controllers/scoped_views.rb +2 -0
  37. data/lib/devise/controllers/sign_in_out.rb +6 -1
  38. data/lib/devise/controllers/store_location.rb +24 -6
  39. data/lib/devise/controllers/url_helpers.rb +2 -0
  40. data/lib/devise/delegator.rb +2 -0
  41. data/lib/devise/encryptor.rb +2 -0
  42. data/lib/devise/failure_app.rb +2 -0
  43. data/lib/devise/hooks/activatable.rb +2 -0
  44. data/lib/devise/hooks/csrf_cleaner.rb +2 -0
  45. data/lib/devise/hooks/forgetable.rb +2 -0
  46. data/lib/devise/hooks/lockable.rb +2 -0
  47. data/lib/devise/hooks/proxy.rb +2 -0
  48. data/lib/devise/hooks/rememberable.rb +2 -0
  49. data/lib/devise/hooks/timeoutable.rb +2 -0
  50. data/lib/devise/hooks/trackable.rb +2 -0
  51. data/lib/devise/mailers/helpers.rb +2 -0
  52. data/lib/devise/mapping.rb +2 -0
  53. data/lib/devise/models/authenticatable.rb +4 -2
  54. data/lib/devise/models/confirmable.rb +3 -1
  55. data/lib/devise/models/database_authenticatable.rb +3 -1
  56. data/lib/devise/models/lockable.rb +8 -2
  57. data/lib/devise/models/omniauthable.rb +2 -0
  58. data/lib/devise/models/recoverable.rb +2 -0
  59. data/lib/devise/models/registerable.rb +2 -0
  60. data/lib/devise/models/rememberable.rb +3 -1
  61. data/lib/devise/models/timeoutable.rb +2 -0
  62. data/lib/devise/models/trackable.rb +7 -0
  63. data/lib/devise/models/validatable.rb +3 -1
  64. data/lib/devise/models.rb +2 -0
  65. data/lib/devise/modules.rb +2 -0
  66. data/lib/devise/omniauth/config.rb +2 -0
  67. data/lib/devise/omniauth/url_helpers.rb +2 -0
  68. data/lib/devise/omniauth.rb +2 -0
  69. data/lib/devise/orm/active_record.rb +2 -0
  70. data/lib/devise/orm/mongoid.rb +2 -0
  71. data/lib/devise/parameter_filter.rb +2 -0
  72. data/lib/devise/parameter_sanitizer.rb +2 -0
  73. data/lib/devise/rails/routes.rb +2 -0
  74. data/lib/devise/rails/warden_compat.rb +2 -0
  75. data/lib/devise/rails.rb +5 -1
  76. data/lib/devise/strategies/authenticatable.rb +2 -0
  77. data/lib/devise/strategies/base.rb +2 -0
  78. data/lib/devise/strategies/database_authenticatable.rb +2 -0
  79. data/lib/devise/strategies/rememberable.rb +2 -0
  80. data/lib/devise/test/controller_helpers.rb +3 -0
  81. data/lib/devise/test/integration_helpers.rb +2 -0
  82. data/lib/devise/test_helpers.rb +2 -0
  83. data/lib/devise/time_inflector.rb +2 -0
  84. data/lib/devise/token_generator.rb +2 -0
  85. data/lib/devise/version.rb +3 -1
  86. data/lib/devise.rb +3 -1
  87. data/lib/generators/active_record/devise_generator.rb +15 -2
  88. data/lib/generators/active_record/templates/migration.rb +3 -1
  89. data/lib/generators/active_record/templates/migration_existing.rb +2 -0
  90. data/lib/generators/devise/controllers_generator.rb +2 -0
  91. data/lib/generators/devise/devise_generator.rb +4 -2
  92. data/lib/generators/devise/install_generator.rb +2 -0
  93. data/lib/generators/devise/orm_helpers.rb +7 -1
  94. data/lib/generators/devise/views_generator.rb +7 -8
  95. data/lib/generators/mongoid/devise_generator.rb +2 -0
  96. data/lib/generators/templates/controllers/confirmations_controller.rb +2 -0
  97. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +2 -0
  98. data/lib/generators/templates/controllers/passwords_controller.rb +2 -0
  99. data/lib/generators/templates/controllers/registrations_controller.rb +2 -0
  100. data/lib/generators/templates/controllers/sessions_controller.rb +2 -0
  101. data/lib/generators/templates/controllers/unlocks_controller.rb +2 -0
  102. data/lib/generators/templates/devise.rb +6 -0
  103. data/test/controllers/custom_registrations_controller_test.rb +2 -0
  104. data/test/controllers/custom_strategy_test.rb +2 -0
  105. data/test/controllers/helper_methods_test.rb +2 -0
  106. data/test/controllers/helpers_test.rb +2 -0
  107. data/test/controllers/inherited_controller_i18n_messages_test.rb +2 -0
  108. data/test/controllers/internal_helpers_test.rb +2 -0
  109. data/test/controllers/load_hooks_controller_test.rb +2 -0
  110. data/test/controllers/passwords_controller_test.rb +2 -0
  111. data/test/controllers/sessions_controller_test.rb +2 -0
  112. data/test/controllers/url_helpers_test.rb +2 -0
  113. data/test/delegator_test.rb +2 -0
  114. data/test/devise_test.rb +2 -0
  115. data/test/failure_app_test.rb +2 -0
  116. data/test/generators/active_record_generator_test.rb +47 -0
  117. data/test/generators/controllers_generator_test.rb +2 -0
  118. data/test/generators/devise_generator_test.rb +2 -0
  119. data/test/generators/install_generator_test.rb +2 -0
  120. data/test/generators/mongoid_generator_test.rb +2 -0
  121. data/test/generators/views_generator_test.rb +2 -0
  122. data/test/helpers/devise_helper_test.rb +2 -0
  123. data/test/integration/authenticatable_test.rb +9 -1
  124. data/test/integration/confirmable_test.rb +2 -0
  125. data/test/integration/database_authenticatable_test.rb +2 -0
  126. data/test/integration/http_authenticatable_test.rb +8 -0
  127. data/test/integration/lockable_test.rb +5 -3
  128. data/test/integration/mounted_engine_test.rb +2 -0
  129. data/test/integration/omniauthable_test.rb +13 -0
  130. data/test/integration/recoverable_test.rb +2 -0
  131. data/test/integration/registerable_test.rb +2 -0
  132. data/test/integration/rememberable_test.rb +3 -1
  133. data/test/integration/timeoutable_test.rb +2 -0
  134. data/test/integration/trackable_test.rb +7 -0
  135. data/test/mailers/confirmation_instructions_test.rb +2 -0
  136. data/test/mailers/email_changed_test.rb +2 -0
  137. data/test/mailers/mailer_test.rb +2 -0
  138. data/test/mailers/reset_password_instructions_test.rb +2 -0
  139. data/test/mailers/unlock_instructions_test.rb +2 -0
  140. data/test/mapping_test.rb +2 -0
  141. data/test/models/authenticatable_test.rb +2 -0
  142. data/test/models/confirmable_test.rb +13 -0
  143. data/test/models/database_authenticatable_test.rb +2 -0
  144. data/test/models/lockable_test.rb +2 -0
  145. data/test/models/omniauthable_test.rb +2 -0
  146. data/test/models/recoverable_test.rb +2 -0
  147. data/test/models/registerable_test.rb +2 -0
  148. data/test/models/rememberable_test.rb +2 -0
  149. data/test/models/serializable_test.rb +6 -0
  150. data/test/models/timeoutable_test.rb +2 -0
  151. data/test/models/trackable_test.rb +21 -0
  152. data/test/models/validatable_test.rb +4 -2
  153. data/test/models_test.rb +2 -0
  154. data/test/omniauth/config_test.rb +2 -0
  155. data/test/omniauth/url_helpers_test.rb +2 -0
  156. data/test/orm/active_record.rb +8 -1
  157. data/test/orm/mongoid.rb +3 -1
  158. data/test/parameter_sanitizer_test.rb +2 -0
  159. data/test/rails_app/app/active_record/admin.rb +2 -0
  160. data/test/rails_app/app/active_record/shim.rb +2 -0
  161. data/test/rails_app/app/active_record/user.rb +13 -0
  162. data/test/rails_app/app/active_record/user_on_engine.rb +2 -0
  163. data/test/rails_app/app/active_record/user_on_main_app.rb +2 -0
  164. data/test/rails_app/app/active_record/user_with_validations.rb +12 -0
  165. data/test/rails_app/app/active_record/user_without_email.rb +2 -0
  166. data/test/rails_app/app/controllers/admins/sessions_controller.rb +2 -0
  167. data/test/rails_app/app/controllers/admins_controller.rb +2 -0
  168. data/test/rails_app/app/controllers/application_controller.rb +2 -0
  169. data/test/rails_app/app/controllers/application_with_fake_engine.rb +2 -0
  170. data/test/rails_app/app/controllers/custom/registrations_controller.rb +2 -0
  171. data/test/rails_app/app/controllers/home_controller.rb +2 -0
  172. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +2 -0
  173. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +2 -0
  174. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +2 -0
  175. data/test/rails_app/app/controllers/users_controller.rb +2 -0
  176. data/test/rails_app/app/helpers/application_helper.rb +2 -0
  177. data/test/rails_app/app/mailers/users/from_proc_mailer.rb +2 -0
  178. data/test/rails_app/app/mailers/users/mailer.rb +2 -0
  179. data/test/rails_app/app/mailers/users/reply_to_mailer.rb +2 -0
  180. data/test/rails_app/app/mongoid/admin.rb +2 -0
  181. data/test/rails_app/app/mongoid/shim.rb +2 -0
  182. data/test/rails_app/app/mongoid/user.rb +11 -0
  183. data/test/rails_app/app/mongoid/user_on_engine.rb +2 -0
  184. data/test/rails_app/app/mongoid/user_on_main_app.rb +2 -0
  185. data/test/rails_app/app/mongoid/user_with_validations.rb +37 -0
  186. data/test/rails_app/app/mongoid/user_without_email.rb +2 -0
  187. data/test/rails_app/config/application.rb +6 -2
  188. data/test/rails_app/config/boot.rb +8 -1
  189. data/test/rails_app/config/environment.rb +2 -0
  190. data/test/rails_app/config/environments/development.rb +2 -0
  191. data/test/rails_app/config/environments/production.rb +2 -0
  192. data/test/rails_app/config/environments/test.rb +2 -0
  193. data/test/rails_app/config/initializers/backtrace_silencers.rb +2 -0
  194. data/test/rails_app/config/initializers/devise.rb +2 -0
  195. data/test/rails_app/config/initializers/inflections.rb +2 -0
  196. data/test/rails_app/config/initializers/secret_token.rb +2 -0
  197. data/test/rails_app/config/initializers/session_store.rb +2 -0
  198. data/test/rails_app/config/routes.rb +2 -0
  199. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +2 -0
  200. data/test/rails_app/db/schema.rb +2 -0
  201. data/test/rails_app/lib/shared_admin.rb +2 -0
  202. data/test/rails_app/lib/shared_user.rb +2 -0
  203. data/test/rails_app/lib/shared_user_without_email.rb +2 -0
  204. data/test/rails_app/lib/shared_user_without_omniauth.rb +2 -0
  205. data/test/rails_test.rb +2 -0
  206. data/test/routes_test.rb +2 -0
  207. data/test/support/action_controller/record_identifier.rb +2 -0
  208. data/test/support/assertions.rb +2 -0
  209. data/test/support/helpers.rb +6 -0
  210. data/test/support/http_method_compatibility.rb +2 -0
  211. data/test/support/integration.rb +3 -0
  212. data/test/support/webrat/integrations/rails.rb +2 -0
  213. data/test/test/controller_helpers_test.rb +8 -1
  214. data/test/test/integration_helpers_test.rb +2 -0
  215. data/test/test_helper.rb +2 -0
  216. data/test/test_models.rb +2 -0
  217. metadata +12 -5
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'devise/strategies/authenticatable'
2
4
 
3
5
  module Devise
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'devise/strategies/authenticatable'
2
4
 
3
5
  module Devise
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devise
2
4
  module Test
3
5
  # `Devise::Test::ControllerHelpers` provides a facility to test controllers
@@ -137,6 +139,7 @@ module Devise
137
139
 
138
140
  status, headers, response = Devise.warden_config[:failure_app].call(env).to_a
139
141
  @controller.response.headers.merge!(headers)
142
+ @controller.response.content_type = headers["Content-Type"] unless Devise::Test.rails5?
140
143
  @controller.status = status
141
144
  @controller.response.body = response.body
142
145
  nil # causes process return @response
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devise
2
4
  # Devise::Test::IntegrationHelpers is a helper module for facilitating
3
5
  # authentication on Rails integration tests to bypass the required steps for
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devise
2
4
  module TestHelpers
3
5
  def self.included(base)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_support/core_ext/module/delegation"
2
4
 
3
5
  module Devise
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'openssl'
2
4
 
3
5
  module Devise
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devise
2
- VERSION = "4.3.0".freeze
4
+ VERSION = "4.4.2".freeze
3
5
  end
data/lib/devise.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails'
2
4
  require 'active_support/core_ext/numeric/time'
3
5
  require 'active_support/dependencies'
@@ -149,7 +151,7 @@ module Devise
149
151
  mattr_accessor :timeout_in
150
152
  @@timeout_in = 30.minutes
151
153
 
152
- # Used to hash the password. Please generate one with rake secret.
154
+ # Used to hash the password. Please generate one with rails secret.
153
155
  mattr_accessor :pepper
154
156
  @@pepper = nil
155
157
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/active_record'
2
4
  require 'generators/devise/orm_helpers'
3
5
 
@@ -6,14 +8,16 @@ module ActiveRecord
6
8
  class DeviseGenerator < ActiveRecord::Generators::Base
7
9
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
8
10
 
11
+ class_option :primary_key_type, type: :string, desc: "The type for primary key"
12
+
9
13
  include Devise::Generators::OrmHelpers
10
14
  source_root File.expand_path("../templates", __FILE__)
11
15
 
12
16
  def copy_devise_migration
13
17
  if (behavior == :invoke && model_exists?) || (behavior == :revoke && migration_exists?(table_name))
14
- migration_template "migration_existing.rb", "db/migrate/add_devise_to_#{table_name}.rb", migration_version: migration_version
18
+ migration_template "migration_existing.rb", "#{migration_path}/add_devise_to_#{table_name}.rb", migration_version: migration_version
15
19
  else
16
- migration_template "migration.rb", "db/migrate/devise_create_#{table_name}.rb", migration_version: migration_version
20
+ migration_template "migration.rb", "#{migration_path}/devise_create_#{table_name}.rb", migration_version: migration_version
17
21
  end
18
22
  end
19
23
 
@@ -92,6 +96,15 @@ RUBY
92
96
  "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
93
97
  end
94
98
  end
99
+
100
+ def primary_key_type
101
+ primary_key_string if rails5?
102
+ end
103
+
104
+ def primary_key_string
105
+ key_string = options[:primary_key_type]
106
+ ", id: :#{key_string}" if key_string
107
+ end
95
108
  end
96
109
  end
97
110
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class DeviseCreate<%= table_name.camelize %> < ActiveRecord::Migration<%= migration_version %>
2
4
  def change
3
- create_table :<%= table_name %> do |t|
5
+ create_table :<%= table_name %><%= primary_key_type %> do |t|
4
6
  <%= migration_data -%>
5
7
 
6
8
  <% attributes.each do |attribute| -%>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddDeviseTo<%= table_name.camelize %> < ActiveRecord::Migration<%= migration_version %>
2
4
  def self.up
3
5
  change_table :<%= table_name %> do |t|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/base'
2
4
 
3
5
  module Devise
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/named_base'
2
4
 
3
5
  module Devise
@@ -8,7 +10,7 @@ module Devise
8
10
  namespace "devise"
9
11
  source_root File.expand_path("../templates", __FILE__)
10
12
 
11
- desc "Generates a model with the given NAME (if one does not exist) with devise " <<
13
+ desc "Generates a model with the given NAME (if one does not exist) with devise " \
12
14
  "configuration plus a migration file and devise routes."
13
15
 
14
16
  hook_for :orm
@@ -16,7 +18,7 @@ module Devise
16
18
  class_option :routes, desc: "Generate routes", type: :boolean, default: true
17
19
 
18
20
  def add_devise_routes
19
- devise_route = "devise_for :#{plural_name}"
21
+ devise_route = "devise_for :#{plural_name}".dup
20
22
  devise_route << %Q(, class_name: "#{class_name}") if class_name.include?("::")
21
23
  devise_route << %Q(, skip: :all) unless options.routes?
22
24
  route devise_route
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/base'
2
4
  require 'securerandom'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devise
2
4
  module Generators
3
5
  module OrmHelpers
@@ -23,7 +25,11 @@ CONTENT
23
25
  end
24
26
 
25
27
  def migration_path
26
- @migration_path ||= File.join("db", "migrate")
28
+ if Rails.version >= '5.0.3'
29
+ db_migrate_path
30
+ else
31
+ @migration_path ||= File.join("db", "migrate")
32
+ end
27
33
  end
28
34
 
29
35
  def model_path
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/base'
2
4
 
3
5
  module Devise
@@ -21,13 +23,6 @@ module Devise
21
23
  public_task :copy_views
22
24
  end
23
25
 
24
- # TODO: Add this to Rails itself
25
- module ClassMethods
26
- def hide!
27
- Rails::Generators.hide_namespace self.namespace
28
- end
29
- end
30
-
31
26
  def copy_views
32
27
  if options[:views]
33
28
  options[:views].each do |directory|
@@ -139,7 +134,11 @@ module Devise
139
134
  default: defined?(SimpleForm) ? "simple_form_for" : "form_for"
140
135
 
141
136
  hook_for :markerb, desc: "Generate markerb instead of erb mail views",
142
- default: defined?(Markerb) ? :markerb : :erb,
137
+ default: defined?(Markerb),
138
+ type: :boolean
139
+
140
+ hook_for :erb, desc: "Generate erb mail views",
141
+ default: !defined?(Markerb),
143
142
  type: :boolean
144
143
  end
145
144
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/named_base'
2
4
  require 'generators/devise/orm_helpers'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class <%= @scope_prefix %>ConfirmationsController < Devise::ConfirmationsController
2
4
  # GET /resource/confirmation/new
3
5
  # def new
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class <%= @scope_prefix %>OmniauthCallbacksController < Devise::OmniauthCallbacksController
2
4
  # You should configure your model like this:
3
5
  # devise :omniauthable, omniauth_providers: [:twitter]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class <%= @scope_prefix %>PasswordsController < Devise::PasswordsController
2
4
  # GET /resource/password/new
3
5
  # def new
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class <%= @scope_prefix %>RegistrationsController < Devise::RegistrationsController
2
4
  # before_action :configure_sign_up_params, only: [:create]
3
5
  # before_action :configure_account_update_params, only: [:update]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class <%= @scope_prefix %>SessionsController < Devise::SessionsController
2
4
  # before_action :configure_sign_in_params, only: [:create]
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class <%= @scope_prefix %>UnlocksController < Devise::UnlocksController
2
4
  # GET /resource/unlock/new
3
5
  # def new
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Use this hook to configure devise mailer, warden hooks and so forth.
2
4
  # Many of these configuration options can be set straight in your model.
3
5
  Devise.setup do |config|
@@ -7,6 +9,10 @@ Devise.setup do |config|
7
9
  # Devise will use the `secret_key_base` as its `secret_key`
8
10
  # by default. You can change it below and use your own secret key.
9
11
  # config.secret_key = '<%= SecureRandom.hex(64) %>'
12
+
13
+ # ==> Controller configuration
14
+ # Configure the parent class to the devise controllers.
15
+ # config.parent_controller = 'DeviseController'
10
16
 
11
17
  # ==> Mailer Configuration
12
18
  # Configure the e-mail address which will be shown in Devise::Mailer,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class CustomRegistrationsControllerTest < Devise::ControllerTestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'ostruct'
3
5
  require 'warden/strategies/base'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class ApiController < ActionController::Metal
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'ostruct'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class SessionsInheritedController < Devise::SessionsController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class MyController < DeviseController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class LoadHooksControllerTest < Devise::ControllerTestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class PasswordsControllerTest < Devise::ControllerTestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class SessionsControllerTest < Devise::ControllerTestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class RoutesTest < Devise::ControllerTestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class DelegatorTest < ActiveSupport::TestCase
data/test/devise_test.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module Devise
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'ostruct'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "test_helper"
2
4
 
3
5
  if DEVISE_ORM == :active_record
@@ -13,6 +15,20 @@ if DEVISE_ORM == :active_record
13
15
  assert_migration "db/migrate/devise_create_monsters.rb", /def change/
14
16
  end
15
17
 
18
+ test "all files are properly created with changed db/migrate path in application configuration" do
19
+ old_paths = Rails.application.config.paths["db/migrate"]
20
+ Rails.application.config.paths.add "db/migrate", with: "db2/migrate"
21
+
22
+ run_generator %w(monster)
23
+ if Rails.version >= '5.0.3'
24
+ assert_migration "db2/migrate/devise_create_monsters.rb", /def change/
25
+ else
26
+ assert_migration "db/migrate/devise_create_monsters.rb", /def change/
27
+ end
28
+
29
+ Rails.application.config.paths["db/migrate"] = old_paths
30
+ end
31
+
16
32
  test "all files for namespaced model are properly created" do
17
33
  run_generator %w(admin/monster)
18
34
  assert_migration "db/migrate/devise_create_admin_monsters.rb", /def change/
@@ -25,6 +41,23 @@ if DEVISE_ORM == :active_record
25
41
  assert_migration "db/migrate/add_devise_to_monsters.rb"
26
42
  end
27
43
 
44
+ test "update model migration when model exists with changed db/migrate path in application configuration" do
45
+ old_paths = Rails.application.config.paths["db/migrate"]
46
+ Rails.application.config.paths.add "db/migrate", with: "db2/migrate"
47
+
48
+ run_generator %w(monster)
49
+ assert_file "app/models/monster.rb"
50
+ run_generator %w(monster)
51
+
52
+ if Rails.version >= '5.0.3'
53
+ assert_migration "db2/migrate/add_devise_to_monsters.rb"
54
+ else
55
+ assert_migration "db/migrate/add_devise_to_monsters.rb"
56
+ end
57
+
58
+ Rails.application.config.paths["db/migrate"] = old_paths
59
+ end
60
+
28
61
  test "all files are properly deleted" do
29
62
  run_generator %w(monster)
30
63
  run_generator %w(monster)
@@ -43,6 +76,20 @@ if DEVISE_ORM == :active_record
43
76
  assert_migration "db/migrate/devise_create_monsters.rb", /t.string :current_sign_in_ip/
44
77
  assert_migration "db/migrate/devise_create_monsters.rb", /t.string :last_sign_in_ip/
45
78
  end
79
+
80
+ test "do NOT add primary key type when NOT specified in rails generator" do
81
+ run_generator %w(monster)
82
+ assert_migration "db/migrate/devise_create_monsters.rb", /create_table :monsters do/
83
+ end
84
+
85
+ test "add primary key type with rails 5 when specified in rails generator" do
86
+ run_generator ["monster", "--primary_key_type=uuid"]
87
+ if Rails.version.start_with? '5'
88
+ assert_migration "db/migrate/devise_create_monsters.rb", /create_table :monsters, id: :uuid do/
89
+ else
90
+ assert_migration "db/migrate/devise_create_monsters.rb", /create_table :monsters do/
91
+ end
92
+ end
46
93
  end
47
94
 
48
95
  module RailsEngine
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "test_helper"
2
4
 
3
5
  class ControllersGeneratorTest < Rails::Generators::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  require "generators/devise/devise_generator"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "test_helper"
2
4
 
3
5
  class InstallGeneratorTest < Rails::Generators::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "test_helper"
2
4
 
3
5
  if DEVISE_ORM == :mongoid
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "test_helper"
2
4
 
3
5
  class ViewsGeneratorTest < Rails::Generators::TestCase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class DeviseHelperTest < Devise::IntegrationTest
@@ -1,6 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class AuthenticationSanityTest < Devise::IntegrationTest
6
+ test 'sign in should not run model validations' do
7
+ sign_in_as_user
8
+
9
+ refute User.validations_performed
10
+ end
11
+
4
12
  test 'home should be accessible without sign in' do
5
13
  visit '/'
6
14
  assert_response :success
@@ -369,7 +377,7 @@ class AuthenticationWithScopedViewsTest < Devise::IntegrationTest
369
377
  end
370
378
  end
371
379
 
372
- test 'renders the scoped view if turned on in an specific controller' do
380
+ test 'renders the scoped view if turned on in a specific controller' do
373
381
  begin
374
382
  Devise::SessionsController.scoped_views = true
375
383
  assert_raise Webrat::NotFoundError do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class ConfirmationTest < Devise::IntegrationTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class DatabaseAuthenticationTest < Devise::IntegrationTest
@@ -1,6 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class HttpAuthenticationTest < Devise::IntegrationTest
6
+ test 'sign in with HTTP should not run model validations' do
7
+ sign_in_as_new_user_with_http
8
+
9
+ refute User.validations_performed
10
+ end
11
+
4
12
  test 'handles unverified requests gets rid of caches but continues signed in' do
5
13
  swap ApplicationController, allow_forgery_protection: true do
6
14
  create_user
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class LockTest < Devise::IntegrationTest
@@ -172,7 +174,7 @@ class LockTest < Devise::IntegrationTest
172
174
  assert_equal response.body, {}.to_json
173
175
  end
174
176
 
175
- test "in paranoid mode, when trying to unlock an user that exists it should not say that it exists if it is locked" do
177
+ test "in paranoid mode, when trying to unlock a user that exists it should not say that it exists if it is locked" do
176
178
  swap Devise, paranoid: true do
177
179
  user = create_user(locked: true)
178
180
 
@@ -187,7 +189,7 @@ class LockTest < Devise::IntegrationTest
187
189
  end
188
190
  end
189
191
 
190
- test "in paranoid mode, when trying to unlock an user that exists it should not say that it exists if it is not locked" do
192
+ test "in paranoid mode, when trying to unlock a user that exists it should not say that it exists if it is not locked" do
191
193
  swap Devise, paranoid: true do
192
194
  user = create_user(locked: false)
193
195
 
@@ -202,7 +204,7 @@ class LockTest < Devise::IntegrationTest
202
204
  end
203
205
  end
204
206
 
205
- test "in paranoid mode, when trying to unlock an user that does not exists it should not say that it does not exists" do
207
+ test "in paranoid mode, when trying to unlock a user that does not exists it should not say that it does not exists" do
206
208
  swap Devise, paranoid: true do
207
209
  visit new_user_session_path
208
210
  click_link "Didn't receive unlock instructions?"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class MyMountableEngine
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
 
@@ -40,6 +42,17 @@ class OmniauthableIntegrationTest < Devise::IntegrationTest
40
42
  end
41
43
  end
42
44
 
45
+ test "omniauth sign in should not run model validations" do
46
+ stub_action!(:sign_in_facebook) do
47
+ create_user
48
+ visit "/users/sign_in"
49
+ click_link "Sign in with FaceBook"
50
+ assert warden.authenticated?(:user)
51
+
52
+ refute User.validations_performed
53
+ end
54
+ end
55
+
43
56
  test "can access omniauth.auth in the env hash" do
44
57
  visit "/users/sign_in"
45
58
  click_link "Sign in with FaceBook"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class PasswordTest < Devise::IntegrationTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class RegistrationTest < Devise::IntegrationTest
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class RememberMeTest < Devise::IntegrationTest
@@ -10,7 +12,7 @@ class RememberMeTest < Devise::IntegrationTest
10
12
  end
11
13
 
12
14
  def generate_signed_cookie(raw_cookie)
13
- request = if Devise::Test.rails51?
15
+ request = if Devise::Test.rails51? || Devise::Test.rails52?
14
16
  ActionController::TestRequest.create(Class.new) # needs a "controller class"
15
17
  elsif Devise::Test.rails5?
16
18
  ActionController::TestRequest.create