switch_user 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +2 -0
  4. data/README.md +1 -0
  5. data/Rakefile +2 -0
  6. data/app/controllers/switch_user_controller.rb +6 -4
  7. data/app/helpers/switch_user_helper.rb +8 -8
  8. data/config/routes.rb +2 -0
  9. data/lib/generators/switch_user/install/install_generator.rb +2 -1
  10. data/lib/generators/switch_user/install/templates/switch_user.rb +5 -3
  11. data/lib/switch_user.rb +12 -12
  12. data/lib/switch_user/base_guard.rb +4 -2
  13. data/lib/switch_user/data_source.rb +6 -6
  14. data/lib/switch_user/lambda_guard.rb +2 -0
  15. data/lib/switch_user/provider.rb +15 -13
  16. data/lib/switch_user/provider/authlogic.rb +6 -6
  17. data/lib/switch_user/provider/base.rb +5 -4
  18. data/lib/switch_user/provider/clearance.rb +5 -3
  19. data/lib/switch_user/provider/devise.rb +2 -0
  20. data/lib/switch_user/provider/dummy.rb +8 -12
  21. data/lib/switch_user/provider/restful_authentication.rb +5 -3
  22. data/lib/switch_user/provider/session.rb +5 -3
  23. data/lib/switch_user/provider/sorcery.rb +6 -6
  24. data/lib/switch_user/rails.rb +3 -1
  25. data/lib/switch_user/rspec.rb +2 -2
  26. data/lib/switch_user/rspec/feature_helpers.rb +6 -7
  27. data/lib/switch_user/user_loader.rb +5 -2
  28. data/lib/switch_user/user_set.rb +5 -3
  29. data/lib/switch_user/version.rb +3 -1
  30. data/spec/controllers/switch_user_controller_spec.rb +21 -18
  31. data/spec/helpers/switch_user_helper_spec.rb +45 -46
  32. data/spec/integration/switch_user_spec.rb +91 -30
  33. data/spec/provider/authlogic_spec.rb +3 -1
  34. data/spec/provider/clearance_spec.rb +3 -1
  35. data/spec/provider/devise_spec.rb +17 -17
  36. data/spec/provider/dummy_spec.rb +3 -1
  37. data/spec/provider/restful_authentication_spec.rb +3 -1
  38. data/spec/provider/session_spec.rb +3 -1
  39. data/spec/provider/sorcery_spec.rb +3 -1
  40. data/spec/provider_spec.rb +3 -1
  41. data/spec/rspec/feature_helpers_spec.rb +31 -30
  42. data/spec/spec_helper.rb +3 -1
  43. data/spec/support/application.rb +13 -12
  44. data/spec/support/provider.rb +11 -9
  45. data/spec/switch_user/data_source_spec.rb +3 -1
  46. data/spec/switch_user/lambda_guard_spec.rb +4 -2
  47. data/spec/switch_user/user_loader_spec.rb +18 -16
  48. data/spec/switch_user/user_set_spec.rb +9 -7
  49. data/spec/switch_user_spec.rb +6 -4
  50. data/switch_user.gemspec +24 -23
  51. metadata +19 -19
@@ -1,4 +1,6 @@
1
- ENV["RAILS_ENV"] = "test"
1
+ # frozen_string_literal: true
2
+
3
+ ENV['RAILS_ENV'] = 'test'
2
4
  require 'support/provider'
3
5
  require 'support/application'
4
6
  require 'rspec/rails'
@@ -1,11 +1,12 @@
1
- require "rails"
2
- require "rails/all"
3
- require 'switch_user/rails'
1
+ # frozen_string_literal: true
4
2
 
3
+ require 'rails'
4
+ require 'rails/all'
5
+ require 'switch_user/rails'
5
6
 
6
7
  class ApplicationController < ActionController::Base
7
8
  def require_user
8
- current_user || redirect_to("/dummy/open")
9
+ current_user || redirect_to('/dummy/open')
9
10
  end
10
11
 
11
12
  def current_user
@@ -16,13 +17,13 @@ class ApplicationController < ActionController::Base
16
17
  user = User.find(params[:id])
17
18
  session[SwitchUser.session_key] = user.id
18
19
 
19
- redirect_to("/dummy/protected")
20
+ redirect_to('/dummy/protected')
20
21
  end
21
22
 
22
23
  def logout
23
24
  session[SwitchUser.session_key] = nil
24
25
 
25
- redirect_to("/dummy/open")
26
+ redirect_to('/dummy/open')
26
27
  end
27
28
  end
28
29
 
@@ -57,7 +58,7 @@ end
57
58
  module MyApp
58
59
  class Application < Rails::Application
59
60
  config.active_support.deprecation = :log
