devise_g5_authenticatable 0.3.0 → 1.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +29 -7
  6. data/Appraisals +21 -0
  7. data/CHANGELOG.md +24 -0
  8. data/Gemfile +11 -7
  9. data/README.md +6 -6
  10. data/Rakefile +6 -5
  11. data/app/controllers/devise_g5_authenticatable/registrations_controller.rb +3 -0
  12. data/app/controllers/devise_g5_authenticatable/sessions_controller.rb +9 -5
  13. data/config/initializers/devise_g5_authenticatable.rb +2 -0
  14. data/devise_g5_authenticatable.gemspec +6 -5
  15. data/gemfiles/rails_4.1.gemfile +26 -0
  16. data/gemfiles/rails_4.2.gemfile +26 -0
  17. data/gemfiles/rails_5.0.gemfile +26 -0
  18. data/gemfiles/rails_5.1.gemfile +26 -0
  19. data/lib/devise_g5_authenticatable/controllers/helpers.rb +5 -0
  20. data/lib/devise_g5_authenticatable/controllers/url_helpers.rb +3 -0
  21. data/lib/devise_g5_authenticatable/engine.rb +4 -1
  22. data/lib/devise_g5_authenticatable/g5/auth_password_validator.rb +6 -1
  23. data/lib/devise_g5_authenticatable/g5/auth_user_creator.rb +16 -15
  24. data/lib/devise_g5_authenticatable/g5/auth_user_updater.rb +11 -5
  25. data/lib/devise_g5_authenticatable/g5/user_exporter.rb +11 -6
  26. data/lib/devise_g5_authenticatable/g5.rb +2 -0
  27. data/lib/devise_g5_authenticatable/hooks/g5_authenticatable.rb +8 -3
  28. data/lib/devise_g5_authenticatable/models/g5_authenticatable.rb +38 -26
  29. data/lib/devise_g5_authenticatable/models/protected_attributes.rb +11 -2
  30. data/lib/devise_g5_authenticatable/omniauth.rb +8 -2
  31. data/lib/devise_g5_authenticatable/routes.rb +48 -35
  32. data/lib/devise_g5_authenticatable/version.rb +3 -1
  33. data/lib/devise_g5_authenticatable.rb +4 -1
  34. data/spec/controllers/helpers_spec.rb +54 -49
  35. data/spec/controllers/sessions_controller_spec.rb +67 -39
  36. data/spec/controllers/url_helpers_spec.rb +78 -78
  37. data/spec/dummy/app/views/{anonymous → devise}/new.html.erb +0 -0
  38. data/spec/dummy/config/environments/test.rb +20 -4
  39. data/spec/dummy/config/initializers/devise.rb +5 -1
  40. data/spec/dummy/config/initializers/rails_compatibility.rb +10 -0
  41. data/spec/dummy/db/migrate/20131230235849_devise_create_users.rb +3 -1
  42. data/spec/dummy/db/migrate/20140102213131_drop_database_authenticatable.rb +3 -1
  43. data/spec/dummy/db/migrate/20140103032308_drop_recoverable.rb +3 -1
  44. data/spec/dummy/db/migrate/20140103042329_drop_rememberable.rb +3 -1
  45. data/spec/dummy/db/migrate/20140103174810_add_omniauth_columns_to_users.rb +3 -1
  46. data/spec/dummy/db/migrate/20140103191601_add_email_back_to_user.rb +3 -1
  47. data/spec/dummy/db/migrate/20140113202948_devise_create_admins.rb +3 -1
  48. data/spec/dummy/db/migrate/20140113233821_add_provider_and_uid_to_admins.rb +3 -1
  49. data/spec/dummy/db/schema.rb +29 -29
  50. data/spec/factories/admin.rb +2 -0
  51. data/spec/factories/user.rb +2 -0
  52. data/spec/features/edit_registration_spec.rb +22 -13
  53. data/spec/features/registration_spec.rb +13 -8
  54. data/spec/features/sign_in_spec.rb +4 -2
  55. data/spec/features/sign_out_spec.rb +4 -2
  56. data/spec/features/token_validation_spec.rb +24 -14
  57. data/spec/g5/auth_password_validator_spec.rb +28 -15
  58. data/spec/g5/auth_user_creator_spec.rb +29 -22
  59. data/spec/g5/auth_user_updater_spec.rb +23 -16
  60. data/spec/g5/user_exporter_spec.rb +36 -31
  61. data/spec/models/g5_authenticatable_spec.rb +78 -38
  62. data/spec/models/protected_attributes_spec.rb +24 -19
  63. data/spec/rails_helper.rb +46 -0
  64. data/spec/routing/registrations_routing_spec.rb +43 -27
  65. data/spec/routing/sessions_routing_spec.rb +46 -29
  66. data/spec/spec_helper.rb +93 -27
  67. data/spec/support/controller_test_helpers.rb +15 -0
  68. data/spec/support/devise.rb +9 -1
  69. data/spec/support/shared_contexts/custom_router.rb +16 -0
  70. data/spec/support/shared_contexts/oauth_error.rb +4 -2
  71. data/spec/support/shared_contexts/rake.rb +10 -4
  72. data/spec/support/shared_examples/registration_error.rb +3 -1
  73. data/spec/support/{user_feature_methods.rb → user_omniauth_methods.rb} +9 -5
  74. data/spec/tasks/export_users_spec.rb +5 -3
  75. metadata +30 -26
  76. data/circle.yml +0 -4
  77. data/spec/support/omniauth.rb +0 -3
