switch_user 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
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