60
- config.secret_key_base = "abc123"
61
+ config.secret_key_base = 'abc123'
61
62
  config.eager_load = true
62
63
  config.secret_token = '153572e559247c7aedd1bca5a246874d'
63
64
 
@@ -67,11 +68,11 @@ module MyApp
67
68
  end
68
69
  Rails.application.initialize!
69
70
  Rails.application.routes.draw do
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"
71
+ get 'dummy/protected', to: 'dummy#protected'
72
+ get 'dummy/open', to: 'dummy#open'
73
+ post 'login', to: 'dummy#login'
74
+ get 'logout', to: 'dummy#logout'
75
+ get 'authenticated', to: 'dummy#authenticated'
75
76
  get :switch_user, to: 'switch_user#set_current_user'
76
77
  get 'switch_user/remember_user', to: 'switch_user#remember_user'
77
78
  end
@@ -1,14 +1,16 @@
1
- RSpec.shared_examples_for "a provider" do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples_for 'a provider' do
2
4
  let(:user) { User.create! }
3
5
  let(:other_user) { User.create! }
4
6
 
5
- it "can log a user in" do
7
+ it 'can log a user in' do
6
8
  provider.login(user)
7
9
 
8
10
  expect(provider.current_user).to eq user
9
11
  end
10
12
 
11
- it "can log a user out" do
13
+ it 'can log a user out' do
12
14
  provider.login(user)
13
15
 
14
16
  provider.logout
@@ -16,30 +18,30 @@ RSpec.shared_examples_for "a provider" do
16
18
  expect(provider.current_user).to eq nil
17
19
  end
18
20
 
19
- it "responds to login_exclusive" do
21
+ it 'responds to login_exclusive' do
20
22
  expect(provider).to respond_to(:login_exclusive)
21
23
  end
22
24
 
23
- it "responds to login_exclusive" do
25
+ it 'responds to login_exclusive' do
24
26
  expect(provider).to respond_to(:login_inclusive)
25
27
  end
26
28
 
27
- it "knows if there are any users logged in" do
29
+ it 'knows if there are any users logged in' do
28
30
  provider.login(user, :user)
29
31
 
30
32
  expect(provider.current_users_without_scope).to eq [user]
31
33
  end
32
34
 
33
- it "can lock the original user, allowing us to change current_user" do
35
+ it 'can lock the original user, allowing us to change current_user' do
34
36
  provider.login(user)
35
37
  provider.remember_current_user(true)
36
- provider.login_exclusive(other_user, scope: "user")
38
+ provider.login_exclusive(other_user, scope: 'user')
37
39
 
38
40
  expect(provider.original_user).to eq user
39
41
  expect(provider.current_user(:user)).to eq other_user
40
42
  end
41
43
 
42
- it "can forget the original_user" do
44
+ it 'can forget the original_user' do
43
45
  provider.login(user)
44
46
  provider.remember_current_user(true)
45
47
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'switch_user/data_source'
2
4
 
3
5
  module SwitchUser
@@ -19,7 +21,7 @@ module SwitchUser
19
21
  s2 = double(:s2, find_scope_id: user)
20
22
  source = DataSources.new([s1, s2])
21
23
 
22
- expect(source.find_scope_id("user_10")).to eq user
24
+ expect(source.find_scope_id('user_10')).to eq user
23
25
  end
24
26
  end
25
27
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module SwitchUser
4
6
  RSpec.describe LambdaGuard do
5
- describe "#controller_available?" do
6
- it "calls the controller_guard proc" do
7
+ describe '#controller_available?' do
8
+ it 'calls the controller_guard proc' do
7
9
  controller = double.as_null_object
8
10
  provider = double.as_null_object
9
11
  guard = SwitchUser::LambdaGuard.new(controller, provider)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'switch_user/user_loader'
3
5
 
@@ -5,52 +7,52 @@ RSpec.describe SwitchUser::UserLoader do
5
7
  let(:user) { double(:user) }
6
8
  let(:user_result) { [user] }
7
9
 
8
- it "raises an exception if we are passed an invalid scope" do
9
- expect { SwitchUser::UserLoader.new("useeer", 1) }.to raise_error(SwitchUser::InvalidScope)
10
+ it 'raises an exception if we are passed an invalid scope' do
11
+ expect { SwitchUser::UserLoader.new('useeer', 1) }.to raise_error(SwitchUser::InvalidScope)
10
12
  end
11
13
 
12
- describe ".user" do
14
+ describe '.user' do
13
15
  before do
14
16
  SwitchUser.available_users_identifiers = { user: :id }
15
- allow(User).to receive(:where).with(id: "1").and_return(user_result)
17
+ allow(User).to receive(:where).with(id: '1').and_return(user_result)
16
18
  end