@@ -1,12 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Warden::Manager.after_set_user only: :fetch do |record, warden, options|
2
4
  if Devise.g5_strict_token_validation
3
5
  scope = options[:scope]
4
6
 
5
- auth_client = G5AuthenticationClient::Client.new(allow_password_credentials: 'false',
6
- access_token: record.g5_access_token)
7
+ auth_client = G5AuthenticationClient::Client.new(
8
+ allow_password_credentials: 'false',
9
+ access_token: record.g5_access_token
10
+ )
11
+
7
12
  begin
8
13
  auth_client.token_info
9
- rescue StandardError => error
14
+ rescue StandardError
10
15
  proxy = Devise::Hooks::Proxy.new(warden)
11
16
  proxy.sign_out(record)
12
17
  record.revoke_g5_credentials!
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'devise_g5_authenticatable/g5'
2
4
  require 'devise_g5_authenticatable/hooks/g5_authenticatable'
3
5
 
@@ -22,19 +24,13 @@ module Devise
22
24
  end
23
25
 
24
26
  def auth_user
25
- begin
26
- if new_record?
27
- G5::AuthUserCreator.new(self).create
28
- else
29
- G5::AuthUserUpdater.new(self).update
30
- end
31
- rescue OAuth2::Error => e
32
- logger.error("Couldn't save user credentials because: #{e}")
33
- raise ActiveRecord::RecordNotSaved.new(e.code)
34
- rescue StandardError => e
35
- logger.error("Couldn't save user credentials because: #{e}")
36
- raise ActiveRecord::RecordNotSaved.new(e.message)
37
- end
27
+ sync_auth_data
28
+ rescue OAuth2::Error => e
29
+ logger.error("Couldn't save user credentials because: #{e}")
30
+ raise ActiveRecord::RecordNotSaved, e.code
31
+ rescue StandardError => e
32
+ logger.error("Couldn't save user credentials because: #{e}")
33
+ raise ActiveRecord::RecordNotSaved, e.message
38
34
  end
39
35
 
40
36
  def clean_up_passwords
@@ -47,18 +43,14 @@ module Devise
47
43
  end
48
44
 
49
45
  def update_with_password(params)
50
- updated_attributes = params.reject { |k,v| k =~ /password/ && v.blank? }
46
+ updated_attributes = params.reject do |k, v|
47
+ k =~ /password/ && v.blank?
48
+ end
51
49
  current_password = updated_attributes.delete(:current_password)
52
50
 
53
- if valid = valid_password?(current_password)
54
- valid = update_attributes(updated_attributes)
55
- elsif current_password.blank?
56
- errors.add(:current_password, :blank)
57
- else
58
- errors.add(:current_password, :invalid)
51
+ if valid_current_password?(current_password)
52
+ update_attributes(updated_attributes)
59
53
  end
60
-
61
- valid
62
54
  end
63
55
 
64
56
  def update_g5_credentials(oauth_data)
@@ -78,8 +70,7 @@ module Devise
78
70
  }.with_indifferent_access
79
71
  end
80
72
 
81
- def update_roles_from_auth(auth_data)
82
- end
73
+ def update_roles_from_auth(auth_data); end
83
74
 
84
75
  def update_from_auth(auth_data)
