permissioner 0.0.1.beta → 0.0.2.beta

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cfc2e5ec9d5f94f5c6630cac9b25295e5d6c0730
4
+ data.tar.gz: 35ceaa2887957280d16025bf13da99d891d23685
5
+ SHA512:
6
+ metadata.gz: 68a379955f1b30f03d356196495edc5bc3ba5a7f51cd6466e7723e453fcbcea5db11bad372a71fad1b6e2f9fab298af4adcc8a3cbd032bba50f8dcf6e147c01f
7
+ data.tar.gz: e2dd5c7b676575a23fe64207317e2af0ff00fbdc51df8f6442a2342bd8ffc4905989c11be269665a22e68f1732985704b15bbd85ae2fde09c283b685dfb36fa0
data/Guardfile CHANGED
@@ -1,6 +1,8 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
+ notification :notifysend
5
+
4
6
  guard 'rspec' do
5
7
  watch(%r{^spec/.+_spec\.rb$})
6
8
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb"}
data/epl-v10.html CHANGED
@@ -258,5 +258,4 @@ rights to a jury trial in any resulting litigation.</p>
258
258
 
259
259
  </body>
260
260
 
261
- </html>
262
- ------------A8suzBvPzrflNqC2kT6WbM--
261
+ </html>
@@ -2,7 +2,7 @@ module Permissioner
2
2
  module ControllerAdditions
3
3
 
4
4
  def self.included(base)
5
- base.helper_method :allow_action?, :allow_attribute?
5
+ base.helper_method :allow_action?, :allow_attribute?, :permission_service
6
6
  base.delegate :allow_action?, :allow_attribute?, to: :permission_service
7
7
  end
8
8
 
@@ -16,12 +16,11 @@ module Permissioner
16
16
  end
17
17
 
18
18
  def permission_service
19
- @permission_service ||= PermissionService.create(current_user)
19
+ @permission_service ||= PermissionService.new(current_user)
20
20
  end
21
21
 
22
22
  def current_resource
23
23
  nil
24
24
  end
25
-
26
25
  end
27
26
  end
@@ -9,8 +9,8 @@ RSpec::Matchers.define :allow_attribute do |*args|
9
9
  permission_service.allow_attribute?(*args)
10
10
  end
11
11
  end
12
- RSpec::Matchers.define :passed_filters do |*args|
12
+ RSpec::Matchers.define :pass_filters do |controller, action, params={}|
13
13
  match do |permission_service|
14
- permission_service.passed_filters?(*args)
14
+ permission_service.passed_filters?(controller, action, params)
15
15
  end
16
16
  end
@@ -26,28 +26,16 @@ module Permissioner
26
26
  #
27
27
  module PermissionConfigurer
28
28
 
29
- attr_accessor :current_user, :permission_service
29
+ attr_reader :current_user, :permission_service
30
30
  delegate :allow_actions, :allow_attributes, :add_filter, to: :permission_service
31
31
 
32
- module ClassMethods
33
32
 
34
- # Calling this method is the only intended way for creating an instance of the including class. It ensures the
35
- # correct initialization and configurations of the permissions.
36
- #
37
- # Expects the an instance of a class including module Permissioner::PermissionServiceAdditions acting as
38
- # permission service and current signed in user.
39
- #
40
- def create permission_service, current_user
41
- permission_configurer= self.new
42
- permission_configurer.permission_service = permission_service
43
- permission_configurer.current_user = current_user
44
- permission_configurer.configure_permissions
45
- permission_configurer
46
- end
47
- end
48
-
49
- def self.included(base)
50
- base.extend(ClassMethods)
33
+ # Expects an instance of a class including module Permissioner::PermissionServiceAdditions acting as
34
+ # permission service and current signed in user.
35
+ def initialize permission_service, current_user
36
+ @permission_service = permission_service
37
+ @current_user = current_user
38
+ configure_permissions
51
39
  end
52
40
 
53
41
  # Should be overwritten by the including class and is called during initialization in ::create.
@@ -1,21 +1,13 @@
1
1
  module Permissioner
2
2
  module PermissionServiceAdditions
3
3
 
4
- module ClassMethods
5
-
6
- def create current_user
7
- permission_service = self.new
8
- permission_service.current_user = current_user
9
- permission_service.configure_permissions
10
- permission_service
11
- end
12
- end
4
+ attr_accessor :current_user
13
5
 
