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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 03917bb50ef8c090257e8517adeba2647738ee55
4
- data.tar.gz: f0c27426804ef97d9c58390cbba72fac3660820c
3
+ metadata.gz: d4d097356ade4d4b4a7970ce122a62644a8bde23
4
+ data.tar.gz: e69733b53d7502d2ee443cbfe8adb34c50de9925
5
5
  SHA512:
6
- metadata.gz: 31d86741194eb317a30120bfc30b761cb9ce0438f0b5728d7faa6022878fdcd5edbbbeb0a09c7e62d41e2583e6c92c52769a087291a66fd1a8cabdf197350e77
7
- data.tar.gz: ba84579744255ef98a422e1a5e917e332ad09f9831cd183e6dd208961950a9f6dd8f3b231809aa81cbbe2930a41090c2f6c31f669fe083d7ea90f55f07d4332c
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) if current_user
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}'") if current_user
28
+ raise AccessDenied.new("Acess denied to '#{controller_name}##{action_name}'")
29
29
  end
30
30
  end
31
31
 
@@ -1,7 +1,7 @@
1
1
  module RouteAuthorizer::Permission
2
2
 
3
3
  def initialize(role)
4
- @role = role
4
+ @role = role.to_s
5
5
  end
6
6
 
7
7
  def redirect_to?(controller_name, action_name)
@@ -1,3 +1,3 @@
1
1
  module RouteAuthorizer
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -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 'pry-meta'
25
+ spec.add_development_dependency 'byebug'
26
26
  end
@@ -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
- it 'extends active support concern' do
6
- included_modules = RouteAuthorizer::Authorizer.singleton_class.included_modules
7
- expect(included_modules).to be_include ActiveSupport::Concern
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
@@ -2,13 +2,18 @@ require 'spec_helper'
2
2
 
3
3
  describe RouteAuthorizer::Permission do
4
4
 
5
- let(:permission_class) do
6
- klass = Class.new
7
- klass.include(RouteAuthorizer::Permission)
8
- klass
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
- let(:permission) { permission_class.new(:admin) }
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.2
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-08 00:00:00.000000000 Z
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: pry-meta
70
+ name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="