85
76
  assign_attributes(attributes_from_auth(auth_data))
@@ -87,11 +78,31 @@ module Devise
87
78
  update_roles_from_auth(auth_data)
88
79
  end
89
80
 
81
+ private
82
+
83
+ def sync_auth_data
84
+ if new_record?
85
+ G5::AuthUserCreator.new(self).create
86
+ else
87
+ G5::AuthUserUpdater.new(self).update
88
+ end
89
+ end
90
+
91
+ def valid_current_password?(current_password)
92
+ return true if valid_password?(current_password)
93
+ error = current_password.blank? ? :blank : :invalid
94
+ errors.add(:current_password, error)
95
+ false
96
+ end
97
+
98
+ # Finders and creation methods based on auth user data
90
99
  module ClassMethods
91
100
  def find_for_g5_oauth(oauth_data)
92
- found_user = find_by_provider_and_uid(oauth_data.provider.to_s, oauth_data.uid.to_s)
101
+ found_user = find_by_provider_and_uid(oauth_data.provider.to_s,
102
+ oauth_data.uid.to_s)
93
103
  return found_user if found_user.present?
94
- find_by_email_and_provider(oauth_data.info.email, oauth_data.provider.to_s)
104
+ find_by_email_and_provider(oauth_data.info.email,
105
+ oauth_data.provider.to_s)
95
106
  end
96
107
 
97
108
  def find_and_update_for_g5_oauth(auth_data)
@@ -114,6 +125,7 @@ module Devise
114
125
  end
115
126
 
116
127
  private
128
+
117
129
  def without_auth_callback
118
130
  skip_callback :save, :before, :auth_user
119
131
  yield
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeviseG5Authenticatable
2
4
  module Models
5
+ # Support protected attributes for users in apps that require it
3
6
  module ProtectedAttributes
4
7
  extend ActiveSupport::Concern
5
8
 
@@ -11,6 +14,12 @@ module DeviseG5Authenticatable
11
14
  end
12
15
  end
13
16
 
14
- module Devise::Models::G5Authenticatable
15
- include DeviseG5Authenticatable::Models::ProtectedAttributes
17
+ module Devise
18
+ module Models
19
+ # If this file is required, then protected attributes will be automatically
20
+ # mixed in to the g5 authenticatable model(s)
21
+ module G5Authenticatable
22
+ include DeviseG5Authenticatable::Models::ProtectedAttributes
23
+ end
24
+ end
16
25
  end
@@ -1,9 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'devise/omniauth'
2
4
  require 'omniauth-g5'
3
5
 
4
6
  OmniAuth.config.on_failure do |env|
5
7
  env['devise.mapping'] = Devise::Mapping.find_by_path!(env['PATH_INFO'], :path)
6
- controller_name = ActiveSupport::Inflector.camelize(env['devise.mapping'].controllers[:sessions])
7
- controller_klass = ActiveSupport::Inflector.constantize("#{controller_name}Controller")
8
+ controller_name = ActiveSupport::Inflector.camelize(
9
+ env['devise.mapping'].controllers[:sessions]
10
+ )
11
+ controller_klass = ActiveSupport::Inflector.constantize(
12
+ "#{controller_name}Controller"
13
+ )
8
14
  controller_klass.action(:failure).call(env)
9
15
  end
@@ -1,58 +1,71 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devise
4
+ # Add custom G5 controllers to default routing options
2
5
  class Mapping
3
- alias :original_initialize :initialize
6
+ alias original_initialize initialize
4
7
 
5
8
  def initialize(name, options)
6
- set_default_g5_controllers(options)
9
+ setup_default_g5_controllers(options)
7
10
  original_initialize(name, options)
8
11
  end
9
12
 
10
13
  private
11
- def set_default_g5_controllers(options)
14
+
15
+ def setup_default_g5_controllers(options)
12
16
  options[:controllers] ||= {}
13
- options[:controllers].reverse_merge!({
17
+ options[:controllers].reverse_merge!(
14
18
  registrations: 'devise_g5_authenticatable/registrations',
15
19
  sessions: 'devise_g5_authenticatable/sessions'
16
- })
20
+ )
17
21
  options
18
22
  end
19
23
  end
20
24
  end
21
25
 