14
- def self.included(base)
15
- base.extend(ClassMethods)
6
+ def initialize current_user=nil
7
+ @current_user = current_user
8
+ configure_permissions
16
9
  end
17
10
 
18
- attr_accessor :current_user
19
11
 
20
12
  def allow_action?(controller, action, resource = nil)
21
13
  allowed = @allow_all || (@allowed_actions && @allowed_actions[[controller.to_s, action.to_s]])
@@ -55,7 +47,7 @@ module Permissioner
55
47
  #You can allow a single action or multiple actions at once:
56
48
  #
57
49
  # allow_actions :comments, :index
58
- # allow_acitons [:comments, :posts], [:index, :create, :update]
50
+ # allow_actions [:comments, :posts], [:index, :create, :update]
59
51
  #
60
52
  #If a block is given it is stored for the given action and will be evaluated every time the authorization for the
61
53
  #action runs. If the block returns true the action is allowed otherwise not. The current_resource will be put
@@ -74,7 +66,11 @@ module Permissioner
74
66
  @allowed_attributes ||= {}
75
67
  Array(resources).each do |resource|
76
68
  @allowed_attributes[resource] ||= []
77
- @allowed_attributes[resource] += Array(attributes)
69
+ if attributes.is_a?(Hash)
70
+ @allowed_attributes[resource] << attributes
71
+ else
72
+ @allowed_attributes[resource] += Array(attributes)
73
+ end
78
74
  end
79
75
  end
80
76
 
@@ -89,11 +85,11 @@ module Permissioner
89
85
  end
90
86
  end
91
87
 
92
- # Configures permissions by calling the factory method ::create on the given class which is intended to include
88
+ # Configures permissions by instantiate a new object of the given class which is intended to include
93
89
  # the module Permissioner::PermissionConfigurer.
94
90
  #
95
91
  def configure configurer_class
96
- configurer_class.create(self, current_user)
92
+ configurer_class.new(self, current_user)
97
93
  end
98
94
 
99
95
  # Should be overwritten by the including class and is called during initialization in ::create.
@@ -1,3 +1,3 @@
1
1
  module Permissioner
2
- VERSION = "0.0.1.beta"
2
+ VERSION = "0.0.2.beta"
3
3
  end
data/permissioner.gemspec CHANGED
@@ -8,8 +8,10 @@ Gem::Specification.new do |gem|
8
8
  gem.version = Permissioner::VERSION
9
9
  gem.authors = ["Daniel Grawunder, Christian Mierich"]
10
10
  gem.email = ["gramie.sw@gmail.com"]
11
- gem.description = %q{A Ruby on Rails authorization gem}
11
+ gem.homepage = "https://github.com/gramie-sw/permissioner"
12
+ gem.description = %q{A Ruby on Rails authorization gem}
12
13
  gem.summary = %q{An easy to use authorization solution for Ruby on Rails.}
14
+ gem.license = "EPL 1.0"
13
15
 
14
16
  gem.files = `git ls-files`.split($/)
15
17
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
@@ -18,5 +20,5 @@ Gem::Specification.new do |gem|
18
20
 
19
21
  gem.add_development_dependency "rspec", "~> 2.13"
20
22
  gem.add_development_dependency "activesupport", "~>3.2"
21
- gem.add_development_dependency "guard-rspec", "~>2.6.0"
23
+ gem.add_development_dependency "guard-rspec", "~>3.0.1"
22
24
  end
@@ -16,8 +16,8 @@ describe Permissioner::ControllerAdditions do
16
16
  @clazz = Class.new
17
17
  end
18
18
 
19
- it 'should delegate helper methods to permission service' do
20
- @clazz.should_receive(:helper_method).with(:allow_action?, :allow_attribute?)
19
+ it 'should set view helpers' do
20
+ @clazz.should_receive(:helper_method).with(:allow_action?, :allow_attribute?, :permission_service)
21
21
  @clazz.send(:include, Permissioner::ControllerAdditions)
22
22
  end
23
23
 
@@ -85,14 +85,14 @@ describe Permissioner::ControllerAdditions do
85
85
  permission_service_1.should eq permission_service_2
86
86
  end
87
87
 
88
- it 'should create PermissionService by calling PermissionService::create' do
89
- PermissionService.should_receive(:create)
88
+ it 'should create PermissionService by calling PermissionService::new' do
89
+ PermissionService.should_receive(:new)
90
90
  @controller.permission_service
