route_authorizer 0.0.2 → 0.0.3
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/lib/route_authorizer/authorizer.rb +3 -3
- data/lib/route_authorizer/permission.rb +1 -1
- data/lib/route_authorizer/version.rb +1 -1
- data/route_authorizer.gemspec +1 -1
- data/spec/authorizer_spec.rb +65 -3
- data/spec/permission_spec.rb +10 -5
- 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: d4d097356ade4d4b4a7970ce122a62644a8bde23
|
4
|
+
data.tar.gz: e69733b53d7502d2ee443cbfe8adb34c50de9925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb4fcf832f5b96ab5e4b4e8aea623bb0a42a2c4e09c55f55f49c04cfb5b217c7c96a507694d3c0596db9c13f206766b350f4b5d0a9c71e982ee1d0e8b79829ea
|
7
|
+
data.tar.gz: 0589805cc20769d137ca530fcd5c9e69fc13ab917666c4947d375107663ff6075d3d01c303b0d69f3f41b153581d04344fa97b2ba911b45a1e606992ce5768df
|
@@ -11,11 +11,11 @@ module RouteAuthorizer::Authorizer
|
|
11
11
|
private
|
12
12
|
|
13
13
|
def permission
|
14
|
-
@permission ||= ::Permission.new(current_user.role)
|
14
|
+
@permission ||= ::Permission.new(current_user.try(:role))
|
15
15
|
end
|
16
16
|
|
17
17
|
def can_redirect_to?(_controller_name, _action_name)
|
18
|
-
permission.redirect_to?(_controller_name, _action_name)
|
18
|
+
permission.redirect_to?(_controller_name, _action_name)
|
19
19
|
end
|
20
20
|
|
21
21
|
def can_redirect_to_path?(path)
|
@@ -25,7 +25,7 @@ private
|
|
25
25
|
|
26
26
|
def authorize_user!
|
27
27
|
unless can_redirect_to?(controller_name, action_name)
|
28
|
-
raise AccessDenied.new("Acess denied to '#{controller_name}##{action_name}'")
|
28
|
+
raise AccessDenied.new("Acess denied to '#{controller_name}##{action_name}'")
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
data/route_authorizer.gemspec
CHANGED
@@ -22,5 +22,5 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
23
23
|
spec.add_development_dependency 'rake'
|
24
24
|
spec.add_development_dependency 'rspec'
|
25
|
-
spec.add_development_dependency '
|
25
|
+
spec.add_development_dependency 'byebug'
|
26
26
|
end
|
data/spec/authorizer_spec.rb
CHANGED
@@ -1,10 +1,72 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
Permission = Object.new
|
4
|
+
|
3
5
|
describe RouteAuthorizer::Authorizer do
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
let(:role) { :admin }
|
8
|
+
let(:current_user) { double('User', role: role) }
|
9
|
+
let(:permission) { double('permission', redirect_to?: true) }
|
10
|
+
let(:controller) { ActionController::Base.new }
|
11
|
+
|
12
|
+
before do
|
13
|
+
allow(Permission).to receive(:new) { permission }
|
14
|
+
|
15
|
+
allow(controller).to receive(:controller_name) { :controller }
|
16
|
+
allow(controller).to receive(:action_name) { :action }
|
17
|
+
allow(controller).to receive(:current_user) { current_user }
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when has a current user' do
|
21
|
+
before do
|
22
|
+
expect(Permission).to receive(:new).with(role)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns current user role' do
|
26
|
+
controller.send(:permission)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when does not have a current user' do
|
31
|
+
before do
|
32
|
+
allow(controller).to receive(:current_user) { nil }
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'returns no role' do
|
36
|
+
expect(Permission).to receive(:new).with(nil)
|
37
|
+
controller.send(:permission)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when user has permission' do
|
42
|
+
before do
|
43
|
+
expect(permission).to receive(:redirect_to?).with(:controller, :action) { true }
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'raises no exception' do
|
47
|
+
expect {controller.send(:authorize_user!)}.not_to raise_error
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when user does not have permission' do
|
52
|
+
before do
|
53
|
+
expect(permission).to receive(:redirect_to?).with(:controller, :action) { false }
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'raises AccessDenied exception' do
|
57
|
+
expect {controller.send(:authorize_user!)}.to raise_error(RouteAuthorizer::Authorizer::AccessDenied)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it '#can_redirect_to?' do
|
62
|
+
expect(permission).to receive(:redirect_to?).with(:other_controller, :other_action)
|
63
|
+
controller.send(:can_redirect_to?, :other_controller, :other_action)
|
64
|
+
end
|
65
|
+
|
66
|
+
it '#can_redirect_to_path?' do
|
67
|
+
expect(Rails).to receive_message_chain(:application, :routes, :recognize_path).with('path') { {a: 1, b: 2, c: 3} }
|
68
|
+
expect(permission).to receive(:redirect_to?).with(1, 2)
|
69
|
+
controller.send(:can_redirect_to_path?, 'path')
|
8
70
|
end
|
9
71
|
|
10
72
|
end
|
data/spec/permission_spec.rb
CHANGED
@@ -2,13 +2,18 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe RouteAuthorizer::Permission do
|
4
4
|
|
5
|
-
let(:permission_class)
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
let(:permission_class) { Class.new }
|
6
|
+
let(:permission) { permission_class.new(@role) }
|
7
|
+
|
8
|
+
before do
|
9
|
+
@role = :admin
|
10
|
+
permission_class.include(RouteAuthorizer::Permission)
|
9
11
|
end
|
10
12
|
|
11
|
-
|
13
|
+
it 'returns no permission for no role' do
|
14
|
+
@role = nil
|
15
|
+
expect(permission.send(:role_permissions)).to eq([])
|
16
|
+
end
|
12
17
|
|
13
18
|
it 'returns no permission by default' do
|
14
19
|
expect(permission.send(:role_permissions)).to eq([])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: route_authorizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fábio Rodrigues
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: byebug
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|