cancan-permits 0.2.5 → 0.2.7
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.
- data/.gitignore +2 -0
- data/Changelog.txt +12 -0
- data/README.markdown +2 -11
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/cancan-permits.gemspec +38 -9
- data/lib/cancan-permits/{permit → license}/base_license.rb +0 -0
- data/lib/cancan-permits/main.rb +2 -1
- data/lib/cancan-permits/permit/base_permit.rb +6 -2
- data/lib/cancan-permits/permit/util.rb +7 -0
- data/lib/cancan-permits/permits/ability.rb +6 -2
- data/spec/active_record/owner_permits_spec.rb +1 -73
- data/spec/active_record/permits_spec.rb +1 -37
- data/spec/active_record/spec_helper.rb +2 -0
- data/spec/data_mapper/owner_permits_spec.rb +1 -74
- data/spec/data_mapper/permits_spec.rb +1 -36
- data/spec/data_mapper/spec_helper.rb +2 -0
- data/spec/fixtures/permits/any_permit.rb +9 -0
- data/spec/fixtures/permits/super_admin_permit.rb +12 -0
- data/spec/fixtures/permits/system_permit.rb +9 -0
- data/spec/generic/api/basic/config.rb +15 -0
- data/spec/generic/api/basic/xgroup.rb +55 -0
- data/spec/generic/api/basic/xgroup_orm.rb +20 -0
- data/spec/generic/api/owner/config.rb +25 -0
- data/spec/generic/api/owner/xgroup.rb +59 -0
- data/spec/generic/api/owner/xgroup_orm.rb +23 -0
- data/spec/generic/owner_permits_spec.rb +1 -27
- data/spec/generic/permits_spec.rb +1 -65
- data/spec/generic/spec_helper.rb +15 -1
- data/spec/mongo_mapper/owner_permits_spec.rb +1 -74
- data/spec/mongo_mapper/permits_spec.rb +1 -35
- data/spec/mongo_mapper/spec_helper.rb +5 -4
- data/spec/mongoid/owner_permits_spec.rb +1 -73
- data/spec/mongoid/permits_spec.rb +1 -65
- data/spec/mongoid/spec_helper.rb +4 -3
- data/spec/simply_stored/CouchDB.txt +104 -0
- data/spec/simply_stored/models/all_models.rb +17 -0
- data/spec/simply_stored/owner_permits_spec.rb +2 -0
- data/spec/simply_stored/permits_spec.rb +2 -0
- data/spec/simply_stored/spec_helper.rb +53 -0
- metadata +39 -10
data/.gitignore
CHANGED
data/Changelog.txt
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
## Oct 23, 2010
|
2
|
+
|
3
|
+
The API specs are now stored in spec/generic/api. To spec that an ORM implementation of cancan-permits work, simply require the 'xgroup_orm' file from the /basic and /owner
|
4
|
+
API folders. See current specs for various ORMs for how to do this. In special cases, override the configuration methods present in fx basic/config.rb and owner/config.rb
|
5
|
+
|
6
|
+
## Oct 22, 2010
|
7
|
+
|
8
|
+
* Added support for Simply Stored ORM that can be used with Couch DB.
|
9
|
+
|
10
|
+
See specs in /simply_stored folder. It took only about 2 minutes to create this support, demonstrating how easy it now is to add support for new ORMs and data stores :)
|
11
|
+
|
12
|
+
|
data/README.markdown
CHANGED
@@ -2,18 +2,9 @@
|
|
2
2
|
|
3
3
|
Role specific Permits for use with [CanCan](http://github.com/ryanb/cancan) permission system.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Changes
|
6
6
|
|
7
|
-
|
8
|
-
This gem now includes specs that demonstrate how to configure it for use with Active Record, Data Mapper, Mongoid, Mongo Mapper
|
9
|
-
Special thanks to Sam (yoda) for the initial inspiration and work to ensure support for Mongoid :)
|
10
|
-
|
11
|
-
The built in ownership strategies are :default and :string. The default strategy can be used for generic models and Active Record, where there is no need of
|
12
|
-
type conversion. For some ORMs, like fx Mongoid, there is a need to convert the key (BSON Identifier) to a string for the "comparison" to work, hence the strategy is named :string.
|
13
|
-
|
14
|
-
The Permits generator has also been updated slightly to support this new strategy option as of version 0.2.1.
|
15
|
-
In general, the new Permits API now uses an options hash to replace the previous optional request parameter.
|
16
|
-
This design allows for better extensibility in the future if needed.
|
7
|
+
See Changelog.txt
|
17
8
|
|
18
9
|
## Install
|
19
10
|
|
data/Rakefile
CHANGED
@@ -9,11 +9,11 @@ begin
|
|
9
9
|
gem.authors = ["Kristian Mandrup"]
|
10
10
|
gem.add_development_dependency "rspec", "~> 2.0.0"
|
11
11
|
gem.add_development_dependency 'code-spec', "~> 0.2.5"
|
12
|
-
gem.add_development_dependency 'rails-app-spec', "~> 0.
|
12
|
+
gem.add_development_dependency 'rails-app-spec', "~> 0.3.0"
|
13
13
|
|
14
14
|
gem.add_dependency 'cancan', "~> 1.4.0"
|
15
15
|
gem.add_dependency 'require_all', "~> 1.2.0"
|
16
|
-
gem.add_dependency 'sugar-high', "~> 0.
|
16
|
+
gem.add_dependency 'sugar-high', "~> 0.3.0"
|
17
17
|
end
|
18
18
|
Jeweler::GemcutterTasks.new
|
19
19
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.7
|
data/cancan-permits.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cancan-permits}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-23}
|
13
13
|
s.description = %q{Role specific Permits for use with CanCan permission system}
|
14
14
|
s.email = %q{kmandrup@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
22
|
".rspec",
|
23
|
+
"Changelog.txt",
|
23
24
|
"LICENSE",
|
24
25
|
"README.markdown",
|
25
26
|
"Rakefile",
|
@@ -27,10 +28,11 @@ Gem::Specification.new do |s|
|
|
27
28
|
"cancan-permits.gemspec",
|
28
29
|
"development.sqlite3",
|
29
30
|
"lib/cancan-permits.rb",
|
31
|
+
"lib/cancan-permits/license/base_license.rb",
|
30
32
|
"lib/cancan-permits/main.rb",
|
31
33
|
"lib/cancan-permits/namespaces.rb",
|
32
|
-
"lib/cancan-permits/permit/base_license.rb",
|
33
34
|
"lib/cancan-permits/permit/base_permit.rb",
|
35
|
+
"lib/cancan-permits/permit/util.rb",
|
34
36
|
"lib/cancan-permits/permits/ability.rb",
|
35
37
|
"lib/cancan-permits/permits/configuration.rb",
|
36
38
|
"lib/cancan-permits/permits/roles.rb",
|
@@ -56,9 +58,18 @@ Gem::Specification.new do |s|
|
|
56
58
|
"spec/data_mapper/permits_spec.rb",
|
57
59
|
"spec/data_mapper/spec_helper.rb",
|
58
60
|
"spec/fixtures/permits/admin_permit.rb",
|
61
|
+
"spec/fixtures/permits/any_permit.rb",
|
59
62
|
"spec/fixtures/permits/editor_permit.rb",
|
60
63
|
"spec/fixtures/permits/guest_permit.rb",
|
64
|
+
"spec/fixtures/permits/super_admin_permit.rb",
|
65
|
+
"spec/fixtures/permits/system_permit.rb",
|
61
66
|
"spec/generators/permit_generator_spec.rb",
|
67
|
+
"spec/generic/api/basic/config.rb",
|
68
|
+
"spec/generic/api/basic/xgroup.rb",
|
69
|
+
"spec/generic/api/basic/xgroup_orm.rb",
|
70
|
+
"spec/generic/api/owner/config.rb",
|
71
|
+
"spec/generic/api/owner/xgroup.rb",
|
72
|
+
"spec/generic/api/owner/xgroup_orm.rb",
|
62
73
|
"spec/generic/models/all_models.rb",
|
63
74
|
"spec/generic/owner_permits_spec.rb",
|
64
75
|
"spec/generic/permits_spec.rb",
|
@@ -71,6 +82,11 @@ Gem::Specification.new do |s|
|
|
71
82
|
"spec/mongoid/owner_permits_spec.rb",
|
72
83
|
"spec/mongoid/permits_spec.rb",
|
73
84
|
"spec/mongoid/spec_helper.rb",
|
85
|
+
"spec/simply_stored/CouchDB.txt",
|
86
|
+
"spec/simply_stored/models/all_models.rb",
|
87
|
+
"spec/simply_stored/owner_permits_spec.rb",
|
88
|
+
"spec/simply_stored/permits_spec.rb",
|
89
|
+
"spec/simply_stored/spec_helper.rb",
|
74
90
|
"spec/spec_helper.rb"
|
75
91
|
]
|
76
92
|
s.homepage = %q{http://github.com/kristianmandrup/cancan-permits}
|
@@ -92,9 +108,18 @@ Gem::Specification.new do |s|
|
|
92
108
|
"spec/data_mapper/permits_spec.rb",
|
93
109
|
"spec/data_mapper/spec_helper.rb",
|
94
110
|
"spec/fixtures/permits/admin_permit.rb",
|
111
|
+
"spec/fixtures/permits/any_permit.rb",
|
95
112
|
"spec/fixtures/permits/editor_permit.rb",
|
96
113
|
"spec/fixtures/permits/guest_permit.rb",
|
114
|
+
"spec/fixtures/permits/super_admin_permit.rb",
|
115
|
+
"spec/fixtures/permits/system_permit.rb",
|
97
116
|
"spec/generators/permit_generator_spec.rb",
|
117
|
+
"spec/generic/api/basic/config.rb",
|
118
|
+
"spec/generic/api/basic/xgroup.rb",
|
119
|
+
"spec/generic/api/basic/xgroup_orm.rb",
|
120
|
+
"spec/generic/api/owner/config.rb",
|
121
|
+
"spec/generic/api/owner/xgroup.rb",
|
122
|
+
"spec/generic/api/owner/xgroup_orm.rb",
|
98
123
|
"spec/generic/models/all_models.rb",
|
99
124
|
"spec/generic/owner_permits_spec.rb",
|
100
125
|
"spec/generic/permits_spec.rb",
|
@@ -107,6 +132,10 @@ Gem::Specification.new do |s|
|
|
107
132
|
"spec/mongoid/owner_permits_spec.rb",
|
108
133
|
"spec/mongoid/permits_spec.rb",
|
109
134
|
"spec/mongoid/spec_helper.rb",
|
135
|
+
"spec/simply_stored/models/all_models.rb",
|
136
|
+
"spec/simply_stored/owner_permits_spec.rb",
|
137
|
+
"spec/simply_stored/permits_spec.rb",
|
138
|
+
"spec/simply_stored/spec_helper.rb",
|
110
139
|
"spec/spec_helper.rb"
|
111
140
|
]
|
112
141
|
|
@@ -117,25 +146,25 @@ Gem::Specification.new do |s|
|
|
117
146
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
118
147
|
s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
|
119
148
|
s.add_development_dependency(%q<code-spec>, ["~> 0.2.5"])
|
120
|
-
s.add_development_dependency(%q<rails-app-spec>, ["~> 0.
|
149
|
+
s.add_development_dependency(%q<rails-app-spec>, ["~> 0.3.0"])
|
121
150
|
s.add_runtime_dependency(%q<cancan>, ["~> 1.4.0"])
|
122
151
|
s.add_runtime_dependency(%q<require_all>, ["~> 1.2.0"])
|
123
|
-
s.add_runtime_dependency(%q<sugar-high>, ["~> 0.
|
152
|
+
s.add_runtime_dependency(%q<sugar-high>, ["~> 0.3.0"])
|
124
153
|
else
|
125
154
|
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
126
155
|
s.add_dependency(%q<code-spec>, ["~> 0.2.5"])
|
127
|
-
s.add_dependency(%q<rails-app-spec>, ["~> 0.
|
156
|
+
s.add_dependency(%q<rails-app-spec>, ["~> 0.3.0"])
|
128
157
|
s.add_dependency(%q<cancan>, ["~> 1.4.0"])
|
129
158
|
s.add_dependency(%q<require_all>, ["~> 1.2.0"])
|
130
|
-
s.add_dependency(%q<sugar-high>, ["~> 0.
|
159
|
+
s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
|
131
160
|
end
|
132
161
|
else
|
133
162
|
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
134
163
|
s.add_dependency(%q<code-spec>, ["~> 0.2.5"])
|
135
|
-
s.add_dependency(%q<rails-app-spec>, ["~> 0.
|
164
|
+
s.add_dependency(%q<rails-app-spec>, ["~> 0.3.0"])
|
136
165
|
s.add_dependency(%q<cancan>, ["~> 1.4.0"])
|
137
166
|
s.add_dependency(%q<require_all>, ["~> 1.2.0"])
|
138
|
-
s.add_dependency(%q<sugar-high>, ["~> 0.
|
167
|
+
s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
|
139
168
|
end
|
140
169
|
end
|
141
170
|
|
File without changes
|
data/lib/cancan-permits/main.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'cancan-permits/permit/util'
|
2
|
+
|
1
3
|
module Permit
|
2
4
|
class Base
|
3
5
|
attr_reader :ability
|
@@ -55,14 +57,16 @@ module Permit
|
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
58
|
-
protected
|
60
|
+
protected
|
61
|
+
|
62
|
+
include Permit::Util
|
59
63
|
|
60
64
|
def localhost_manager?
|
61
65
|
Permits::Configuration.localhost_manager
|
62
66
|
end
|
63
67
|
|
64
68
|
def role_match? user
|
65
|
-
user.has_role? self.class
|
69
|
+
user.has_role? permit_name(self.class)
|
66
70
|
end
|
67
71
|
|
68
72
|
def can_definitions
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'cancan-permits/permit/util'
|
2
|
+
|
1
3
|
module Permits
|
2
4
|
class Ability
|
3
5
|
include CanCan::Ability
|
@@ -30,11 +32,11 @@ module Permits
|
|
30
32
|
|
31
33
|
def initialize user, options = {}
|
32
34
|
# put ability logic here!
|
33
|
-
user ||= Guest.
|
35
|
+
user ||= Guest.create
|
34
36
|
all_permits = Permits::Ability.permits(self, options)
|
35
37
|
all_permits.each do |permit|
|
36
38
|
# get role name of permit
|
37
|
-
permit_role = permit.class
|
39
|
+
permit_role = permit_name(permit.class)
|
38
40
|
if permit_role == :system
|
39
41
|
# always execute system permit
|
40
42
|
result = permit.permit?(user, options)
|
@@ -49,6 +51,8 @@ module Permits
|
|
49
51
|
end
|
50
52
|
|
51
53
|
protected
|
54
|
+
|
55
|
+
include Permit::Util
|
52
56
|
|
53
57
|
def self.make_permit role, ability, options = {}
|
54
58
|
begin
|
@@ -1,75 +1,3 @@
|
|
1
1
|
require 'active_record/spec_helper'
|
2
|
+
require 'generic/api/owner/xgroup_orm'
|
2
3
|
|
3
|
-
Permits::Ability.orm = :active_record
|
4
|
-
|
5
|
-
describe Permits::Ability do
|
6
|
-
context "Editor user" do
|
7
|
-
context "using default :user_id relation - foreign key to User.id" do
|
8
|
-
before :each do
|
9
|
-
@editor = User.create(:name => "Kristian", :role => "editor")
|
10
|
-
@other_guy = User.create(:name => "Random dude", :role => "admin")
|
11
|
-
|
12
|
-
@ability = Permits::Ability.new(@editor)
|
13
|
-
|
14
|
-
@own_comment = Comment.create(:user_id => @editor.id)
|
15
|
-
@other_comment = Comment.create(:user_id => @other_guy.id)
|
16
|
-
# @post = Post.create(:writer => @editor.id)
|
17
|
-
# @article = Article.create(:author => @editor.id)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should be able to :read Comment he owns" do
|
21
|
-
@ability.should be_able_to(:read, Comment)
|
22
|
-
@ability.should be_able_to(:read, @own_comment)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should be able to :update Comment he owns" do
|
26
|
-
@ability.should be_able_to(:update, @own_comment)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should NOT be able to :update Comment he does NOT own" do
|
30
|
-
@ability.should_not be_able_to(:update, @other_comment)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should be able to :delete Comment he owns" do
|
34
|
-
@ability.should be_able_to(:delete, @own_comment)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should NOT be able to :update Comment he does NOT own" do
|
38
|
-
@ability.should_not be_able_to(:delete, @other_comment)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context "using custom :writer relation - foreign key to User.id" do
|
43
|
-
before :each do
|
44
|
-
@editor = User.create(:name => "Kristian", :role => "editor")
|
45
|
-
@other_guy = User.create(:name => "Random dude", :role => "admin")
|
46
|
-
|
47
|
-
@ability = Permits::Ability.new(@editor)
|
48
|
-
|
49
|
-
@own_post = Post.create(:writer => @editor.id)
|
50
|
-
@other_post = Post.create(:writer => @other_guy.id)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should be able to :read Post he owns" do
|
54
|
-
@ability.should be_able_to(:read, Post)
|
55
|
-
@ability.should be_able_to(:read, @own_post)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should be able to :update Post he owns" do
|
59
|
-
@ability.should be_able_to(:update, @own_post)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should NOT be able to :update Post he does NOT own" do
|
63
|
-
@ability.should_not be_able_to(:update, @other_post)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should be able to :delete Post he owns" do
|
67
|
-
@ability.should be_able_to(:delete, @own_post)
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should NOT be able to :update Post he does NOT own" do
|
71
|
-
@ability.should_not be_able_to(:delete, @other_post)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,38 +1,2 @@
|
|
1
1
|
require 'active_record/spec_helper'
|
2
|
-
|
3
|
-
Permits::Ability.orm = :active_record
|
4
|
-
|
5
|
-
describe Permits::Ability do
|
6
|
-
context "Guest user" do
|
7
|
-
before :each do
|
8
|
-
@guest = User.create(:name => "Kristian", :role => "guest")
|
9
|
-
|
10
|
-
@ability = Permits::Ability.new(@guest)
|
11
|
-
|
12
|
-
@comment = Comment.create(:user_id => @guest.id)
|
13
|
-
|
14
|
-
@post = Post.create(:writer => @guest.id)
|
15
|
-
|
16
|
-
@article = Article.create(:author => @guest.id)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should be able to :read Comment and Post but NOT Article" do
|
20
|
-
@ability.can?(:read, Comment).should be_true
|
21
|
-
@ability.can?(:read, @comment).should be_true
|
22
|
-
|
23
|
-
@ability.can?(:read, Post).should be_true
|
24
|
-
@ability.can?(:read, @post).should be_true
|
25
|
-
|
26
|
-
@ability.can?(:read, Article).should be_false
|
27
|
-
@ability.can?(:read, @article).should be_false
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should be not able to :update only Comment" do
|
31
|
-
@ability.can?(:update, Comment).should be_true
|
32
|
-
@ability.can?(:update, @comment).should be_true
|
33
|
-
|
34
|
-
@ability.can?(:update, Post).should be_false
|
35
|
-
@ability.can?(:update, @post).should be_false
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
2
|
+
require 'generic/api/basic/xgroup_orm'
|
@@ -1,75 +1,2 @@
|
|
1
1
|
require 'data_mapper/spec_helper'
|
2
|
-
|
3
|
-
Permits::Ability.orm = :data_mapper
|
4
|
-
|
5
|
-
describe Permits::Ability do
|
6
|
-
context "Editor user" do
|
7
|
-
context "using default :user_id relation - foreign key to User.id" do
|
8
|
-
before :each do
|
9
|
-
@editor = User.create(:name => "Kristian", :role => "editor")
|
10
|
-
@other_guy = User.create(:name => "Random dude", :role => "admin")
|
11
|
-
|
12
|
-
@ability = Permits::Ability.new(@editor)
|
13
|
-
|
14
|
-
@own_comment = Comment.create(:user_id => @editor.id)
|
15
|
-
@other_comment = Comment.create(:user_id => @other_guy.id)
|
16
|
-
# @post = Post.create(:writer => @editor.id)
|
17
|
-
# @article = Article.create(:author => @editor.id)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should be able to :read Comment he owns" do
|
21
|
-
@ability.should be_able_to(:read, Comment)
|
22
|
-
@ability.should be_able_to(:read, @own_comment)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should be able to :update Comment he owns" do
|
26
|
-
@ability.should be_able_to(:update, @own_comment)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should NOT be able to :update Comment he does NOT own" do
|
30
|
-
@ability.should_not be_able_to(:update, @other_comment)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should be able to :delete Comment he owns" do
|
34
|
-
@ability.should be_able_to(:delete, @own_comment)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should NOT be able to :update Comment he does NOT own" do
|
38
|
-
@ability.should_not be_able_to(:delete, @other_comment)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context "using custom :writer relation - foreign key to User.id" do
|
43
|
-
before :each do
|
44
|
-
@editor = User.create(:name => "Kristian", :role => "editor")
|
45
|
-
@other_guy = User.create(:name => "Random dude", :role => "admin")
|
46
|
-
|
47
|
-
@ability = Permits::Ability.new(@editor, :strategy => :string)
|
48
|
-
|
49
|
-
@own_post = Post.create(:writer => @editor.id)
|
50
|
-
@other_post = Post.create(:writer => @other_guy.id)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should be able to :read Post he owns" do
|
54
|
-
@ability.should be_able_to(:read, Post)
|
55
|
-
@ability.should be_able_to(:read, @own_post)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should be able to :update Post he owns" do
|
59
|
-
@ability.should be_able_to(:update, @own_post)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should NOT be able to :update Post he does NOT own" do
|
63
|
-
@ability.should_not be_able_to(:update, @other_post)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should be able to :delete Post he owns" do
|
67
|
-
@ability.should be_able_to(:delete, @own_post)
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should NOT be able to :update Post he does NOT own" do
|
71
|
-
@ability.should_not be_able_to(:delete, @other_post)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
2
|
+
require 'generic/api/owner/xgroup_orm'
|