91
91
  end
92
92
 
93
- it 'should pass current_user to PermissionService::create' do
93
+ it 'should pass current_user to PermissionService::initialize' do
94
94
  @controller.should_receive(:current_user).and_return('current_user')
95
- PermissionService.should_receive(:create).with('current_user')
95
+ PermissionService.should_receive(:new).with('current_user')
96
96
  @controller.permission_service
97
97
  end
98
98
  end
@@ -103,5 +103,4 @@ describe Permissioner::ControllerAdditions do
103
103
  @controller.current_resource.should be_nil
104
104
  end
105
105
  end
106
-
107
106
  end
@@ -32,16 +32,21 @@ describe 'matchers' do
32
32
  end
33
33
  end
34
34
 
35
- describe 'passed_filters' do
35
+ describe 'pass_filters' do
36
36
 
37
- it 'should delegate call to PermissionService#allow_action?' do
38
- @permission_service.should_receive(:passed_filters?).with(:comment, :user_id, :text).and_return(true)
39
- @permission_service.should passed_filters :comment, :user_id, :text
37
+ it 'should delegate call to PermissionService#passed_filters?' do
38
+ @permission_service.should_receive(:passed_filters?).with(:comment, :user_id, :block).and_return(true)
39
+ @permission_service.should pass_filters :comment, :user_id, :block
40
40
  end
41
41
 
42
- it 'should return false when PermissionService#allow_action? returns false' do
42
+ it 'should return false when PermissionService#passed_filters? returns false' do
43
43
  @permission_service.should_receive(:passed_filters?).and_return(false)
44
- @permission_service.should_not passed_filters
44
+ @permission_service.should_not pass_filters
45
+ end
46
+
47
+ it 'should set empty Hash as default value for params argument' do
48
+ @permission_service.should_receive(:passed_filters?).with(:comment, :user_id, {}).and_return(true)
49
+ @permission_service.should pass_filters :comment, :user_id
45
50
  end
46
51
  end
47
52
  end
@@ -2,59 +2,60 @@ require 'spec_helper'
2
2
 
3
3
  describe Permissioner::PermissionConfigurer do
4
4
 
5
- before :each do
6
- @permission_configurer_class = Class.new
7
- @permission_configurer_class.send(:include, Permissioner::PermissionConfigurer)
8
- @permissioin_configurer = @permission_configurer_class.new
5
+ let(:permission_configurer_class) do
6
+ permission_configurer_class = Class.new
7
+ permission_configurer_class.send(:include, Permissioner::PermissionConfigurer)
8
+ permission_configurer_class
9
9
  end
10
10
 
11
11
  context 'delegation' do
12
+ let(:permission_service) { double('PermissionService') }
13
+ let(:permission_configurer) { permission_configurer_class.new(permission_service, 'current_user') }
12
14
 
13
15
  it 'should delegate call to allow_actions to permission_service' do
14
- @permissioin_configurer.should_receive(:allow_actions).with(:comments, :index)
15
- @permissioin_configurer.allow_actions(:comments, :index)
16
+ permission_service.should_receive(:allow_actions).with(:comments, :index)
17
+ permission_configurer.allow_actions(:comments, :index)
16
18
  end
17
19
 
18
20
  it 'should delegate call to allow_attributes to permission_service' do
19
- @permissioin_configurer.should_receive(:allow_attributes).with(:comment, [:user_id, :text])
20
- @permissioin_configurer.allow_attributes(:comment, [:user_id, :text])
21
+ permission_service.should_receive(:allow_attributes).with(:comment, [:user_id, :text])
22
+ permission_configurer.allow_attributes(:comment, [:user_id, :text])
21
23
  end
22
24
 
23
25
  it 'should delegate call to add_filter to permission_service' do
24
- @permissioin_configurer.should_receive(:add_filter).with(:comments, :create, Proc.new {})
25
- @permissioin_configurer.add_filter(:comments, :create, Proc.new {})
26
+ block = Proc.new {}
27
+ permission_service.should_receive(:add_filter).with(:comments, :create, &block)
28
+ permission_configurer.add_filter(:comments, :create, &block)
26
29
  end
27
30
  end
28
31
 
29
- describe '::included' do
32
+ context 'setters' do
33
+ subject(:permission_configurer){ permission_configurer_class.new(nil, nil) }
30
34
 