17
- it "can be loaded from a scope and identifier" do
18
- loaded_user = SwitchUser::UserLoader.prepare("user", "1").user
19
+ it 'can be loaded from a scope and identifier' do
20
+ loaded_user = SwitchUser::UserLoader.prepare('user', '1').user
19
21
 
20
22
  expect(loaded_user).to eq user
21
23
  end
22
- it "can be loaded by a passing an unprocessed scope identifier" do
23
- loaded_user = SwitchUser::UserLoader.prepare(scope_identifier: "user_1").user
24
+ it 'can be loaded by a passing an unprocessed scope identifier' do
25
+ loaded_user = SwitchUser::UserLoader.prepare(scope_identifier: 'user_1').user
24
26
 
25
27
  expect(loaded_user).to eq user
26
28
  end
27
- it "raises an error for an invalid scope" do
29
+ it 'raises an error for an invalid scope' do
28
30
  expect {
29
- loaded_user = SwitchUser::UserLoader.prepare(nil, "1")
31
+ loaded_user = SwitchUser::UserLoader.prepare(nil, '1')
30
32
  }.to raise_error(SwitchUser::InvalidScope)
31
33
  end
32
34
  end
33
35
 
34
- it "returns a user" do
36
+ it 'returns a user' do
35
37
  allow(User).to receive(:where).with(id: 1).and_return(user_result)
36
38
 
37
- loader = SwitchUser::UserLoader.new("user", 1)
39
+ loader = SwitchUser::UserLoader.new('user', 1)
38
40
 
39
41
  expect(loader.user).to eq user
40
42
  end
41
43
 
42
- it "returns nil if no user is found" do
43
- loader = SwitchUser::UserLoader.new("user", 3)
44
+ it 'returns nil if no user is found' do
45
+ loader = SwitchUser::UserLoader.new('user', 3)
44
46
 
45
47
  expect(User.find_by_id(3)).to be_nil
46
48
  expect(loader.user).to eq nil
47
49
  end
48
50
 
49
- it "loads a user with an alternate identifier column" do
51
+ it 'loads a user with an alternate identifier column' do
50
52
  allow(User).to receive(:where).with(email: 2).and_return(user_result)
51
53
  SwitchUser.available_users_identifiers = { user: :email }
52
54
 
53
- loader = SwitchUser::UserLoader.new("user", 2)
55
+ loader = SwitchUser::UserLoader.new('user', 2)
54
56
  expect(loader.user).to eq user
55
57
  end
56
58
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'switch_user/user_set'
3
5
 
4
6
  module SwitchUser
5
7
  RSpec.describe UserSet do
6
- let!(:user) { User.create(email: "test@example.com") }
8
+ let!(:user) { User.create(email: 'test@example.com') }
7
9
  let(:set) { UserSet.new(:user, :id, :email, -> { User.all }) }
8
10
  after { User.delete_all }
9
11
  it "returns an object that knows it's scope, id and label" do
@@ -11,23 +13,23 @@ module SwitchUser
11
13
 
12
14
  expect(found_user.id).to eq user.id
13
15
  expect(found_user.scope).to eq :user
14
- expect(found_user.label).to eq "test@example.com"
16
+ expect(found_user.label).to eq 'test@example.com'
15
17
  end
16
- it "returns all available users for a scope" do
18
+ it 'returns all available users for a scope' do
17
19
  expect(set.users).to eq [user]
18
20
  end
19
- it "chains the where on to the provided scope" do
21
+ it 'chains the where on to the provided scope' do
20
22
  set = UserSet.new(:user, :id, :email, -> { User.all })
21
23
  expect(set.find_user(user.id).label).to eq user.email
22
24
  end
23
25
  end
24
26
  RSpec.describe UserSet::Record do
25
- it "correctly configures the record using the set" do
26
- user = double(:user, id: 100, email: "test@example.com")
27
+ it 'correctly configures the record using the set' do
28
+ user = double(:user, id: 100, email: 'test@example.com')
27
29
  set = double(:set, identifier: :id, label: :email, scope: :user)
28
30
  record = UserSet::Record.build(user, set)
29
31
  expect(record.id).to eq 100
30
- expect(record.label).to eq "test@example.com"
32
+ expect(record.label).to eq 'test@example.com'
31
33
  expect(record.scope).to eq :user
32
34
  end
33
35
  end
@@ -1,15 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'switch_user'
3
5
 
4
6
  RSpec.describe SwitchUser do
5
- describe "#available_scopes" do
6
- it "returns a list of available scopes" do
7
+ describe '#available_scopes' do
8
+ it 'returns a list of available scopes' do
7
9
  expect(SwitchUser.available_scopes).to eq [:user]
8
10
  end
9
11
  end
10
12
 