22
- module ActionDispatch::Routing
23
- class Mapper
24
- protected
25
- def devise_session(mapping, controllers)
26
- set_omniauth_path_prefix(mapping)
27
- build_session_routes(mapping, controllers)
28
- build_g5_omniauth_routes(mapping, controllers)
29
- end
26
+ module ActionDispatch
27
+ module Routing
28
+ # Add G5 omniauth callbacks to set of routes
29
+ class Mapper
30
+ protected
30
31
 
31
- def set_omniauth_path_prefix(mapping)
32
- path_prefix = Devise.omniauth_path_prefix || "/#{mapping.fullpath}/auth".squeeze("/")
33
- set_omniauth_path_prefix!(path_prefix) unless ::OmniAuth.config.path_prefix.present?
34
- end
32
+ def devise_session(mapping, controllers)
33
+ setup_omniauth_path_prefix(mapping)
34
+ build_session_routes(mapping, controllers)
35
+ build_g5_omniauth_routes(mapping, controllers)
36
+ end
35
37
 
36
- def build_session_routes(mapping, controllers)
37
- resource :session, only: [], controller: controllers[:sessions], path: '' do
38
- get :new, path: mapping.path_names[:sign_in], as: :new
39
- post :create, path: mapping.path_names[:sign_in]
40
- match :destroy, path: mapping.path_names[:sign_out], as: :destroy, via: mapping.sign_out_via
38
+ def setup_omniauth_path_prefix(mapping)
39
+ return if ::OmniAuth.config.path_prefix.present?
40
+ path_prefix = Devise.omniauth_path_prefix ||
41
+ "/#{mapping.fullpath}/auth".squeeze('/')
42
+ set_omniauth_path_prefix!(path_prefix)
43
+ end
44
+
45
+ def build_session_routes(mapping, controllers)
46
+ resource(:session, only: [],
47
+ controller: controllers[:sessions],
48
+ path: '') do
49
+ get :new, path: mapping.path_names[:sign_in],
50
+ as: :new
51
+ post :create, path: mapping.path_names[:sign_in]
52
+ match :destroy, path: mapping.path_names[:sign_out],
53
+ as: :destroy,
54
+ via: mapping.sign_out_via
55
+ end
41
56
  end
42
- end
43
57
 
44
- def build_g5_omniauth_routes(mapping, controllers)
45
- match 'auth/g5',
46
- controller: controllers[:sessions],
47
- action: 'omniauth_passthru',
48
- as: :g5_authorize,
49
- via: [:get, :post]
50
-
51
- match 'auth/g5/callback',
52
- controller: controllers[:sessions],
53
- action: 'create',
54
- as: :g5_callback,
55
- via: [:get, :post]
58
+ def build_g5_omniauth_routes(_mapping, controllers)
59
+ match 'auth/g5', controller: controllers[:sessions],
60
+ action: 'omniauth_passthru',
61
+ as: :g5_authorize,
62
+ via: %i[get post]
63
+
64
+ match 'auth/g5/callback', controller: controllers[:sessions],
65
+ action: 'create',
66
+ as: :g5_callback,
67
+ via: %i[get post]
68
+ end
56
69
  end
57
70
  end
58
71
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeviseG5Authenticatable
2
- VERSION = '0.3.0'
4
+ VERSION = '1.0.0-1'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'devise_g5_authenticatable/version'
2
4
 
3
5
  require 'devise'
@@ -9,6 +11,7 @@ require 'devise_g5_authenticatable/controllers/url_helpers'
9
11
 
10
12
  require 'devise_g5_authenticatable/engine'
11
13
 
14
+ # Custom devise configuration options
12
15
  module Devise
13
16
  # Should devise_g5_authenticatable validate the user's access token
14
17
  # against the auth server for every request? Default is false
@@ -19,6 +22,6 @@ end
19
22
 
20
23
  Devise.add_module(:g5_authenticatable,
21
24
  strategy: false,
22
- route: {session: [nil, :new, :destroy]},
25
+ route: { session: [nil, :new, :destroy] },
23
26
  controller: :sessions,
24
27
  model: 'devise_g5_authenticatable/models/g5_authenticatable')
@@ -1,20 +1,22 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe DeviseG5Authenticatable::Helpers do
3
+ require 'rails_helper'
4
+
5
+ RSpec.describe DeviseG5Authenticatable::Helpers do
4
6
  controller(ActionController::Base) do
5
7
  include Devise::Controllers::Helpers
6
8
  include DeviseG5Authenticatable::Helpers