31
- it 'should extend including class with module Permissioner::PermissionConfigurer::ClassMethods' do
32
- clazz = Class.new
33
- clazz.should_receive(:extend).with(Permissioner::PermissionConfigurer::ClassMethods)
34
- clazz.send(:include, Permissioner::PermissionConfigurer)
35
+ it 'should respond_to permission_service' do
36
+ should respond_to(:permission_service)
35
37
  end
36
- end
37
-
38
- describe '::create' do
39
38
 
40
- it 'should return permission_service instance' do
41
- permission_service = @permission_configurer_class.create(nil, nil)
42
- permission_service.class.included_modules.should include(Permissioner::PermissionConfigurer)
39
+ it 'should respond_to current_user' do
40
+ should respond_to(:current_user)
43
41
  end
42
+ end
43
+
44
+ describe '#initialize' do
44
45
 
45
46
  it 'should set permission_service' do
46
- @permission_configurer_class.any_instance.should_receive(:permission_service=).with('permission_service')
47
- @permission_configurer_class.create('permission_service', nil)
47
+ permission_configurer = permission_configurer_class.new('permission_service', nil)
48
+ permission_configurer.permission_service.should eq 'permission_service'
48
49
  end
49
50
 
50
51
  it 'should set current_user' do
51
- @permission_configurer_class.any_instance.should_receive(:current_user=).with('current_user')
52
- @permission_configurer_class.create(nil, 'current_user')
52
+ permission_configurer = permission_configurer_class.new(nil, 'current_user')
53
+ permission_configurer.current_user.should eq 'current_user'
53
54
  end
54
55
 
55
56
  it 'should call configure_permissions current_user' do
56
- @permission_configurer_class.any_instance.should_receive(:configure_permissions)
57
- @permission_configurer_class.create(nil, nil)
57
+ permission_configurer_class.any_instance.should_receive(:configure_permissions)
58
+ permission_configurer_class.new(nil, nil)
58
59
  end
59
60
  end
60
61
  end
@@ -2,61 +2,45 @@ require 'spec_helper'
2
2
 
3
3
  describe Permissioner::PermissionServiceAdditions do
4
4
 
5
- before :each do
6
- @permission_service_class = Class.new
7
- @permission_service_class.send(:include, Permissioner::PermissionServiceAdditions)
8
- @permission_service = @permission_service_class.new
5
+ let(:permission_service_class) do
6
+ permission_service_class = Class.new
7
+ permission_service_class.send(:include, Permissioner::PermissionServiceAdditions)
8
+ permission_service_class
9
9
  end
10
10
 
11
- describe '::included' do
11
+ let(:permission_service) { permission_service_class.new }
12
12
 
13
- it 'should extend including class with module Permissioner::PermissionServiceAdditions::ClassMethods' do
14
- clazz = Class.new
15
- clazz.should_receive(:extend).with(Permissioner::PermissionServiceAdditions::ClassMethods)
16
- clazz.send(:include, Permissioner::PermissionServiceAdditions)
17
- end
18
- end
19
-
20
- describe '::create' do
13
+ describe '#initialize' do
21
14
 
22
- before :each do
23
- @permission_service_class.any_instance.stub(:configure_permissions)
24
- end
25
-
26
- it 'should return permission_service instance' do
27
- permission_service = @permission_service_class.create(nil)
28
- permission_service.class.included_modules.should include(Permissioner::PermissionServiceAdditions)
15
+ it 'should call configure_permissions' do
16
+ permission_service_class.any_instance.should_receive(:configure_permissions).once
17
+ permission_service_class.new
29
18
  end
30
19
 
31
20
  it 'should set current_user' do
32
- @permission_service_class.any_instance.should_receive(:current_user=).with('current_user')
33
- @permission_service_class.create('current_user')
34
- end
35
-
36
- it 'should call configure_permissions current_user' do
37
- @permission_service_class.any_instance.should_receive(:configure_permissions)
38
- @permission_service_class.create(nil)
21
+ permission_service = permission_service_class.new 'current_user'
22
+ permission_service.current_user.should eq 'current_user'
39
23
  end
40
24
  end
41
25
 
42
26
  describe '#allow_action?' do
43
27
 
44
28
  it 'should return true if @allow_all is true' do