11
- describe "assigning the provider" do
12
- it "sets the provider" do
13
+ describe 'assigning the provider' do
14
+ it 'sets the provider' do
13
15
  # ensure we aren't breaking existing functionality
14
16
  SwitchUser.provider = :sorcery
15
17
  expect(SwitchUser.provider).to eq :sorcery
@@ -1,33 +1,34 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path("../lib/switch_user/version", __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('../lib/switch_user/version', __FILE__)
3
4
 
4
5
  Gem::Specification.new do |s|
5
- s.name = "switch_user"
6
+ s.name = 'switch_user'
6
7
  s.version = SwitchUser::VERSION
7
8
  s.platform = Gem::Platform::RUBY
8
- s.authors = ["Richard Huang", "Luke Cowell"]
9
- s.email = ["flyerhzm@gmail.com"]
10
- s.homepage = "http://rubygems.org/gems/switch_user"
11
- s.summary = "Easily switch current user to speed up development"
12
- s.description = "Easily switch current user to speed up development"
9
+ s.authors = ['Richard Huang', 'Luke Cowell']
10
+ s.email = ['flyerhzm@gmail.com']
11
+ s.homepage = 'http://rubygems.org/gems/switch_user'
12
+ s.summary = 'Easily switch current user to speed up development'
13
+ s.description = 'Easily switch current user to speed up development'
13
14
 
14
- s.required_rubygems_version = ">= 1.3.6"
15
- s.rubyforge_project = "switch_user"
15
+ s.required_rubygems_version = '>= 1.3.6'
16
+ s.rubyforge_project = 'switch_user'
16
17
 
17
- s.add_development_dependency "activesupport"
18
- s.add_development_dependency "bundler", ">= 1.0.0"
19
- s.add_development_dependency "actionpack"
20
- s.add_development_dependency "railties"
21
- s.add_development_dependency "rspec"
22
- s.add_development_dependency "rspec-rails"
23
- s.add_development_dependency "tzinfo"
24
- s.add_development_dependency "sqlite3"
25
- s.add_development_dependency "activerecord"
26
- s.add_development_dependency "awesome_print"
27
- s.add_development_dependency "pry"
28
- s.add_development_dependency "capybara"
18
+ s.add_development_dependency 'actionpack'
19
+ s.add_development_dependency 'activerecord'
20
+ s.add_development_dependency 'activesupport'
21
+ s.add_development_dependency 'awesome_print'
22
+ s.add_development_dependency 'bundler', '>= 1.0.0'
23
+ s.add_development_dependency 'capybara'
24
+ s.add_development_dependency 'pry'
25
+ s.add_development_dependency 'railties'
26
+ s.add_development_dependency 'rspec'
27
+ s.add_development_dependency 'rspec-rails'
28
+ s.add_development_dependency 'sqlite3'
29
+ s.add_development_dependency 'tzinfo'
29
30
 
30
31
  s.files = `git ls-files`.split("\n")
31
- s.executables = `git ls-files`.split("\n").map { |f| f =~ /^bin\/(.*)/ ? $1 : nil }.compact
32
+ s.executables = `git ls-files`.split("\n").map { |f| f =~ /^bin\/(.*)/ ? Regexp.last_match(1) : nil }.compact
32
33
  s.require_path = 'lib'
33
34
  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.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-27 00:00:00.000000000 Z
12
+ date: 2018-10-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: activesupport
15
+ name: actionpack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
@@ -26,21 +26,21 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: bundler
29
+ name: activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 1.0.0
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: actionpack
43
+ name: activesupport
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -54,7 +54,7 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: railties
57
+ name: awesome_print
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
@@ -68,21 +68,21 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: rspec
71
+ name: bundler
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: 1.0.0
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: '0'
83
+ version: 1.0.0
84
84
  - !ruby/object:Gem::Dependency
85
- name: rspec-rails
85
+ name: capybara
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ">="
@@ -96,7 +96,7 @@ dependencies:
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
- name: tzinfo
99
+ name: pry
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="
@@ -110,7 +110,7 @@ dependencies:
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
- name: sqlite3
113
+ name: railties
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - ">="
@@ -124,7 +124,7 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
- name: activerecord
127
+ name: rspec
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - ">="
@@ -138,7 +138,7 @@ dependencies:
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
- name: awesome_print
141
+ name: rspec-rails
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - ">="
@@ -152,7 +152,7 @@ dependencies:
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
- name: pry
155
+ name: sqlite3
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - ">="
@@ -166,7 +166,7 @@ dependencies:
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
- name: capybara
169
+ name: tzinfo
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - ">="
@@ -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.6.13
264
+ rubygems_version: 2.6.14
265
265
  signing_key:
266
266
  specification_version: 4
267
267
  summary: Easily switch current user to speed up development