switch_user 1.4.0 → 1.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +20 -19
- data/app/controllers/switch_user_controller.rb +21 -9
- data/app/helpers/switch_user_helper.rb +5 -5
- data/app/views/switch_user/_widget.html.erb +2 -2
- data/config/routes.rb +2 -2
- data/lib/generators/switch_user/install/templates/switch_user.rb +6 -6
- data/lib/switch_user.rb +6 -6
- data/lib/switch_user/data_source.rb +2 -2
- data/lib/switch_user/provider/base.rb +1 -1
- data/lib/switch_user/provider/devise.rb +3 -3
- data/lib/switch_user/rspec.rb +2 -2
- data/lib/switch_user/rspec/feature_helpers.rb +1 -1
- data/lib/switch_user/user_set.rb +3 -3
- data/lib/switch_user/version.rb +1 -1
- data/spec/controllers/switch_user_controller_spec.rb +11 -13
- data/spec/helpers/switch_user_helper_spec.rb +8 -8
- data/spec/integration/switch_user_spec.rb +33 -12
- data/spec/provider/devise_spec.rb +5 -5
- data/spec/rspec/feature_helpers_spec.rb +23 -23
- data/spec/spec_helper.rb +1 -1
- data/spec/support/application.rb +23 -11
- data/spec/support/provider.rb +2 -2
- data/spec/switch_user/data_source_spec.rb +4 -4
- data/spec/switch_user/lambda_guard_spec.rb +2 -2
- data/spec/switch_user/user_loader_spec.rb +7 -7
- data/spec/switch_user/user_set_spec.rb +5 -5
- data/switch_user.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4cc1c6867f857a993d2f742e22150537d5ef29aa
|
4
|
+
data.tar.gz: 9c4e70bd6dd34f625000e5862855fffdcb08fe27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7f26cd2dff27bd70b98f84bbe7e6ab9e9fcecb68903d353b7faa3e853789cc6278773210657f281a8223d8aa6bc0f6a5041490df9a61daa6b2d6112a06c24e7
|
7
|
+
data.tar.gz: '08c2e33483cfbac4555843d32f408f4ff8d60c45e26e82e4d1bd65c21d6f4a9cf1a5d992a4a3c440a867bc5d05924232600a14971b5ff0522c9af828f16bf625'
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -14,7 +14,7 @@ switch_user is very useful in such use cases
|
|
14
14
|
|
15
15
|
## Example
|
16
16
|
|
17
|
-
Visit here: <http://switch-user-example.heroku.com>, switch the current user in the select box.
|
17
|
+
Visit here: <http://switch-user-example.heroku.com/admin>, switch the current user in the select box.
|
18
18
|
|
19
19
|
And source code here: <https://github.com/flyerhzm/switch_user_example>
|
20
20
|
|
@@ -24,6 +24,9 @@ Add in Gemfile.
|
|
24
24
|
```ruby
|
25
25
|
gem "switch_user"
|
26
26
|
```
|
27
|
+
|
28
|
+
If you get the following error: **undefined method `before_action' for SwitchUserController:Class**, you are probably using an older version of Rails (<4). You can use this gem: https://github.com/pschambacher/rails3-before_action
|
29
|
+
|
27
30
|
## Usage
|
28
31
|
|
29
32
|
Add following code into your layout page.
|
@@ -69,7 +72,7 @@ SwitchUser.setup do |config|
|
|
69
72
|
# available_users is a hash,
|
70
73
|
# key is the model name of user (:user, :admin, or any name you use),
|
71
74
|
# value is a block that return the users that can be switched.
|
72
|
-
config.available_users = { :
|
75
|
+
config.available_users = { user: -> { User.all } } # use User.scoped instead for rails 3.2
|
73
76
|
|
74
77
|
# available_users_identifiers is a hash,
|
75
78
|
# keys in this hash should match a key in the available_users hash
|
@@ -77,55 +80,55 @@ SwitchUser.setup do |config|
|
|
77
80
|
# defaults to id
|
78
81
|
# this hash is to allow you to specify a different column to
|
79
82
|
# expose for instance a username on a User model instead of id
|
80
|
-
config.available_users_identifiers = { :
|
83
|
+
config.available_users_identifiers = { user: :id }
|
81
84
|
|
82
85
|
# available_users_names is a hash,
|
83
86
|
# keys in this hash should match a key in the available_users hash
|
84
87
|
# value is the column name which will be displayed in select box
|
85
|
-
config.available_users_names = { :
|
88
|
+
config.available_users_names = { user: :email }
|
86
89
|
|
87
90
|
# controller_guard is a block,
|
88
91
|
# if it returns true, the request will continue,
|
89
92
|
# else the request will be refused and returns "Permission Denied"
|
90
93
|
# if you switch from "admin" to user, the current_user param is "admin"
|
91
|
-
config.controller_guard =
|
94
|
+
config.controller_guard = ->(current_user, request) { Rails.env.development? }
|
92
95
|
|
93
96
|
# view_guard is a block,
|
94
97
|
# if it returns true, the switch user select box will be shown,
|
95
98
|
# else the select box will not be shown
|
96
99
|
# if you switch from admin to "user", the current_user param is "user"
|
97
|
-
config.view_guard =
|
100
|
+
config.view_guard = ->(current_user, request) { Rails.env.development? }
|
98
101
|
|
99
102
|
# redirect_path is a block, it returns which page will be redirected
|
100
103
|
# after switching a user.
|
101
|
-
config.redirect_path =
|
104
|
+
config.redirect_path = ->(request, params) { '/' }
|
102
105
|
end
|
103
106
|
```
|
104
107
|
If you need to override the default configuration, run <code>rails g switch_user:install</code> and a copy of the configuration file will be copied to <code>config/initializers/switch_user.rb</code> in your project.
|
105
108
|
|
106
109
|
If you want to switch both available users and available admins
|
107
110
|
```ruby
|
108
|
-
config.available_users = { :user =>
|
111
|
+
config.available_users = { :user => -> { User.available }, :admin => -> { Admin.available } }
|
109
112
|
```
|
110
113
|
If you want to use name column as the user identifier
|
111
114
|
```ruby
|
112
|
-
config.available_users_identifiers => { :
|
115
|
+
config.available_users_identifiers => { user: :name }
|
113
116
|
```
|
114
117
|
If you want to display the login field in switch user select box
|
115
118
|
```ruby
|
116
|
-
config.available_users_names = { :
|
119
|
+
config.available_users_names = { user: :login }
|
117
120
|
```
|
118
121
|
If you only allow switching from admin to user in production environment
|
119
122
|
```ruby
|
120
|
-
config.controller_guard =
|
123
|
+
config.controller_guard = ->(current_user, request) { Rails.env.production? && current_user.admin? }
|
121
124
|
```
|
122
125
|
If you only want to display switch user select box for admins in production environment
|
123
126
|
```ruby
|
124
|
-
config.view_guard =
|
127
|
+
config.view_guard = ->(current_user, request) { Rails.env.production? && current_user && current_user.admin? }
|
125
128
|
```
|
126
129
|
If you want to redirect user to "/dashboard" page
|
127
130
|
```ruby
|
128
|
-
config.redirect_path =
|
131
|
+
config.redirect_path = ->(request, params) { "/dashboard" }
|
129
132
|
```
|
130
133
|
If you want to hide a 'Guest' item in the helper dropdown list
|
131
134
|
```ruby
|
@@ -137,16 +140,14 @@ Sometimes you'll want to be able to switch to an unprivileged user and then back
|
|
137
140
|
You will need to make the following modifications to your configuration:
|
138
141
|
```ruby
|
139
142
|
config.switch_back = true
|
140
|
-
config.controller_guard =
|
141
|
-
current_user && current_user.admin? || original_user && original_user.super_admin?
|
142
|
-
}
|
143
|
+
config.controller_guard = ->(current_user, request, original_user) { current_user && current_user.admin? || original_user && original_user.super_admin? }
|
143
144
|
# Do something similar for the view_guard as well.
|
144
145
|
```
|
145
146
|
This example would allow an admin user to user switch_user, but would only let you switch back to another user if the original user was a super admin.
|
146
147
|
|
147
148
|
## Using SwitchUser with RSpec and Capybara
|
148
149
|
|
149
|
-
Add the following code to spec/support/switch_user.rb or spec/spec_helper.rb
|
150
|
+
Add the following code to spec/support/switch_user.rb or spec/spec_helper.rb:
|
150
151
|
|
151
152
|
```ruby
|
152
153
|
require 'switch_user/rspec'
|
@@ -157,7 +158,7 @@ You can now write your specs like so :
|
|
157
158
|
```ruby
|
158
159
|
feature "Your feature", type: :feature do
|
159
160
|
background do
|
160
|
-
@user = User.make(:
|
161
|
+
@user = User.make(email: 'user@example.com', password: 'password')
|
161
162
|
end
|
162
163
|
|
163
164
|
scenario "Your scenario" do
|
@@ -189,6 +190,6 @@ This feature should be used with extreme caution because of the security implica
|
|
189
190
|
|
190
191
|
## Credit
|
191
192
|
|
192
|
-
Copyright © 2010 -
|
193
|
+
Copyright © 2010 - 2017 Richard Huang (flyerhzm@gmail.com), released under the MIT license
|
193
194
|
|
194
195
|
[0]: https://github.com/tablatom/hobo
|
@@ -1,23 +1,35 @@
|
|
1
1
|
class SwitchUserController < ApplicationController
|
2
|
-
before_action :developer_modes_only
|
2
|
+
before_action :developer_modes_only, :switch_back
|
3
3
|
|
4
4
|
def set_current_user
|
5
5
|
handle_request(params)
|
6
6
|
|
7
|
-
|
7
|
+
redirect_path = SwitchUser.redirect_path.call(request, params)
|
8
|
+
if Rails.version.to_i >= 5 && redirect_path == :back
|
9
|
+
redirect_back(fallback_location: root_path)
|
10
|
+
else
|
11
|
+
redirect_to(redirect_path)
|
12
|
+
end
|
8
13
|
end
|
9
14
|
|
10
15
|
def remember_user
|
11
|
-
|
12
|
-
if
|
13
|
-
|
16
|
+
redirect_path = SwitchUser.redirect_path.call(request, params)
|
17
|
+
if Rails.version.to_i >= 5 && redirect_path == :back
|
18
|
+
redirect_back(fallback_location: root_path)
|
19
|
+
else
|
20
|
+
redirect_to(redirect_path)
|
14
21
|
end
|
15
|
-
|
16
|
-
redirect_to(SwitchUser.redirect_path.call(request, params))
|
17
22
|
end
|
18
23
|
|
19
24
|
private
|
20
25
|
|
26
|
+
def switch_back
|
27
|
+
if SwitchUser.switch_back
|
28
|
+
provider.remember_current_user(true) if params[:remember] == "true"
|
29
|
+
provider.remember_current_user(false) if params[:remember] == "false"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
21
33
|
def developer_modes_only
|
22
34
|
raise ActionController::RoutingError.new('Do not try to hack us.') unless available?
|
23
35
|
end
|
@@ -36,9 +48,9 @@ class SwitchUserController < ApplicationController
|
|
36
48
|
return
|
37
49
|
end
|
38
50
|
if SwitchUser.login_exclusive
|
39
|
-
provider.login_exclusive(record.user, :
|
51
|
+
provider.login_exclusive(record.user, scope: record.scope)
|
40
52
|
else
|
41
|
-
provider.login_inclusive(record.user, :
|
53
|
+
provider.login_inclusive(record.user, scope: record.scope)
|
42
54
|
end
|
43
55
|
end
|
44
56
|
end
|
@@ -23,11 +23,11 @@ module SwitchUserHelper
|
|
23
23
|
|
24
24
|
option_tags = grouped_options_for_select(grouped_options_container.to_a, selected_user)
|
25
25
|
|
26
|
-
render :
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
26
|
+
render partial: "switch_user/widget",
|
27
|
+
locals: {
|
28
|
+
option_tags: option_tags,
|
29
|
+
classes: options[:class],
|
30
|
+
styles: options[:style],
|
31
31
|
}
|
32
32
|
end
|
33
33
|
|
@@ -1,4 +1,4 @@
|
|
1
1
|
<% if SwitchUser.switch_back %>
|
2
|
-
<%= check_box_tag "remember_user", "remember_user", provider.original_user.present?, :
|
2
|
+
<%= check_box_tag "remember_user", "remember_user", provider.original_user.present?, onchange: "location.href = '#{ActionController::Base.relative_url_root || '/'}switch_user/remember_user?remember=' + encodeURIComponent(this.checked)" %>
|
3
3
|
<% end %>
|
4
|
-
<%= select_tag "switch_user_identifier", option_tags, :
|
4
|
+
<%= select_tag "switch_user_identifier", option_tags, onchange: "location.href = '#{ActionController::Base.relative_url_root || '/'}switch_user?scope_identifier=' + encodeURIComponent(this.options[this.selectedIndex].value)", class: classes, style: styles %>
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
-
get :switch_user, :
|
3
|
-
get 'switch_user/remember_user', :
|
2
|
+
get :switch_user, to: 'switch_user#set_current_user'
|
3
|
+
get 'switch_user/remember_user', to: 'switch_user#remember_user'
|
4
4
|
end
|
@@ -5,7 +5,7 @@ SwitchUser.setup do |config|
|
|
5
5
|
# available_users is a hash,
|
6
6
|
# key is the model name of user (:user, :admin, or any name you use),
|
7
7
|
# value is a block that return the users that can be switched.
|
8
|
-
config.available_users = { :
|
8
|
+
config.available_users = { user: -> { User.all } }
|
9
9
|
|
10
10
|
# available_users_identifiers is a hash,
|
11
11
|
# keys in this hash should match a key in the available_users hash
|
@@ -13,28 +13,28 @@ SwitchUser.setup do |config|
|
|
13
13
|
# defaults to id
|
14
14
|
# this hash is to allow you to specify a different column to
|
15
15
|
# expose for instance a username on a User model instead of id
|
16
|
-
config.available_users_identifiers = { :
|
16
|
+
config.available_users_identifiers = { user: :id }
|
17
17
|
|
18
18
|
# available_users_names is a hash,
|
19
19
|
# keys in this hash should match a key in the available_users hash
|
20
20
|
# value is the column name which will be displayed in select box
|
21
|
-
config.available_users_names = { :
|
21
|
+
config.available_users_names = { user: :email }
|
22
22
|
|
23
23
|
# controller_guard is a block,
|
24
24
|
# if it returns true, the request will continue,
|
25
25
|
# else the request will be refused and returns "Permission Denied"
|
26
26
|
# if you switch from "admin" to user, the current_user param is "admin"
|
27
|
-
config.controller_guard =
|
27
|
+
config.controller_guard = ->(current_user, request) { Rails.env.development? }
|
28
28
|
|
29
29
|
# view_guard is a block,
|
30
30
|
# if it returns true, the switch user select box will be shown,
|
31
31
|
# else the select box will not be shown
|
32
32
|
# if you switch from admin to "user", the current_user param is "user"
|
33
|
-
config.view_guard =
|
33
|
+
config.view_guard = ->(current_user, request) { Rails.env.development? }
|
34
34
|
|
35
35
|
# redirect_path is a block, it returns which page will be redirected
|
36
36
|
# after switching a user.
|
37
|
-
config.redirect_path =
|
37
|
+
config.redirect_path = ->(request, params) { '/' }
|
38
38
|
|
39
39
|
# helper_with_guest is a boolean value, if it set to false
|
40
40
|
# the guest item in the helper won't be shown
|
data/lib/switch_user.rb
CHANGED
@@ -53,13 +53,13 @@ module SwitchUser
|
|
53
53
|
|
54
54
|
def self.reset_config
|
55
55
|
self.provider = :devise
|
56
|
-
self.available_users = { :
|
57
|
-
self.available_users_identifiers = { :
|
58
|
-
self.available_users_names = { :
|
56
|
+
self.available_users = { user: -> { User.all } }
|
57
|
+
self.available_users_identifiers = { user: :id }
|
58
|
+
self.available_users_names = { user: :email }
|
59
59
|
self.guard_class = "SwitchUser::LambdaGuard"
|
60
|
-
self.controller_guard =
|
61
|
-
self.view_guard =
|
62
|
-
self.redirect_path =
|
60
|
+
self.controller_guard = ->(current_user, request) { Rails.env.development? }
|
61
|
+
self.view_guard = ->(current_user, request) { Rails.env.development? }
|
62
|
+
self.redirect_path = ->(request, params) { request.env["HTTP_REFERER"] ? :back : root_path }
|
63
63
|
self.session_key = :user_id
|
64
64
|
self.helper_with_guest = true
|
65
65
|
self.switch_back = false
|
@@ -11,7 +11,7 @@ module SwitchUser
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def find_scope_id(scope_id)
|
14
|
-
sources.map {|source| source.find_scope_id(scope_id) }.compact.first
|
14
|
+
sources.map { |source| source.find_scope_id(scope_id) }.compact.first
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -40,7 +40,7 @@ module SwitchUser
|
|
40
40
|
|
41
41
|
class GuestDataSource
|
42
42
|
def all
|
43
|
-
[
|
43
|
+
[GuestRecord.new]
|
44
44
|
end
|
45
45
|
|
46
46
|
def find_scope_id(scope_id)
|
@@ -33,7 +33,7 @@ module SwitchUser
|
|
33
33
|
user_identifier = @controller.session[:original_user_scope_identifier]
|
34
34
|
|
35
35
|
if user_identifier
|
36
|
-
UserLoader.prepare(:
|
36
|
+
UserLoader.prepare(scope_identifier: user_identifier).user
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -6,7 +6,7 @@ module SwitchUser
|
|
6
6
|
@warden = @controller.warden
|
7
7
|
end
|
8
8
|
|
9
|
-
def login(user, scope =
|
9
|
+
def login(user, scope = nil)
|
10
10
|
if SwitchUser.provider.is_a?(Hash) && SwitchUser.provider[:store_sign_in]
|
11
11
|
@warden.set_user(user, scope: scope)
|
12
12
|
else
|
@@ -14,11 +14,11 @@ module SwitchUser
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def logout(scope =
|
17
|
+
def logout(scope = nil)
|
18
18
|
@warden.logout(scope)
|
19
19
|
end
|
20
20
|
|
21
|
-
def current_user(scope =
|
21
|
+
def current_user(scope = nil)
|
22
22
|
@warden.user(scope)
|
23
23
|
end
|
24
24
|
end
|
data/lib/switch_user/rspec.rb
CHANGED
@@ -4,9 +4,9 @@ require 'rspec/core'
|
|
4
4
|
|
5
5
|
RSpec.configure do |config|
|
6
6
|
|
7
|
-
config.include SwitchUser::RSpecFeatureHelpers, :
|
7
|
+
config.include SwitchUser::RSpecFeatureHelpers, type: :feature
|
8
8
|
|
9
|
-
config.before(:each, :
|
9
|
+
config.before(:each, type: :feature) do
|
10
10
|
allow_any_instance_of(SwitchUserController).to receive(:available?).and_return(true)
|
11
11
|
end
|
12
12
|
|
data/lib/switch_user/user_set.rb
CHANGED
@@ -9,8 +9,8 @@ module SwitchUser
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.users
|
12
|
-
init_from_config.flat_map {|user_set|
|
13
|
-
user_set.users.map {|user| Record.build(user, user_set) }
|
12
|
+
init_from_config.flat_map { |user_set|
|
13
|
+
user_set.users.map { |user| Record.build(user, user_set) }
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
@@ -24,7 +24,7 @@ module SwitchUser
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def find_user(id)
|
27
|
-
Record.build(users.where(:
|
27
|
+
Record.build(users.where(id: id).first, self)
|
28
28
|
end
|
29
29
|
alias :[] :find_user
|
30
30
|
|
data/lib/switch_user/version.rb
CHANGED
@@ -2,27 +2,27 @@ require 'spec_helper'
|
|
2
2
|
require 'switch_user'
|
3
3
|
require 'switch_user_controller'
|
4
4
|
|
5
|
-
RSpec.describe SwitchUserController, :
|
5
|
+
RSpec.describe SwitchUserController, type: :controller do
|
6
6
|
before do
|
7
7
|
SwitchUser.provider = :dummy
|
8
8
|
end
|
9
9
|
|
10
|
-
let(:admin) { double(:admin,
|
10
|
+
let(:admin) { double(:admin, admin?: true) }
|
11
11
|
let(:provider) { double(:provider,
|
12
|
-
:
|
13
|
-
:
|
12
|
+
original_user: admin,
|
13
|
+
current_user: nil)
|
14
14
|
}
|
15
15
|
describe "#set_current_user" do
|
16
16
|
it "redirects the user to the specified location" do
|
17
|
-
SwitchUser.redirect_path =
|
17
|
+
SwitchUser.redirect_path = ->(_, _) { "/path" }
|
18
18
|
allow(controller).to receive(:available?).and_return(true)
|
19
|
-
get :set_current_user, :scope_identifier
|
19
|
+
get :set_current_user, params: { scope_identifier: "user_1" }
|
20
20
|
|
21
21
|
expect(response).to redirect_to("/path")
|
22
22
|
end
|
23
23
|
|
24
24
|
it "denies access according to the guard block" do
|
25
|
-
SwitchUser.controller_guard =
|
25
|
+
SwitchUser.controller_guard = ->(_, _, _) { false }
|
26
26
|
expect {
|
27
27
|
get :set_current_user
|
28
28
|
}.to raise_error(ActionController::RoutingError)
|
@@ -30,9 +30,7 @@ RSpec.describe SwitchUserController, :type => :controller do
|
|
30
30
|
|
31
31
|
describe "requests with a privileged original_user" do
|
32
32
|
before do
|
33
|
-
SwitchUser.controller_guard =
|
34
|
-
current_user.try(:admin?) || original_user.try(:admin?)
|
35
|
-
}
|
33
|
+
SwitchUser.controller_guard = ->(current_user, _, original_user) { current_user.try(:admin?) || original_user.try(:admin?) }
|
36
34
|
end
|
37
35
|
it "allows access using the original_user param" do
|
38
36
|
allow(controller).to receive(:provider).and_return(provider)
|
@@ -54,18 +52,18 @@ RSpec.describe SwitchUserController, :type => :controller do
|
|
54
52
|
it "can remember the current user" do
|
55
53
|
expect(provider).to receive(:remember_current_user).with(true)
|
56
54
|
|
57
|
-
get :remember_user, :remember
|
55
|
+
get :remember_user, params: { remember: "true" }
|
58
56
|
end
|
59
57
|
it "can forget the current user" do
|
60
58
|
expect(provider).to receive(:remember_current_user).with(false)
|
61
59
|
|
62
|
-
get :remember_user, :remember
|
60
|
+
get :remember_user, params: { remember: "false" }
|
63
61
|
end
|
64
62
|
it "does nothing if switch_back is not enabled" do
|
65
63
|
SwitchUser.switch_back = false
|
66
64
|
expect(provider).not_to receive(:remember_current_user)
|
67
65
|
|
68
|
-
get :remember_user, :remember
|
66
|
+
get :remember_user, params: { remember: "true" }
|
69
67
|
end
|
70
68
|
end
|
71
69
|
end
|
@@ -2,13 +2,13 @@ require 'spec_helper'
|
|
2
2
|
require 'switch_user'
|
3
3
|
require 'switch_user_helper'
|
4
4
|
|
5
|
-
RSpec.describe SwitchUserHelper, :
|
5
|
+
RSpec.describe SwitchUserHelper, type: :helper do
|
6
6
|
before do
|
7
7
|
SwitchUser.provider = :dummy
|
8
8
|
end
|
9
9
|
|
10
|
-
let(:user) { double(:user, :
|
11
|
-
let(:admin) { double(:admin, :
|
10
|
+
let(:user) { double(:user, id: 1) }
|
11
|
+
let(:admin) { double(:admin, id: 1) }
|
12
12
|
let(:provider) {
|
13
13
|
_provider = SwitchUser::Provider::Dummy.new(controller)
|
14
14
|
_provider
|
@@ -16,8 +16,8 @@ RSpec.describe SwitchUserHelper, :type => :helper do
|
|
16
16
|
|
17
17
|
describe "#switch_user_select" do
|
18
18
|
let(:guest_record) { SwitchUser::GuestRecord.new }
|
19
|
-
let(:user_record) { double(:user_record, :
|
20
|
-
let(:admin_record) { double(:admin_record, :
|
19
|
+
let(:user_record) { double(:user_record, user: user, scope: :user, label: 'user1', scope_id: 'user_1') }
|
20
|
+
let(:admin_record) { double(:admin_record, user: admin, scope: :admin, label: 'admin1', scope_id: 'admin_1') }
|
21
21
|
|
22
22
|
let(:guest_option_tags) { %Q^<optgroup label="Guest"><option value="">Guest</option></optgroup>^ }
|
23
23
|
let(:user_option_tags) { %Q^<optgroup label="User"><option value="user_1">user1</option></optgroup>^ }
|
@@ -125,7 +125,7 @@ RSpec.describe SwitchUserHelper, :type => :helper do
|
|
125
125
|
|
126
126
|
describe "#user_tag_value" do
|
127
127
|
it "for user" do
|
128
|
-
user = double(:user, :
|
128
|
+
user = double(:user, id: 1)
|
129
129
|
|
130
130
|
expect(helper.send(:user_tag_value, user, :id, :user)).to eq('user_1')
|
131
131
|
end
|
@@ -134,13 +134,13 @@ RSpec.describe SwitchUserHelper, :type => :helper do
|
|
134
134
|
describe "#user_tag_label" do
|
135
135
|
it "when name has call method" do
|
136
136
|
user = double(:user)
|
137
|
-
name = ->(user){ 'user1' }
|
137
|
+
name = ->(user) { 'user1' }
|
138
138
|
|
139
139
|
expect(helper.send(:user_tag_label, user, name)).to eq('user1')
|
140
140
|
end
|
141
141
|
|
142
142
|
it "when name not has call method" do
|
143
|
-
user = double(:name, :
|
143
|
+
user = double(:name, name: 'user1')
|
144
144
|
name = :name
|
145
145
|
|
146
146
|
expect(helper.send(:user_tag_label, user, name)).to eq('user1')
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe "Using SwitchUser", :
|
4
|
-
let(:user) { User.create!(:
|
5
|
-
let(:other_user) { User.create!(:
|
3
|
+
RSpec.describe "Using SwitchUser", type: :request do
|
4
|
+
let(:user) { User.create!(email: "foo@bar.com", admin: true) }
|
5
|
+
let(:other_user) { User.create!(email: "other@bar.com", admin: false) }
|
6
6
|
|
7
7
|
before do
|
8
8
|
SwitchUser.reset_config
|
9
9
|
SwitchUser.provider = :session
|
10
|
-
SwitchUser.controller_guard =
|
11
|
-
SwitchUser.redirect_path =
|
10
|
+
SwitchUser.controller_guard = ->(current_user, request) { Rails.env.test? }
|
11
|
+
SwitchUser.redirect_path = ->(_, _) { "/dummy/open" }
|
12
12
|
end
|
13
13
|
|
14
14
|
it "signs a user in using switch_user" do
|
@@ -27,18 +27,16 @@ RSpec.describe "Using SwitchUser", :type => :request do
|
|
27
27
|
context "using switch_back" do
|
28
28
|
before do
|
29
29
|
SwitchUser.switch_back = true
|
30
|
-
SwitchUser.controller_guard =
|
31
|
-
current_user && current_user.admin? || original_user && original_user.admin?
|
32
|
-
}
|
30
|
+
SwitchUser.controller_guard = ->(current_user, request, original_user) { current_user && current_user.admin? || original_user && original_user.admin? }
|
33
31
|
end
|
34
32
|
|
35
|
-
it "can switch back to a different user" do
|
33
|
+
it "can switch back to a different user through remember_user endpoint" do
|
36
34
|
# login
|
37
|
-
post "/login", :id
|
35
|
+
post "/login", params: { id: user.id }
|
38
36
|
follow_redirect!
|
39
37
|
|
40
38
|
# have SwitchUser remember us
|
41
|
-
get "/switch_user/remember_user", :remember
|
39
|
+
get "/switch_user/remember_user", params: { remember: true }
|
42
40
|
expect(session["original_user_scope_identifier"]).to be_present
|
43
41
|
|
44
42
|
# check that we can switch to another user
|
@@ -54,7 +52,30 @@ RSpec.describe "Using SwitchUser", :type => :request do
|
|
54
52
|
expect(session["user_id"]).to eq user.id
|
55
53
|
|
56
54
|
# check that we can be un-remembered
|
57
|
-
get "/switch_user/remember_user", :remember
|
55
|
+
get "/switch_user/remember_user", params: { remember: false }
|
56
|
+
expect(session["original_user"]).to be_nil
|
57
|
+
end
|
58
|
+
|
59
|
+
it "can switch back to a different user without hitting remember_user endpoint" do
|
60
|
+
# login
|
61
|
+
post "/login", params: { :id => user.id }
|
62
|
+
follow_redirect!
|
63
|
+
|
64
|
+
# check that we can switch to another user
|
65
|
+
get "/switch_user?scope_identifier=user_#{other_user.id}", params: { :remember => true }
|
66
|
+
expect(session["user_id"]).to eq other_user.id
|
67
|
+
expect(session["original_user_scope_identifier"]).to_not be_nil
|
68
|
+
|
69
|
+
# logout
|
70
|
+
get "/logout"
|
71
|
+
expect(session["user_id"]).to be_nil
|
72
|
+
|
73
|
+
# check that we can still switch to another user
|
74
|
+
get "/switch_user?scope_identifier=user_#{user.id}"
|
75
|
+
expect(session["user_id"]).to eq user.id
|
76
|
+
|
77
|
+
# check that we can be un-remembered
|
78
|
+
get "/switch_user/remember_user", params: { :remember => false }
|
58
79
|
expect(session["original_user"]).to be_nil
|
59
80
|
end
|
60
81
|
end
|
@@ -65,13 +65,13 @@ RSpec.describe SwitchUser::Provider::Devise do
|
|
65
65
|
|
66
66
|
describe "#login_exclusive" do
|
67
67
|
before do
|
68
|
-
allow(SwitchUser).to receive(:available_users).and_return({:
|
68
|
+
allow(SwitchUser).to receive(:available_users).and_return({ user: nil, admin: nil })
|
69
69
|
provider.login(user, :admin)
|
70
|
-
provider.login_exclusive(user, :
|
70
|
+
provider.login_exclusive(user, scope: "user")
|
71
71
|
end
|
72
72
|
|
73
73
|
it "logs the user in" do
|
74
|
-
expect(provider.current_user).to eq user
|
74
|
+
expect(provider.current_user(:user)).to eq user
|
75
75
|
end
|
76
76
|
|
77
77
|
it "logs out other scopes" do
|
@@ -81,7 +81,7 @@ RSpec.describe SwitchUser::Provider::Devise do
|
|
81
81
|
|
82
82
|
describe "#logout_all" do
|
83
83
|
it "logs out users under all scopes" do
|
84
|
-
allow(SwitchUser).to receive(:available_users).and_return({:
|
84
|
+
allow(SwitchUser).to receive(:available_users).and_return({ user: nil, admin: nil })
|
85
85
|
provider.login(user, :admin)
|
86
86
|
provider.login(user, :user)
|
87
87
|
|
@@ -94,7 +94,7 @@ RSpec.describe SwitchUser::Provider::Devise do
|
|
94
94
|
|
95
95
|
describe "#all_current_users" do
|
96
96
|
it "pulls users from an alternate scope" do
|
97
|
-
allow(SwitchUser).to receive(:available_users).and_return({:
|
97
|
+
allow(SwitchUser).to receive(:available_users).and_return({ user: nil, admin: nil })
|
98
98
|
provider.login(user, :admin)
|
99
99
|
|
100
100
|
expect(provider.current_users_without_scope).to eq [user]
|
@@ -6,32 +6,32 @@ Capybara.app = MyApp::Application
|
|
6
6
|
|
7
7
|
require 'switch_user/rspec'
|
8
8
|
|
9
|
-
RSpec.feature "SwitchUser::RSpecFeatureHelpers", :
|
9
|
+
RSpec.feature "SwitchUser::RSpecFeatureHelpers", type: :feature do
|
10
10
|
background do
|
11
|
-
@user = User.create!(:
|
12
|
-
@client = Client.create!(:
|
11
|
+
@user = User.create!(email: "foo@bar.com", admin: true)
|
12
|
+
@client = Client.create!(email: "foo@bar.com")
|
13
13
|
end
|
14
14
|
|
15
|
-
before(:
|
16
|
-
allow(SwitchUser).to receive(:controller_guard).and_return(
|
15
|
+
before(:example) do
|
16
|
+
allow(SwitchUser).to receive(:controller_guard).and_return(->(current_user, request) { true })
|
17
17
|
|
18
|
-
allow(SwitchUser).to receive(:available_users).and_return({:
|
18
|
+
allow(SwitchUser).to receive(:available_users).and_return({ user: -> { User.all } })
|
19
19
|
|
20
|
-
allow(SwitchUser).to receive(:available_users_identifiers).and_return({:
|
20
|
+
allow(SwitchUser).to receive(:available_users_identifiers).and_return({ user: :id })
|
21
21
|
|
22
|
-
allow(SwitchUser).to receive(:available_users_names).and_return({:
|
22
|
+
allow(SwitchUser).to receive(:available_users_names).and_return({ user: :email })
|
23
23
|
end
|
24
24
|
|
25
25
|
scenario "when controller_guard return false" do
|
26
|
-
allow(SwitchUser).to receive(:controller_guard).and_return(
|
26
|
+
allow(SwitchUser).to receive(:controller_guard).and_return(->(current_user, request) { false })
|
27
27
|
|
28
28
|
expect do
|
29
29
|
switch_user @user
|
30
|
-
end.
|
30
|
+
end.not_to raise_error
|
31
31
|
end
|
32
32
|
|
33
33
|
scenario "when controller_guard return false and controller call original available?" do
|
34
|
-
allow(SwitchUser).to receive(:controller_guard).and_return(
|
34
|
+
allow(SwitchUser).to receive(:controller_guard).and_return(->(current_user, request) { false })
|
35
35
|
|
36
36
|
allow_any_instance_of(SwitchUserController).to receive(:available?).and_call_original
|
37
37
|
|
@@ -43,20 +43,20 @@ RSpec.feature "SwitchUser::RSpecFeatureHelpers", :type => :feature do
|
|
43
43
|
scenario "arg is @user, available_users is default, and available_users_identifiers is default" do
|
44
44
|
expect do
|
45
45
|
switch_user @user
|
46
|
-
end.
|
46
|
+
end.not_to raise_error
|
47
47
|
end
|
48
48
|
|
49
49
|
scenario "arg is @user, available_users is default, and available_users_identifiers is {user: id}" do
|
50
|
-
allow(SwitchUser).to receive(:available_users_identifiers).and_return({user: :id})
|
50
|
+
allow(SwitchUser).to receive(:available_users_identifiers).and_return({ user: :id })
|
51
51
|
|
52
52
|
expect do
|
53
53
|
switch_user @user
|
54
|
-
end.
|
54
|
+
end.not_to raise_error
|
55
55
|
end
|
56
56
|
|
57
57
|
scenario "arg is @user, available_users is default, and available_users_identifiers is {:client => :id}" do
|
58
|
-
allow(SwitchUser).to receive(:available_users_identifiers).and_return({:
|
59
|
-
allow(SwitchUser).to receive(:available_users_names).and_return({:
|
58
|
+
allow(SwitchUser).to receive(:available_users_identifiers).and_return({ client: :id })
|
59
|
+
allow(SwitchUser).to receive(:available_users_names).and_return({ client: :email })
|
60
60
|
|
61
61
|
expect do
|
62
62
|
switch_user @user
|
@@ -70,7 +70,7 @@ RSpec.feature "SwitchUser::RSpecFeatureHelpers", :type => :feature do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
scenario "arg is @client, available_users is {:user => lambda { User.all }, :client => lambda {Client.all}}, and available_users_identifiers is default" do
|
73
|
-
allow(SwitchUser).to receive(:available_users).and_return({:
|
73
|
+
allow(SwitchUser).to receive(:available_users).and_return({ user: -> { User.all }, client: -> { Client.all } })
|
74
74
|
|
75
75
|
expect do
|
76
76
|
switch_user @client
|
@@ -78,20 +78,20 @@ RSpec.feature "SwitchUser::RSpecFeatureHelpers", :type => :feature do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
scenario "arg is @client, available_users is {:user => lambda { User.all }, :client => lambda {Client.all}}, and available_users_identifiers is {:user => id, :client => id}" do
|
81
|
-
allow(SwitchUser).to receive(:available_users).and_return({:
|
81
|
+
allow(SwitchUser).to receive(:available_users).and_return({ user: -> { User.all }, client: -> { Client.all } })
|
82
82
|
|
83
|
-
allow(SwitchUser).to receive(:available_users_identifiers).and_return({:
|
84
|
-
allow(SwitchUser).to receive(:available_users_names).and_return({:
|
83
|
+
allow(SwitchUser).to receive(:available_users_identifiers).and_return({ user: :id, client: :id })
|
84
|
+
allow(SwitchUser).to receive(:available_users_names).and_return({ user: :email, client: :email })
|
85
85
|
|
86
86
|
expect do
|
87
87
|
switch_user @client
|
88
|
-
end.
|
88
|
+
end.not_to raise_error
|
89
89
|
end
|
90
90
|
|
91
91
|
scenario "args is :user and @user.id, available_users is default, and available_users_identifiers is default" do
|
92
92
|
expect do
|
93
93
|
switch_user :user, @user.id
|
94
|
-
end.
|
94
|
+
end.not_to raise_error
|
95
95
|
end
|
96
96
|
|
97
97
|
scenario "arg is :client and @client.id, available_users is default, and available_users_identifiers is default" do
|
@@ -121,7 +121,7 @@ RSpec.feature "SwitchUser::RSpecFeatureHelpers", :type => :feature do
|
|
121
121
|
scenario "args is :user and 0, available_users is default, and available_users_identifiers is default" do
|
122
122
|
expect do
|
123
123
|
switch_user :user, 0
|
124
|
-
end.
|
124
|
+
end.not_to raise_error
|
125
125
|
end
|
126
126
|
|
127
127
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,7 +7,7 @@ require 'pry'
|
|
7
7
|
require 'awesome_print'
|
8
8
|
|
9
9
|
RSpec.configure do |config|
|
10
|
-
config.filter_run :
|
10
|
+
config.filter_run focus: true
|
11
11
|
config.run_all_when_everything_filtered = true
|
12
12
|
config.use_transactional_fixtures = true
|
13
13
|
config.expose_dsl_globally = false
|
data/spec/support/application.rb
CHANGED
@@ -27,18 +27,30 @@ class ApplicationController < ActionController::Base
|
|
27
27
|
end
|
28
28
|
|
29
29
|
class DummyController < ApplicationController
|
30
|
-
|
30
|
+
before_action :require_user, only: :protected
|
31
31
|
|
32
32
|
def authenticated
|
33
|
-
|
33
|
+
if Rails.version.to_i >= 5
|
34
|
+
render plain: current_user.inspect
|
35
|
+
else
|
36
|
+
render text: current_user.inspect
|
37
|
+
end
|
34
38
|
end
|
35
39
|
|
36
40
|
def open
|
37
|
-
|
41
|
+
if Rails.version.to_i >= 5
|
42
|
+
render plain: view_context.switch_user_select
|
43
|
+
else
|
44
|
+
render text: view_context.switch_user_select
|
45
|
+
end
|
38
46
|
end
|
39
47
|
|
40
48
|
def protected
|
41
|
-
|
49
|
+
if Rails.version.to_i >= 5
|
50
|
+
render plain: view_context.switch_user_select
|
51
|
+
else
|
52
|
+
render text: view_context.switch_user_select
|
53
|
+
end
|
42
54
|
end
|
43
55
|
end
|
44
56
|
|
@@ -55,13 +67,13 @@ module MyApp
|
|
55
67
|
end
|
56
68
|
Rails.application.initialize!
|
57
69
|
Rails.application.routes.draw do
|
58
|
-
get 'dummy/protected', :
|
59
|
-
get 'dummy/open', :
|
60
|
-
post 'login', :
|
61
|
-
get 'logout', :
|
62
|
-
get 'authenticated', :
|
63
|
-
get :switch_user, :
|
64
|
-
get 'switch_user/remember_user', :
|
70
|
+
get 'dummy/protected', to: "dummy#protected"
|
71
|
+
get 'dummy/open', to: "dummy#open"
|
72
|
+
post 'login', to: "dummy#login"
|
73
|
+
get 'logout', to: "dummy#logout"
|
74
|
+
get 'authenticated', to: "dummy#authenticated"
|
75
|
+
get :switch_user, to: 'switch_user#set_current_user'
|
76
|
+
get 'switch_user/remember_user', to: 'switch_user#remember_user'
|
65
77
|
end
|
66
78
|
|
67
79
|
connection = ActiveRecord::Base.connection
|
data/spec/support/provider.rb
CHANGED
@@ -25,7 +25,7 @@ RSpec.shared_examples_for "a provider" do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "knows if there are any users logged in" do
|
28
|
-
provider.login(user)
|
28
|
+
provider.login(user, :user)
|
29
29
|
|
30
30
|
expect(provider.current_users_without_scope).to eq [user]
|
31
31
|
end
|
@@ -36,7 +36,7 @@ RSpec.shared_examples_for "a provider" do
|
|
36
36
|
provider.login_exclusive(other_user, scope: "user")
|
37
37
|
|
38
38
|
expect(provider.original_user).to eq user
|
39
|
-
expect(provider.current_user).to eq other_user
|
39
|
+
expect(provider.current_user(:user)).to eq other_user
|
40
40
|
end
|
41
41
|
|
42
42
|
it "can forget the original_user" do
|
@@ -5,7 +5,7 @@ module SwitchUser
|
|
5
5
|
describe '#all' do
|
6
6
|
it 'aggregates multiple data_sources' do
|
7
7
|
user = double(:user)
|
8
|
-
s1 = double(:s1, :
|
8
|
+
s1 = double(:s1, all: [user])
|
9
9
|
source = DataSources.new([s1, s1])
|
10
10
|
|
11
11
|
expect(source.all).to eq [user, user]
|
@@ -15,8 +15,8 @@ module SwitchUser
|
|
15
15
|
describe '#find_scope_id' do
|
16
16
|
it 'can find a corresponding record across data sources' do
|
17
17
|
user = double(:user)
|
18
|
-
s1 = double(:s1, :
|
19
|
-
s2 = double(:s2, :
|
18
|
+
s1 = double(:s1, find_scope_id: nil)
|
19
|
+
s2 = double(:s2, find_scope_id: user)
|
20
20
|
source = DataSources.new([s1, s2])
|
21
21
|
|
22
22
|
expect(source.find_scope_id("user_10")).to eq user
|
@@ -25,7 +25,7 @@ module SwitchUser
|
|
25
25
|
end
|
26
26
|
|
27
27
|
RSpec.describe DataSource do
|
28
|
-
|
28
|
+
skip # it's tested in integration test, need to find a good way to test it here.
|
29
29
|
end
|
30
30
|
|
31
31
|
RSpec.describe GuestDataSource do
|
@@ -8,10 +8,10 @@ module SwitchUser
|
|
8
8
|
provider = double.as_null_object
|
9
9
|
guard = SwitchUser::LambdaGuard.new(controller, provider)
|
10
10
|
|
11
|
-
SwitchUser.controller_guard =
|
11
|
+
SwitchUser.controller_guard = ->(a) { a }
|
12
12
|
expect(guard).to be_controller_available
|
13
13
|
|
14
|
-
SwitchUser.controller_guard =
|
14
|
+
SwitchUser.controller_guard = ->(a) { !a }
|
15
15
|
expect(guard).not_to be_controller_available
|
16
16
|
end
|
17
17
|
end
|
@@ -11,16 +11,16 @@ RSpec.describe SwitchUser::UserLoader do
|
|
11
11
|
|
12
12
|
describe ".user" do
|
13
13
|
before do
|
14
|
-
SwitchUser.available_users_identifiers = {:
|
15
|
-
allow(User).to receive(:where).with(:
|
14
|
+
SwitchUser.available_users_identifiers = { user: :id }
|
15
|
+
allow(User).to receive(:where).with(id: "1").and_return(user_result)
|
16
16
|
end
|
17
17
|
it "can be loaded from a scope and identifier" do
|
18
|
-
loaded_user = SwitchUser::UserLoader.prepare("user","1").user
|
18
|
+
loaded_user = SwitchUser::UserLoader.prepare("user", "1").user
|
19
19
|
|
20
20
|
expect(loaded_user).to eq user
|
21
21
|
end
|
22
22
|
it "can be loaded by a passing an unprocessed scope identifier" do
|
23
|
-
loaded_user = SwitchUser::UserLoader.prepare(:
|
23
|
+
loaded_user = SwitchUser::UserLoader.prepare(scope_identifier: "user_1").user
|
24
24
|
|
25
25
|
expect(loaded_user).to eq user
|
26
26
|
end
|
@@ -32,7 +32,7 @@ RSpec.describe SwitchUser::UserLoader do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "returns a user" do
|
35
|
-
allow(User).to receive(:where).with(:
|
35
|
+
allow(User).to receive(:where).with(id: 1).and_return(user_result)
|
36
36
|
|
37
37
|
loader = SwitchUser::UserLoader.new("user", 1)
|
38
38
|
|
@@ -47,8 +47,8 @@ RSpec.describe SwitchUser::UserLoader do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it "loads a user with an alternate identifier column" do
|
50
|
-
allow(User).to receive(:where).with(:
|
51
|
-
SwitchUser.available_users_identifiers = {:
|
50
|
+
allow(User).to receive(:where).with(email: 2).and_return(user_result)
|
51
|
+
SwitchUser.available_users_identifiers = { user: :email }
|
52
52
|
|
53
53
|
loader = SwitchUser::UserLoader.new("user", 2)
|
54
54
|
expect(loader.user).to eq user
|
@@ -3,8 +3,8 @@ require 'switch_user/user_set'
|
|
3
3
|
|
4
4
|
module SwitchUser
|
5
5
|
RSpec.describe UserSet do
|
6
|
-
let!(:user) { User.create(:
|
7
|
-
let(:set) { UserSet.new(:user, :id, :email,
|
6
|
+
let!(:user) { User.create(email: "test@example.com") }
|
7
|
+
let(:set) { UserSet.new(:user, :id, :email, -> { User.all }) }
|
8
8
|
after { User.delete_all }
|
9
9
|
it "returns an object that knows it's scope, id and label" do
|
10
10
|
found_user = set[user.id]
|
@@ -17,14 +17,14 @@ module SwitchUser
|
|
17
17
|
expect(set.users).to eq [user]
|
18
18
|
end
|
19
19
|
it "chains the where on to the provided scope" do
|
20
|
-
set = UserSet.new(:user, :id, :email,
|
20
|
+
set = UserSet.new(:user, :id, :email, -> { User.all })
|
21
21
|
expect(set.find_user(user.id).label).to eq user.email
|
22
22
|
end
|
23
23
|
end
|
24
24
|
RSpec.describe UserSet::Record do
|
25
25
|
it "correctly configures the record using the set" do
|
26
|
-
user = double(:user, :
|
27
|
-
set = double(:set, :
|
26
|
+
user = double(:user, id: 100, email: "test@example.com")
|
27
|
+
set = double(:set, identifier: :id, label: :email, scope: :user)
|
28
28
|
record = UserSet::Record.build(user, set)
|
29
29
|
expect(record.id).to eq 100
|
30
30
|
expect(record.label).to eq "test@example.com"
|
data/switch_user.gemspec
CHANGED
@@ -28,6 +28,6 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency "capybara"
|
29
29
|
|
30
30
|
s.files = `git ls-files`.split("\n")
|
31
|
-
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
31
|
+
s.executables = `git ls-files`.split("\n").map { |f| f =~ /^bin\/(.*)/ ? $1 : nil }.compact
|
32
32
|
s.require_path = 'lib'
|
33
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switch_user
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-10-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -261,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
261
261
|
version: 1.3.6
|
262
262
|
requirements: []
|
263
263
|
rubyforge_project: switch_user
|
264
|
-
rubygems_version: 2.
|
264
|
+
rubygems_version: 2.6.13
|
265
265
|
signing_key:
|
266
266
|
specification_version: 4
|
267
267
|
summary: Easily switch current user to speed up development
|