7
9
  end
8
10
 
9
11
  describe '#clear_blank_passwords' do
10
- subject(:clear_passwords) { get :index, password_params }
12
+ subject(:clear_passwords) { get(:index, build_params(password_params)) }
11
13
  before { clear_passwords }
12
14
 
13
15
  controller do
14
- before_filter :clear_blank_passwords, only: :index
16
+ before_action :clear_blank_passwords, only: :index
15
17
 
16
18
  def index
17
- render status: 200, text: 'Index'
19
+ render status: 200, plain: 'Index'
18
20
  end
19
21
  end
20
22
 
@@ -36,24 +38,27 @@ describe DeviseG5Authenticatable::Helpers do
36
38
  let(:password_confirmation) { 'some_other_secret' }
37
39
  let(:current_password) { 'current_secret' }
38
40
 
41
+ let(:scope_params) { controller.params[scope] }
42
+
39
43
  context 'with user scope' do
40
44
  let(:scope) { :user }
41
45
 
42
46
  context 'with non-blank password params' do
43
47
  it 'should not change the password param' do
44
- expect(controller.params[:user][:password]).to eq(password)
48
+ expect(scope_params[:password]).to eq(password)
45
49
  end
46
50
 
47
51
  it 'should not change the password_confirmation param' do
48
- expect(controller.params[:user][:password_confirmation]).to eq(password_confirmation)
52
+ expect(scope_params[:password_confirmation])
53
+ .to eq(password_confirmation)
49
54
  end
50
55
 
51
56
  it 'should not change the current_password param' do
52
- expect(controller.params[:user][:current_password]).to eq(current_password)
57
+ expect(scope_params[:current_password]).to eq(current_password)
53
58
  end
54
59
 
55
60
  it 'should not change the non-password param' do
56
- expect(controller.params[:user][:email]).to eq(password_params[:user][:email])
61
+ expect(scope_params[:email]).to eq(password_params[:user][:email])
57
62
  end
58
63
  end
59
64
 
@@ -61,15 +66,16 @@ describe DeviseG5Authenticatable::Helpers do
61
66
  let(:password) {}
62
67
 
63
68
  it 'should set the password param to nil' do
64
- expect(controller.params[:user][:password]).to be_nil
69
+ expect(scope_params[:password]).to be_nil
65
70
  end
66
71
 
67
72
  it 'should not change the password confirmation param' do
68
- expect(controller.params[:user][:password_confirmation]).to eq(password_confirmation)
73
+ expect(scope_params[:password_confirmation])
74
+ .to eq(password_confirmation)
69
75
  end
70
76
 
71
77
  it 'should not change the current_password param' do
72
- expect(controller.params[:user][:current_password]).to eq(current_password)
78
+ expect(scope_params[:current_password]).to eq(current_password)
73
79
  end
74
80
  end
75
81
 
@@ -77,15 +83,16 @@ describe DeviseG5Authenticatable::Helpers do
77
83
  let(:password) { ' ' }
78
84
 
79
85
  it 'should set the password param to nil' do
80
- expect(controller.params[:user][:password]).to be_nil
86
+ expect(scope_params[:password]).to be_nil
81
87
  end
82
88
 
83
89
  it 'should not change the password confirmation param' do
84
- expect(controller.params[:user][:password_confirmation]).to eq(password_confirmation)
90
+ expect(scope_params[:password_confirmation])
91
+ .to eq(password_confirmation)
85
92
  end
86
93
 
87
94
  it 'should not change the current_password param' do
88
- expect(controller.params[:user][:current_password]).to eq(current_password)
95
+ expect(scope_params[:current_password]).to eq(current_password)
89
96
  end
90
97
  end
91
98
 
@@ -93,15 +100,15 @@ describe DeviseG5Authenticatable::Helpers do
93
100
  let(:password_confirmation) {}
94
101
 
95
102
  it 'should not change the password param' do
96
- expect(controller.params[:user][:password]).to eq(password)
103
+ expect(scope_params[:password]).to eq(password)
97
104
  end
98
105
 
99
106
  it 'should set the password_confirmation param to nil' do
100
- expect(controller.params[:user][:password_confirmation]).to be_nil
107
+ expect(scope_params[:password_confirmation]).to be_nil
101
108
  end
102
109
 
103
110
  it 'should not change the current_password param' do