45
- @permission_service.allow_all
46
- @permission_service.allow_action?(:comments, :index).should be_true
29
+ permission_service.allow_all
30
+ permission_service.allow_action?(:comments, :index).should be_true
47
31
  end
48
32
 
49
33
  context 'when no block given' do
50
34
 
51
35
  it 'should return true if given action allowed' do
52
- @permission_service.allow_actions :comments, :index
53
- @permission_service.allow_action?(:comments, :index).should be_true
36
+ permission_service.allow_actions :comments, :index
37
+ permission_service.allow_action?(:comments, :index).should be_true
54
38
  end
55
39
 
56
40
  it 'should return false if given action not allowed' do
57
- @permission_service.allow_action?(:comments, :index).should be_false
58
- @permission_service.allow_actions :comments, :create
59
- @permission_service.allow_action?(:comments, :index).should be_false
41
+ permission_service.allow_action?(:comments, :index).should be_false
42
+ permission_service.allow_actions :comments, :create
43
+ permission_service.allow_action?(:comments, :index).should be_false
60
44
  end
61
45
  end
62
46
 
@@ -65,33 +49,33 @@ describe Permissioner::PermissionServiceAdditions do
65
49
  it 'should call block for given action when ressource is given' do
66
50
  block = Proc.new {}
67
51
  block.should_receive(:call)
68
- @permission_service.allow_actions :comments, :index, &block
69
- @permission_service.allow_action?(:comments, :index, 'resource')
52
+ permission_service.allow_actions :comments, :index, &block
53
+ permission_service.allow_action?(:comments, :index, 'resource')
70
54
  end
71
55
 
72
56
  it 'should not call block for given action but no ressource is given' do
73
57
  block = Proc.new {}
74
58
  block.should_receive(:call).never
75
- @permission_service.allow_actions :comments, :index, &block
76
- @permission_service.allow_action?(:comments, :index)
59
+ permission_service.allow_actions :comments, :index, &block
60
+ permission_service.allow_action?(:comments, :index)
77
61
  end
78
62
 
79
63
  it 'should return true when block returns true' do
80
64
  block = Proc.new { true }
81
- @permission_service.allow_actions :comments, :index, &block
82
- @permission_service.allow_action?(:comments, :index, 'resource').should be_true
65
+ permission_service.allow_actions :comments, :index, &block
66
+ permission_service.allow_action?(:comments, :index, 'resource').should be_true
83
67
  end
84
68
 
85
69
  it 'should return false when block returns false' do
86
70
  block = Proc.new { false }
87
- @permission_service.allow_actions :comments, :index, &block
88
- @permission_service.allow_action?(:comments, :index, 'resource').should be_false
71
+ permission_service.allow_actions :comments, :index, &block
72
+ permission_service.allow_action?(:comments, :index, 'resource').should be_false
89
73
  end
90
74
 
91
75
  it 'should return false when no ressource given' do
92
76
  block = Proc.new { true }
93
- @permission_service.allow_actions :comments, :index, &block
94
- @permission_service.allow_action?(:comments, :index).should be_false
77
+ permission_service.allow_actions :comments, :index, &block
78
+ permission_service.allow_action?(:comments, :index).should be_false
95
79
  end
96
80
  end
97
81
  end
@@ -99,47 +83,47 @@ describe Permissioner::PermissionServiceAdditions do
99
83
  describe '#passed_filters?' do
100
84
 
101
85
  it 'should return true when all blocks for given controller and action returns true' do
102
- @permission_service.add_filter(:comments, :create, &Proc.new { true })
103
- @permission_service.passed_filters?(:comments, :create, 'params').should be_true
86
+ permission_service.add_filter(:comments, :create, &Proc.new { true })
87
+ permission_service.passed_filters?(:comments, :create, 'params').should be_true
104
88
  end
105
89
 
106
90
  it 'should return true when no filters are added at all' do
107
- @permission_service.passed_filters?(:comments, :create, 'params').should be_true
91
+ permission_service.passed_filters?(:comments, :create, 'params').should be_true
108
92
  end
109
93
 
110
94
  it 'should return true when for given controller and action no filters has been added' do
111
- @permission_service.add_filter(:comments, :update, &Proc.new {})
112
- @permission_service.passed_filters?(:comments, :create, 'params').should be_true
95
+ permission_service.add_filter(:comments, :update, &Proc.new {})
96
+ permission_service.passed_filters?(:comments, :create, 'params').should be_true
113
97
  end