104
- expect(controller.params[:user][:current_password]).to eq(current_password)
111
+ expect(scope_params[:current_password]).to eq(current_password)
105
112
  end
106
113
  end
107
114
 
@@ -109,15 +116,15 @@ describe DeviseG5Authenticatable::Helpers do
109
116
  let(:password_confirmation) { ' ' }
110
117
 
111
118
  it 'should not change the password param' do
112
- expect(controller.params[:user][:password]).to eq(password)
119
+ expect(scope_params[:password]).to eq(password)
113
120
  end
114
121
 
115
122
  it 'should set the password_confirmation param to nil' do
116
- expect(controller.params[:user][:password_confirmation]).to be_nil
123
+ expect(scope_params[:password_confirmation]).to be_nil
117
124
  end
118
125
 
119
126
  it 'should not change the current_password param' do
120
- expect(controller.params[:user][:current_password]).to eq(current_password)
127
+ expect(scope_params[:current_password]).to eq(current_password)
121
128
  end
122
129
  end
123
130
 
@@ -125,15 +132,16 @@ describe DeviseG5Authenticatable::Helpers do
125
132
  let(:current_password) {}
126
133
 
127
134
  it 'should not change the password param' do
128
- expect(controller.params[:user][:password]).to eq(password)
135
+ expect(scope_params[:password]).to eq(password)
129
136
  end
130
137
 
131
138
  it 'should not change the password_confirmation param' do
132
- expect(controller.params[:user][:password_confirmation]).to eq(password_confirmation)
139
+ expect(scope_params[:password_confirmation])
140
+ .to eq(password_confirmation)
133
141
  end
134
142
 
135
143
  it 'should set the current password param to nil' do
136
- expect(controller.params[:user][:current_password]).to be_nil
144
+ expect(scope_params[:current_password]).to be_nil
137
145
  end
138
146
  end
139
147
 
@@ -141,15 +149,16 @@ describe DeviseG5Authenticatable::Helpers do
141
149
  let(:current_password) { ' ' }
142
150
 
143
151
  it 'should not change the password param' do
144
- expect(controller.params[:user][:password]).to eq(password)
152
+ expect(scope_params[:password]).to eq(password)
145
153
  end
146
154
 
147
155
  it 'should not change the password_confirmation param' do
148
- expect(controller.params[:user][:password_confirmation]).to eq(password_confirmation)
156
+ expect(scope_params[:password_confirmation])
157
+ .to eq(password_confirmation)
149
158
  end
150
159
 
151
160
  it 'should set the current password param to nil' do
152
- expect(controller.params[:user][:current_password]).to be_nil
161
+ expect(scope_params[:current_password]).to be_nil
153
162
  end
154
163
  end
155
164
  end
@@ -161,7 +170,7 @@ describe DeviseG5Authenticatable::Helpers do
161
170
  let(:password) { ' ' }
162
171
 
163
172
  it 'should set the admin password param to nil' do
164
- expect(controller.params[:admin][:password]).to be_nil
173
+ expect(scope_params[:password]).to be_nil
165
174
  end
166
175
  end
167
176
 
@@ -169,7 +178,7 @@ describe DeviseG5Authenticatable::Helpers do
169
178
  let(:password_confirmation) { ' ' }
170
179
 
171
180
  it 'should set the admin password confirmation to nil' do
172
- expect(controller.params[:admin][:password_confirmation]).to be_nil
181
+ expect(scope_params[:password_confirmation]).to be_nil
173
182
  end
174
183
  end
175
184
 
@@ -177,14 +186,14 @@ describe DeviseG5Authenticatable::Helpers do
177
186
  let(:current_password) { ' ' }
178
187
 
179
188
  it 'should set the admin current password param to nil' do
180
- expect(controller.params[:admin][:current_password]).to be_nil
189
+ expect(scope_params[:current_password]).to be_nil
181
190
  end
182
191
  end
183
192
  end
184
193
  end
185
194
 
186
195
  context 'when there are no password params' do
187
- let(:password_params) { Hash.new }
196
+ let(:password_params) { {} }
188
197
 
189
198
  it 'should not change any params' do
190
199
  expect(controller.params[:user]).to be_nil
@@ -193,26 +202,26 @@ describe DeviseG5Authenticatable::Helpers do
193
202
  end
194
203
 
195
204
  describe '#set_updated_by_user' do
196
- subject(:set_updated_by_user) { post :create, user_params }
205
+ subject(:set_updated_by_user) { post(:create, build_params(user_params)) }
197
206
 
198
207
  controller do
199
208
  define_helpers(:user)
200
209
  define_helpers(:admin)
201
210
 
202
- before_filter :set_updated_by_user, only: :create
211
+ before_action :set_updated_by_user, only: :create
203
212
 
204
213
  def create
205
- render status: 200, text: 'Create'
214
+ render status: 200, plain: 'Create'
206
215
  end
207
216
  end
208
217
 
209
- before { sign_in :user, current_user }
218
+ before { sign_in(current_user, scope: :user) }
210
219
  let(:current_user) { create(:user) }
211
220
 
212
221
  before { set_updated_by_user }
213
222
 
214
223
  context 'when there is a user param' do
215
- let(:user_params) { {user: attributes_for(:user)} }
224
+ let(:user_params) { { user: attributes_for(:user) } }
216
225
 
217
226
  it 'should set the user updated_by' do
218
227
  expect(controller.params[:user][:updated_by]).to eq(current_user)
@@ -220,7 +229,7 @@ describe DeviseG5Authenticatable::Helpers do
220
229
  end
221
230
 
222
231
  context 'when there is no user param' do
223
- let(:user_params) { Hash.new }
232
+ let(:user_params) { {} }
224
233
 
225
234
  it 'should set the updated_by' do
226
235
  expect(controller.params[:updated_by]).to eq(current_user)
@@ -229,26 +238,26 @@ describe DeviseG5Authenticatable::Helpers do
229
238
  end
230
239
 
231
240
  describe '#set_updated_by_admin' do
232
- subject(:set_updated_by_admin) { post :create, admin_params }
241
+ subject(:set_updated_by_admin) { post(:create, build_params(admin_params)) }
233
242
 
234
243
  controller do
235
244
  define_helpers(:user)
236
245
  define_helpers(:admin)
237
246
 
238
- before_filter :set_updated_by_admin, only: :create
247
+ before_action :set_updated_by_admin, only: :create
239
248
 
240
249
  def create
241
- render status: 200, text: 'Create'
250
+ render status: 200, plain: 'Create'
242
251
  end
243
252
  end
244
253
 
245
- before { sign_in :admin, current_admin }
254
+ before { sign_in(current_admin, scope: :admin) }
246
255
  let(:current_admin) { create(:admin) }
247
256
 
248
257
  before { set_updated_by_admin }
249
258
 
250
259
  context 'when there is an admin param' do
251
- let(:admin_params) { {admin: attributes_for(:admin)} }
260
+ let(:admin_params) { { admin: attributes_for(:admin) } }
252
261
 
253
262
  it 'should set the admin updated_by' do
254
263
  expect(controller.params[:admin][:updated_by]).to eq(current_admin)
@@ -256,7 +265,7 @@ describe DeviseG5Authenticatable::Helpers do
256
265
  end
257
266
 
258
267
  context 'when there is no admin param' do
259
- let(:admin_params) { Hash.new }
268
+ let(:admin_params) { {} }
260
269
 
261
270
  it 'should set the updated_by' do
262
271
  expect(controller.params[:updated_by]).to eq(current_admin)
@@ -265,7 +274,7 @@ describe DeviseG5Authenticatable::Helpers do
265
274
  end
266
275
 
267
276
  describe '#handle_resource_error' do
268
- subject(:action_with_error) { post :create }
277
+ subject(:action_with_error) { post(:create) }
269
278
 
270
279
  before { request.env['devise.mapping'] = Devise.mappings[:user] }
271
280
 
@@ -274,7 +283,7 @@ describe DeviseG5Authenticatable::Helpers do
274
283
 
275
284
  def create
276
285
  self.resource = resource_class.new
277
- raise ActiveRecord::RecordNotSaved.new('my_error')
286
+ raise ActiveRecord::RecordNotSaved, 'my_error'
278
287
  end
279
288
 
280
289
  # Expose protected resource helper for the purposes of this unit test
@@ -292,9 +301,5 @@ describe DeviseG5Authenticatable::Helpers do
292
301
  it 'should set the base error on the resource' do
293
302
  expect(controller.resource.errors[:base]).to eq(['my_error'])
294
303
  end
295
-
296
- it 'should render the model creation form' do
297
- expect(response).to render_template('anonymous/new')
298
- end
299
304
  end
300
305
  end