114
98
 
115
99
  it 'should return false when at least one block for given controller and action returns false' do
116
- @permission_service.add_filter(:comments, :create, &Proc.new { true })
117
- @permission_service.add_filter(:comments, :create, &Proc.new { false })
118
- @permission_service.add_filter(:comments, :create, &Proc.new { true })
119
- @permission_service.passed_filters?(:comments, :create, 'params').should be_false
100
+ permission_service.add_filter(:comments, :create, &Proc.new { true })
101
+ permission_service.add_filter(:comments, :create, &Proc.new { false })
102
+ permission_service.add_filter(:comments, :create, &Proc.new { true })
103
+ permission_service.passed_filters?(:comments, :create, 'params').should be_false
120
104
  end
121
105
 
122
106
  it 'should pass params to the given block' do
123
107
  params = Object.new
124
- @permission_service.add_filter(:comments, :create, &Proc.new { |p| p.object_id.should eq params.object_id })
125
- @permission_service.passed_filters?(:comments, :create, params)
108
+ permission_service.add_filter(:comments, :create, &Proc.new { |p| p.object_id.should eq params.object_id })
109
+ permission_service.passed_filters?(:comments, :create, params)
126
110
  end
127
111
  end
128
112
 
129
113
  describe '#allow_attributes?' do
130
114
 
131
115
  it 'should return true when @allow_all is true' do
132
- @permission_service.allow_all
133
- @permission_service.allow_attribute?(:comment, :user_id).should be_true
116
+ permission_service.allow_all
117
+ permission_service.allow_attribute?(:comment, :user_id).should be_true
134
118
  end
135
119
 
136
120
  it 'should return true when param is allowed' do
137
- @permission_service.allow_attributes(:comment, :user_id)
138
- @permission_service.allow_attribute?(:comment, :user_id).should be_true
121
+ permission_service.allow_attributes(:comment, :user_id)
122
+ permission_service.allow_attribute?(:comment, :user_id).should be_true
139
123
  end
140
124
 
141
125
  it 'should return false when param not allowed' do
142
- @permission_service.allow_attribute?(:comment, :user_id).should be_false
126
+ permission_service.allow_attribute?(:comment, :user_id).should be_false
143
127
  end
144
128
  end
145
129
 
@@ -148,41 +132,41 @@ describe Permissioner::PermissionServiceAdditions do
148
132
  it 'should call permit! on given params when @allow_all is true' do
149
133
  params = double('params')
150
134
  params.should_receive(:permit!)
151
- @permission_service.allow_all
152
- @permission_service.permit_params!(params)
135
+ permission_service.allow_all
136
+ permission_service.permit_params!(params)
153
137
  end
154
138
 
155
139
  it 'should call permit on allowed params' do
156
140
  params = {comment: {user_id: '12', text: 'text', date: 'date'}, post: {title: 'title', content: 'content'}}
157
- @permission_service.allow_attributes(:comment, [:user_id, :text])
158
- @permission_service.allow_attributes(:post, [:title, :content])
141
+ permission_service.allow_attributes(:comment, [:user_id, :text])
142
+ permission_service.allow_attributes(:post, [:title, :content])
159
143
  params[:comment].should_receive(:respond_to?).with(:permit).and_return(true)
160
144
  params[:comment].should_receive(:permit).with(:user_id, :text)
161
145
  params[:post].should_receive(:permit).with(:title, :content)
162
- @permission_service.permit_params!(params)
146
+ permission_service.permit_params!(params)
163
147
  end
164
148
  end
165
149
 
166
150
  describe '#allow_all' do
167
151
 
168
152
  it 'should set @allow_all to true' do
169
- @permission_service.allow_all
170
- @permission_service.instance_variable_get(:@allow_all).should be_true
153
+ permission_service.allow_all
154
+ permission_service.instance_variable_get(:@allow_all).should be_true
171
155
  end
172
156
  end
173
157
 
174
158
  describe '#allow_actions' do
175
159
 
176
160
  it 'should add controller and action to @allowed_actions' do
177
- @permission_service.allow_actions :comments, :index
178
- allowed_actions = @permission_service.instance_variable_get(:@allowed_actions)
161
+ permission_service.allow_actions :comments, :index
162
+ allowed_actions = permission_service.instance_variable_get(:@allowed_actions)
179
163
  allowed_actions.count.should eq 1
180
164
  allowed_actions[['comments', 'index']].should be_true
181
165
  end
182
166
 
183
167
  it 'should add controllers and action to @allowed_actions when multiple given' do
184
- @permission_service.allow_actions([:comments, :users], [:index, :create])
185
- allowed_actions = @permission_service.instance_variable_get(:@allowed_actions)
168
+ permission_service.allow_actions([:comments, :users], [:index, :create])
169
+ allowed_actions = permission_service.instance_variable_get(:@allowed_actions)
186
170
  allowed_actions.count.should eq 4
187
171
  allowed_actions[['comments', 'index']].should be_true
188
172
  allowed_actions[['comments', 'create']].should be_true
@@ -192,8 +176,8 @@ describe Permissioner::PermissionServiceAdditions do
192
176
 
193
177
  it 'should add controllers and action to @allowed_actions and store block when given' do
194
178
  block = Proc.new {}
195
- @permission_service.allow_actions(:comments, :edit, &block)
196
- allowed_actions = @permission_service.instance_variable_get(:@allowed_actions)
179
+ permission_service.allow_actions(:comments, :edit, &block)
180
+ allowed_actions = permission_service.instance_variable_get(:@allowed_actions)
197
181
  allowed_actions[['comments', 'edit']].object_id.should eq block.object_id
198
182
  end
199
183
  end
@@ -201,63 +185,70 @@ describe Permissioner::PermissionServiceAdditions do
201
185
  describe '#allow_attributes' do
202
186
 
203
187
  it 'should add resource and attribute to @allowed_params' do
204
- @permission_service.allow_attributes :comment, :text
205
- allowed_params = @permission_service.instance_variable_get(:@allowed_attributes)
188
+ permission_service.allow_attributes :comment, :text
189
+ allowed_params = permission_service.instance_variable_get(:@allowed_attributes)
206
190
  allowed_params.count.should eq 1
207
191
  allowed_params[:comment].should eq [:text]
208
192
  end
209
193
 
210
- it 'should add resource and attribute to @allowed_params if multiple given' do
211
- @permission_service.allow_attributes [:comment, :post], [:user, :text]
212
- allowed_params = @permission_service.instance_variable_get(:@allowed_attributes)
194
+ it 'should add resource and attributes to @allowed_params if multiple given' do
195
+ permission_service.allow_attributes [:comment, :post], [:user, :text]
196
+ allowed_params = permission_service.instance_variable_get(:@allowed_attributes)
213
197
  allowed_params.count.should eq 2
214
198
  allowed_params[:comment].should eq [:user, :text]
215
199
  allowed_params[:post].should eq [:user, :text]
216
200
  end
201
+
202
+ it 'should add resource and attributes to @allowed_params if attributes is a Hash' do
203
+ permission_service.allow_attributes :comment, {attributes: [:user, :text]}
204
+ allowed_params = permission_service.instance_variable_get(:@allowed_attributes)
205
+ allowed_params.count.should eq 1
206
+ allowed_params[:comment].should eq [{attributes: [:user, :text]}]
207
+ end
217
208
  end
218
209
 
219
210
  describe '#add_filter' do
220
211
 
221
212
  it 'should add given block to @filters addressed by controller and action' do
222
213
  block = Proc.new {}
223
- @permission_service.add_filter(:comments, :create, &block)
224
- filter_list = @permission_service.instance_variable_get(:@filters)[['comments', 'create']]
214
+ permission_service.add_filter(:comments, :create, &block)
215
+ filter_list = permission_service.instance_variable_get(:@filters)[['comments', 'create']]
225
216
  filter_list.count.should eq 1
226
217
  filter_list.should include block
227
218
  end
228
219
 
229
220
  it 'should add given block to @filters addressed by controller and action when multiple given' do
230
221
  block = Proc.new {}
231
- @permission_service.add_filter([:comments, :posts], [:create, :update], &block)
232
- @permission_service.instance_variable_get(:@filters)[['comments', 'create']].should include block
233
- @permission_service.instance_variable_get(:@filters)[['comments', 'update']].should include block
234
- @permission_service.instance_variable_get(:@filters)[['posts', 'create']].should include block
235
- @permission_service.instance_variable_get(:@filters)[['posts', 'update']].should include block
222
+ permission_service.add_filter([:comments, :posts], [:create, :update], &block)
223
+ permission_service.instance_variable_get(:@filters)[['comments', 'create']].should include block
224
+ permission_service.instance_variable_get(:@filters)[['comments', 'update']].should include block
225
+ permission_service.instance_variable_get(:@filters)[['posts', 'create']].should include block
226
+ permission_service.instance_variable_get(:@filters)[['posts', 'update']].should include block
236
227
  end
237
228
 
238
229
  it 'should add multiple blocks to @filters addressed by controller and action' do
239
230
  block_1 = Proc.new { 'block 1' }
240
231
  block_2 = Proc.new { 'block 2' }
241
- @permission_service.add_filter(:comments, :create, &block_1)
242
- @permission_service.add_filter(:comments, :create, &block_2)
243
- filter_list = @permission_service.instance_variable_get(:@filters)[['comments', 'create']]
232
+ permission_service.add_filter(:comments, :create, &block_1)
233
+ permission_service.add_filter(:comments, :create, &block_2)
234
+ filter_list = permission_service.instance_variable_get(:@filters)[['comments', 'create']]
244
235
  filter_list.count.should eq 2
245
236
  filter_list.should include block_1
246
237
  filter_list.should include block_2
247
238
  end
248
239
 
249
240
  it 'should rails exception when no block given' do
250
- expect { @permission_service.add_filter(:comments, :index) }.to raise_error('no block given')
241
+ expect { permission_service.add_filter(:comments, :index) }.to raise_error('no block given')
251
242
  end
252
243
  end
253
244
 
254
245
  describe 'configure' do
255
246
 
256
- it 'should call create on the given configurer class' do
257
- @permission_service.stub(:current_user).and_return('current_user')
258
- configurer_class = double('permission_configurer')
259
- configurer_class.should_receive(:create).with(@permission_service, 'current_user')
260
- @permission_service.configure(configurer_class)
247
+ it 'should create new instance of given configurer class' do
248
+ permission_service.stub(:current_user).and_return('current_user')
249
+ configurer_class = double('permission_configurer')
250
+ configurer_class.should_receive(:new).with(permission_service, 'current_user')
251
+ permission_service.configure(configurer_class)
252
+ end
261
253
  end
262
- end
263
254
  end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,5 @@ require 'permissioner/matchers'
5
5
 
6
6
 
7
7
  class PermissionService
8
-
9
8
  include Permissioner::PermissionServiceAdditions
10
9
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: permissioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta
5
- prerelease: 6
4
+ version: 0.0.2.beta
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Grawunder, Christian Mierich
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-09 00:00:00.000000000 Z
11
+ date: 2013-06-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activesupport
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,20 +41,18 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: guard-rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
53
- version: 2.6.0
47
+ version: 3.0.1
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
61
- version: 2.6.0
62
- description: A Ruby on Rails authorization gem
54
+ version: 3.0.1
55
+ description: A Ruby on Rails authorization gem
63
56
  email:
64
57
  - gramie.sw@gmail.com
65
58
  executables: []
@@ -89,29 +82,29 @@ files:
89
82
  - spec/permissioner/permission_configurer_spec.rb
90
83
  - spec/permissioner/permission_service_additions_spec.rb
91
84
  - spec/spec_helper.rb
92
- homepage:
93
- licenses: []
85
+ homepage: https://github.com/gramie-sw/permissioner
86
+ licenses:
87
+ - EPL 1.0
88
+ metadata: {}
94
89
  post_install_message:
95
90
  rdoc_options: []
96
91
  require_paths:
97
92
  - lib
98
93
  required_ruby_version: !ruby/object:Gem::Requirement
99
- none: false
100
94
  requirements:
101
- - - ! '>='
95
+ - - '>='
102
96
  - !ruby/object:Gem::Version
103
97
  version: '0'
104
98
  required_rubygems_version: !ruby/object:Gem::Requirement
105
- none: false
106
99
  requirements:
107
- - - ! '>'
100
+ - - '>'
108
101
  - !ruby/object:Gem::Version
109
102
  version: 1.3.1
110
103
  requirements: []
111
104
  rubyforge_project:
112
- rubygems_version: 1.8.24
105
+ rubygems_version: 2.0.3
113
106
  signing_key:
114
- specification_version: 3
107
+ specification_version: 4
115
108
  summary: An easy to use authorization solution for Ruby on Rails.
116
109
  test_files:
117
110
  - spec/permissioner/controller_additions_spec.rb