zuul 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/zuul/action_controller.rb +8 -4
- data/lib/zuul/action_controller/dsl.rb +6 -378
- data/lib/zuul/action_controller/dsl/actionable.rb +19 -0
- data/lib/zuul/action_controller/dsl/actions.rb +8 -0
- data/lib/zuul/action_controller/dsl/base.rb +254 -0
- data/lib/zuul/action_controller/dsl/permissions.rb +45 -0
- data/lib/zuul/action_controller/dsl/roles.rb +77 -0
- data/lib/zuul/active_record.rb +34 -35
- data/lib/zuul/active_record/context_accessors.rb +23 -0
- data/lib/zuul/active_record/permission.rb +2 -3
- data/lib/zuul/active_record/permission_role.rb +2 -3
- data/lib/zuul/active_record/permission_subject.rb +2 -3
- data/lib/zuul/active_record/role.rb +60 -15
- data/lib/zuul/active_record/role_subject.rb +2 -3
- data/lib/zuul/active_record/scope.rb +41 -1
- data/lib/zuul/active_record/subject.rb +213 -39
- data/lib/zuul/context.rb +15 -1
- data/lib/zuul/version.rb +1 -1
- data/spec/support/models.rb +11 -20
- data/spec/zuul/active_record/permission_role_spec.rb +1 -1
- data/spec/zuul/active_record/permission_subject_spec.rb +1 -1
- data/spec/zuul/active_record/role_spec.rb +10 -7
- data/spec/zuul/active_record/role_subject_spec.rb +1 -1
- data/spec/zuul/active_record/subject_spec.rb +14 -8
- data/spec/zuul/active_record_spec.rb +4 -4
- data/spec/zuul/context_spec.rb +350 -3
- metadata +66 -60
data/lib/zuul/context.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Zuul
|
2
2
|
class Context < Struct.new(:class_name, :id)
|
3
|
+
alias_attribute :klass, :class_name
|
3
4
|
|
4
5
|
def self.parse(*args)
|
5
6
|
if args.length >= 2
|
@@ -24,9 +25,22 @@ module Zuul
|
|
24
25
|
!class_name.nil? && id.nil?
|
25
26
|
end
|
26
27
|
|
27
|
-
def
|
28
|
+
def global?
|
28
29
|
class_name.nil? && id.nil?
|
29
30
|
end
|
31
|
+
alias_method :nil?, :global?
|
32
|
+
|
33
|
+
def ==(kontext)
|
34
|
+
class_name == kontext.class_name && id == kontext.id
|
35
|
+
end
|
36
|
+
|
37
|
+
def <=(kontext)
|
38
|
+
kontext.global? || (class_name == kontext.class_name && (kontext.id.nil? || id == kontext.id))
|
39
|
+
end
|
40
|
+
|
41
|
+
def >=(kontext)
|
42
|
+
kontext <= self
|
43
|
+
end
|
30
44
|
|
31
45
|
def type
|
32
46
|
return :nil if class_name.nil?
|
data/lib/zuul/version.rb
CHANGED
data/spec/support/models.rb
CHANGED
@@ -1,20 +1,17 @@
|
|
1
1
|
# Default Subject, Role, Permission and Context models
|
2
2
|
Object.send(:remove_const, :User) if defined?(User) # we do this to undefine the model and start fresh, without any of the authorization stuff applied by tests
|
3
3
|
class User < ActiveRecord::Base
|
4
|
-
attr_accessible :name if ::Zuul
|
5
|
-
.should_whitelist?
|
4
|
+
attr_accessible :name if ::Zuul.should_whitelist?
|
6
5
|
end
|
7
6
|
|
8
7
|
Object.send(:remove_const, :Role) if defined?(Role)
|
9
8
|
class Role < ActiveRecord::Base
|
10
|
-
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul
|
11
|
-
.should_whitelist?
|
9
|
+
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul.should_whitelist?
|
12
10
|
end
|
13
11
|
|
14
12
|
Object.send(:remove_const, :Permission) if defined?(Permission)
|
15
13
|
class Permission < ActiveRecord::Base
|
16
|
-
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul
|
17
|
-
.should_whitelist?
|
14
|
+
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul.should_whitelist?
|
18
15
|
end
|
19
16
|
|
20
17
|
Object.send(:remove_const, :Context) if defined?(Context)
|
@@ -49,12 +46,12 @@ end
|
|
49
46
|
# Additional models to test scoping
|
50
47
|
Object.send(:remove_const, :Level) if defined?(Level)
|
51
48
|
class Level < ActiveRecord::Base
|
52
|
-
attr_accessible :name, :slug, :level, :context_type, :context_id
|
49
|
+
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul.should_whitelist?
|
53
50
|
end
|
54
51
|
|
55
52
|
Object.send(:remove_const, :Ability) if defined?(Ability)
|
56
53
|
class Ability < ActiveRecord::Base
|
57
|
-
attr_accessible :name, :slug, :context_type, :context_id
|
54
|
+
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul.should_whitelist?
|
58
55
|
end
|
59
56
|
|
60
57
|
Object.send(:remove_const, :AbilityLevel) if defined?(AbilityLevel)
|
@@ -84,20 +81,17 @@ end
|
|
84
81
|
# Custom named Subject, Role, Permission and Context models
|
85
82
|
Object.send(:remove_const, :Soldier) if defined?(Soldier)
|
86
83
|
class Soldier < ActiveRecord::Base
|
87
|
-
attr_accessible :name if ::Zuul
|
88
|
-
.should_whitelist?
|
84
|
+
attr_accessible :name if ::Zuul.should_whitelist?
|
89
85
|
end
|
90
86
|
|
91
87
|
Object.send(:remove_const, :Rank) if defined?(Rank)
|
92
88
|
class Rank < ActiveRecord::Base
|
93
|
-
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul
|
94
|
-
.should_whitelist?
|
89
|
+
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul.should_whitelist?
|
95
90
|
end
|
96
91
|
|
97
92
|
Object.send(:remove_const, :Skill) if defined?(Skill)
|
98
93
|
class Skill < ActiveRecord::Base
|
99
|
-
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul
|
100
|
-
.should_whitelist?
|
94
|
+
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul.should_whitelist?
|
101
95
|
end
|
102
96
|
|
103
97
|
Object.send(:remove_const, :Weapon) if defined?(Weapon)
|
@@ -136,20 +130,17 @@ module ZuulModels
|
|
136
130
|
|
137
131
|
send(:remove_const, :User) if defined?(ZuulModels::User)
|
138
132
|
class User < ActiveRecord::Base
|
139
|
-
attr_accessible :name if ::Zuul
|
140
|
-
.should_whitelist?
|
133
|
+
attr_accessible :name if ::Zuul.should_whitelist?
|
141
134
|
end
|
142
135
|
|
143
136
|
send(:remove_const, :Role) if defined?(ZuulModels::Role)
|
144
137
|
class Role < ActiveRecord::Base
|
145
|
-
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul
|
146
|
-
.should_whitelist?
|
138
|
+
attr_accessible :name, :slug, :level, :context_type, :context_id if ::Zuul.should_whitelist?
|
147
139
|
end
|
148
140
|
|
149
141
|
send(:remove_const, :Permission) if defined?(ZuulModels::Permission)
|
150
142
|
class Permission < ActiveRecord::Base
|
151
|
-
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul
|
152
|
-
.should_whitelist?
|
143
|
+
attr_accessible :name, :slug, :context_type, :context_id if ::Zuul.should_whitelist?
|
153
144
|
end
|
154
145
|
|
155
146
|
send(:remove_const, :Context) if defined?(ZuulModels::Context)
|
@@ -77,7 +77,7 @@ describe "Zuul::ActiveRecord::PermissionRole" do
|
|
77
77
|
it "should provide the model with belongs_to associations for permissions and roles" do
|
78
78
|
PermissionRole.reflections.keys.should include(:permission)
|
79
79
|
PermissionRole.reflections.keys.should include(:role)
|
80
|
-
pu = PermissionRole.create(:permission_id => 1, :
|
80
|
+
pu = PermissionRole.create(:permission_id => 1, :role_id => 1)
|
81
81
|
pu.should respond_to(:permission)
|
82
82
|
pu.should respond_to(:role)
|
83
83
|
end
|
@@ -77,7 +77,7 @@ describe "Zuul::ActiveRecord::PermissionSubject" do
|
|
77
77
|
it "should provide the model with belongs_to associations for permissions and subjects" do
|
78
78
|
PermissionUser.reflections.keys.should include(:permission)
|
79
79
|
PermissionUser.reflections.keys.should include(:user)
|
80
|
-
pu = PermissionUser.create(:permission_id => 1, :
|
80
|
+
pu = PermissionUser.create(:permission_id => 1, :user_id => 1)
|
81
81
|
pu.should respond_to(:permission)
|
82
82
|
pu.should respond_to(:user)
|
83
83
|
end
|
@@ -338,19 +338,19 @@ describe "Zuul::ActiveRecord::Role" do
|
|
338
338
|
nil_permission_role.id.should_not be_nil
|
339
339
|
nil_permission_role.context_type.should be_nil
|
340
340
|
nil_permission_role.context_id.should be_nil
|
341
|
-
nil_permission_role.permission.should == nil_permission
|
341
|
+
nil_permission_role.permission.id.should == nil_permission.id
|
342
342
|
|
343
343
|
class_permission_role = @role.assign_permission(:edit, Context)
|
344
344
|
class_permission_role.id.should_not be_nil
|
345
345
|
class_permission_role.context_type.should == 'Context'
|
346
346
|
class_permission_role.context_id.should be_nil
|
347
|
-
class_permission_role.permission.should == class_permission
|
347
|
+
class_permission_role.permission.id.should == class_permission.id
|
348
348
|
|
349
349
|
inst_permission_role = @role.assign_permission(:edit, context)
|
350
350
|
inst_permission_role.id.should_not be_nil
|
351
351
|
inst_permission_role.context_type.should == 'Context'
|
352
352
|
inst_permission_role.context_id.should == context.id
|
353
|
-
inst_permission_role.permission.should == inst_permission
|
353
|
+
inst_permission_role.permission.id.should == inst_permission.id
|
354
354
|
end
|
355
355
|
|
356
356
|
it "should use the permission object when one is provided" do
|
@@ -393,15 +393,18 @@ describe "Zuul::ActiveRecord::Role" do
|
|
393
393
|
PermissionRole.where(:role_id => @role.id, :permission_id => permission.id).count.should == 1
|
394
394
|
end
|
395
395
|
|
396
|
-
it "should
|
396
|
+
it "should return the assigned permission if it is already assigned withinin the provided context" do
|
397
397
|
permission = Permission.create(:name => 'Edit', :slug => 'edit')
|
398
398
|
context = Context.create(:name => "Test Context")
|
399
399
|
@role.assign_permission(permission)
|
400
|
-
@role.assign_permission(permission).should
|
400
|
+
@role.assign_permission(permission).should be_an_instance_of(PermissionRole)
|
401
|
+
PermissionRole.where(:role_id => @role.id, :permission_id => permission.id, :context_type => nil, :context_id => nil).count.should == 1
|
401
402
|
@role.assign_permission(permission, Context)
|
402
|
-
@role.assign_permission(permission, Context).should
|
403
|
+
@role.assign_permission(permission, Context).should be_an_instance_of(PermissionRole)
|
404
|
+
PermissionRole.where(:role_id => @role.id, :permission_id => permission.id, :context_type => 'Context', :context_id => nil).count.should == 1
|
403
405
|
@role.assign_permission(permission, context)
|
404
|
-
@role.assign_permission(permission, context).should
|
406
|
+
@role.assign_permission(permission, context).should be_an_instance_of(PermissionRole)
|
407
|
+
PermissionRole.where(:role_id => @role.id, :permission_id => permission.id, :context_type => 'Context', :context_id => context.id).count.should == 1
|
405
408
|
end
|
406
409
|
|
407
410
|
context "when forcing context" do
|
@@ -77,7 +77,7 @@ describe "Zuul::ActiveRecord::RoleSubject" do
|
|
77
77
|
it "should provide the model with belongs_to associations for roles and subjects" do
|
78
78
|
RoleUser.reflections.keys.should include(:role)
|
79
79
|
RoleUser.reflections.keys.should include(:user)
|
80
|
-
ru = RoleUser.create(:role_id => 1, :
|
80
|
+
ru = RoleUser.create(:role_id => 1, :user_id => 1)
|
81
81
|
ru.should respond_to(:role)
|
82
82
|
ru.should respond_to(:user)
|
83
83
|
end
|
@@ -150,15 +150,18 @@ describe "Zuul::ActiveRecord::Subject" do
|
|
150
150
|
RoleUser.where(:user_id => @user.id, :role_id => role.id).count.should == 1
|
151
151
|
end
|
152
152
|
|
153
|
-
it "should
|
153
|
+
it "should return the assigned role if it is already assigned within the provided context" do
|
154
154
|
role = Role.create(:name => 'Admin', :slug => 'admin', :level => 100)
|
155
155
|
context = Context.create(:name => "Test Context")
|
156
156
|
@user.assign_role(role)
|
157
|
-
@user.assign_role(role).should
|
157
|
+
@user.assign_role(role).should be_an_instance_of(RoleUser)
|
158
|
+
RoleUser.where(:user_id => @user.id, :role_id => role.id, :context_type => nil, :context_id => nil).count.should == 1
|
158
159
|
@user.assign_role(role, Context)
|
159
|
-
@user.assign_role(role, Context).should
|
160
|
+
@user.assign_role(role, Context).should be_an_instance_of(RoleUser)
|
161
|
+
RoleUser.where(:user_id => @user.id, :role_id => role.id, :context_type => 'Context', :context_id => nil).count.should == 1
|
160
162
|
@user.assign_role(role, context)
|
161
|
-
@user.assign_role(role, context).should
|
163
|
+
@user.assign_role(role, context).should be_an_instance_of(RoleUser)
|
164
|
+
RoleUser.where(:user_id => @user.id, :role_id => role.id, :context_type => 'Context', :context_id => context.id).count.should == 1
|
162
165
|
end
|
163
166
|
|
164
167
|
context "when forcing context" do
|
@@ -847,15 +850,18 @@ describe "Zuul::ActiveRecord::Subject" do
|
|
847
850
|
PermissionUser.where(:user_id => @user.id, :permission_id => permission.id).count.should == 1
|
848
851
|
end
|
849
852
|
|
850
|
-
it "should
|
853
|
+
it "should return the assigned permission if it is already assigned within the provided context" do
|
851
854
|
permission = Permission.create(:name => 'Edit', :slug => 'edit')
|
852
855
|
context = Context.create(:name => "Test Context")
|
853
856
|
@user.assign_permission(permission)
|
854
|
-
@user.assign_permission(permission).should
|
857
|
+
@user.assign_permission(permission).should be_an_instance_of(PermissionUser)
|
858
|
+
PermissionUser.where(:user_id => @user.id, :permission_id => permission.id, :context_type => nil, :context_id => nil).count.should == 1
|
855
859
|
@user.assign_permission(permission, Context)
|
856
|
-
@user.assign_permission(permission, Context).should
|
860
|
+
@user.assign_permission(permission, Context).should be_an_instance_of(PermissionUser)
|
861
|
+
PermissionUser.where(:user_id => @user.id, :permission_id => permission.id, :context_type => 'Context', :context_id => nil).count.should == 1
|
857
862
|
@user.assign_permission(permission, context)
|
858
|
-
@user.assign_permission(permission, context).should
|
863
|
+
@user.assign_permission(permission, context).should be_an_instance_of(PermissionUser)
|
864
|
+
PermissionUser.where(:user_id => @user.id, :permission_id => permission.id, :context_type => 'Context', :context_id => context.id).count.should == 1
|
859
865
|
end
|
860
866
|
|
861
867
|
context "when forcing context" do
|
@@ -159,9 +159,9 @@ describe "Zuul::ActiveRecord" do
|
|
159
159
|
Role.ancestors.include?(Zuul::ActiveRecord::Role).should be_true
|
160
160
|
end
|
161
161
|
|
162
|
-
it "should extend the model with Zuul::ActiveRecord::
|
162
|
+
it "should extend the model with Zuul::ActiveRecord::ContextAccessors" do
|
163
163
|
Role.acts_as_authorization_role
|
164
|
-
Role.ancestors.include?(Zuul::ActiveRecord::
|
164
|
+
Role.ancestors.include?(Zuul::ActiveRecord::ContextAccessors).should be_true
|
165
165
|
end
|
166
166
|
|
167
167
|
it "should extend the model with Zuul::ActiveRecord::Role::PermissionMethods if permissions enabled" do
|
@@ -181,9 +181,9 @@ describe "Zuul::ActiveRecord" do
|
|
181
181
|
Permission.ancestors.include?(Zuul::ActiveRecord::Permission).should be_true
|
182
182
|
end
|
183
183
|
|
184
|
-
it "should extend the model with Zuul::ActiveRecord::
|
184
|
+
it "should extend the model with Zuul::ActiveRecord::ContextAccessors" do
|
185
185
|
Permission.acts_as_authorization_permission
|
186
|
-
Permission.ancestors.include?(Zuul::ActiveRecord::
|
186
|
+
Permission.ancestors.include?(Zuul::ActiveRecord::ContextAccessors).should be_true
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
data/spec/zuul/context_spec.rb
CHANGED
@@ -2,6 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "Zuul::Context" do
|
4
4
|
|
5
|
+
it "should alias :klass to :class_name" do
|
6
|
+
context = Zuul::Context.parse(Context)
|
7
|
+
expect(context.klass).to eql(context.class_name)
|
8
|
+
end
|
9
|
+
|
5
10
|
describe "parse" do
|
6
11
|
it "should allow passing nil" do
|
7
12
|
expect { Zuul::Context.parse(nil) }.to_not raise_exception
|
@@ -96,21 +101,363 @@ describe "Zuul::Context" do
|
|
96
101
|
end
|
97
102
|
end
|
98
103
|
|
99
|
-
describe "#
|
104
|
+
describe "#global?" do
|
100
105
|
it "should return true for a nil context" do
|
101
|
-
Zuul::Context.new.
|
106
|
+
Zuul::Context.new.global?.should be_true
|
102
107
|
end
|
103
108
|
|
104
109
|
it "should return false for a class context" do
|
105
|
-
Zuul::Context.new('Context', nil).
|
110
|
+
Zuul::Context.new('Context', nil).global?.should be_false
|
106
111
|
end
|
107
112
|
|
108
113
|
it "should return false for an instance context" do
|
114
|
+
obj = Context.create(:name => "Test Context")
|
115
|
+
Zuul::Context.new('Context', obj.id).global?.should be_false
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should be aliased to #nil? for deprecation and compatibility" do
|
119
|
+
Zuul::Context.new.nil?.should be_true
|
120
|
+
Zuul::Context.new('Context', nil).nil?.should be_false
|
109
121
|
obj = Context.create(:name => "Test Context")
|
110
122
|
Zuul::Context.new('Context', obj.id).nil?.should be_false
|
111
123
|
end
|
112
124
|
end
|
113
125
|
|
126
|
+
describe "#==" do
|
127
|
+
it "should return true if the classes and ids are equal" do
|
128
|
+
obj = Context.create(:name => "Test Context")
|
129
|
+
|
130
|
+
Zuul::Context.new.should == Zuul::Context.new
|
131
|
+
Zuul::Context.new('Context', nil).should == Zuul::Context.new('Context', nil)
|
132
|
+
Zuul::Context.new('Context', obj.id).should == Zuul::Context.new('Context', obj.id)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should return false if the classes are not equal" do
|
136
|
+
obj = Context.create(:name => "Test Context")
|
137
|
+
|
138
|
+
Zuul::Context.new.should_not == Zuul::Context.new('Context', nil)
|
139
|
+
Zuul::Context.new('Context', nil).should_not == Zuul::Context.new('OtherContext', nil)
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should return false if the ids are not equal" do
|
143
|
+
obj1 = Context.create(:name => "Test Context One")
|
144
|
+
obj2 = Context.create(:name => "Test Context Two")
|
145
|
+
|
146
|
+
Zuul::Context.new('Context', obj1.id).should_not == Zuul::Context.new('Context', nil)
|
147
|
+
Zuul::Context.new('Context', obj1.id).should_not == Zuul::Context.new('Context', obj2.id)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe "#<=" do
|
152
|
+
context "with a global context" do
|
153
|
+
let(:context) { Zuul::Context.new }
|
154
|
+
|
155
|
+
context "when compared a global context" do
|
156
|
+
let(:kontext) { Zuul::Context.new }
|
157
|
+
|
158
|
+
it "should return true" do
|
159
|
+
expect(context <= kontext).to be_true
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "when compared to a class context" do
|
164
|
+
let(:kontext) { Zuul::Context.new('Context') }
|
165
|
+
|
166
|
+
it "should return false" do
|
167
|
+
expect(context <= kontext).to be_false
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "when compared to an instance context" do
|
172
|
+
let(:kontext) do
|
173
|
+
obj = Context.create(:name => "Test Context")
|
174
|
+
Zuul::Context.new('Context', obj.id)
|
175
|
+
end
|
176
|
+
|
177
|
+
it "should return false" do
|
178
|
+
expect(context <= kontext).to be_false
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context "with a class context" do
|
184
|
+
let(:context) { Zuul::Context.new('Context') }
|
185
|
+
|
186
|
+
context "when compared a global context" do
|
187
|
+
let(:kontext) { Zuul::Context.new }
|
188
|
+
|
189
|
+
it "should return true" do
|
190
|
+
expect(context <= kontext).to be_true
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
context "when compared to a class context" do
|
195
|
+
context "with the same class" do
|
196
|
+
let(:kontext) { Zuul::Context.new('Context') }
|
197
|
+
|
198
|
+
it "should return true" do
|
199
|
+
expect(context <= kontext).to be_true
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context "with a different class" do
|
204
|
+
let(:kontext) { Zuul::Context.new('OtherContext') }
|
205
|
+
|
206
|
+
it "should return false" do
|
207
|
+
expect(context <= kontext).to be_false
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
context "when compared to an instance context" do
|
213
|
+
context "with the same class" do
|
214
|
+
let(:kontext) do
|
215
|
+
obj = Context.create(:name => "Test Context")
|
216
|
+
Zuul::Context.new('Context', obj.id)
|
217
|
+
end
|
218
|
+
|
219
|
+
it "should return false" do
|
220
|
+
expect(context <= kontext).to be_false
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
context "with a different class" do
|
225
|
+
let(:kontext) do
|
226
|
+
obj = ZuulModels::Context.create(:name => "Test Context")
|
227
|
+
Zuul::Context.new('OtherContext', obj.id)
|
228
|
+
end
|
229
|
+
|
230
|
+
it "should return false" do
|
231
|
+
expect(context <= kontext).to be_false
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
context "with an instance context" do
|
238
|
+
let(:obj) { Context.create(:name => "Test Context") }
|
239
|
+
let(:context) do
|
240
|
+
Zuul::Context.new('Context', obj.id)
|
241
|
+
end
|
242
|
+
|
243
|
+
context "when compared a global context" do
|
244
|
+
let(:kontext) { Zuul::Context.new }
|
245
|
+
|
246
|
+
it "should return true" do
|
247
|
+
expect(context <= kontext).to be_true
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
context "when compared to a class context" do
|
252
|
+
context "with the same class" do
|
253
|
+
let(:kontext) { Zuul::Context.new('Context') }
|
254
|
+
|
255
|
+
it "should return true" do
|
256
|
+
expect(context <= kontext).to be_true
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
context "with a different class" do
|
261
|
+
let(:kontext) { Zuul::Context.new('OtherContext') }
|
262
|
+
|
263
|
+
it "should return false" do
|
264
|
+
expect(context <= kontext).to be_false
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
context "when compared to an instance context" do
|
270
|
+
context "with the same class" do
|
271
|
+
context "with the same id" do
|
272
|
+
let(:kontext) do
|
273
|
+
Zuul::Context.new('Context', obj.id)
|
274
|
+
end
|
275
|
+
|
276
|
+
it "should return true" do
|
277
|
+
expect(context <= kontext).to be_true
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
context "with a different id" do
|
282
|
+
let(:kontext) do
|
283
|
+
other_obj = Context.create(:name => "Other Context")
|
284
|
+
Zuul::Context.new('Context', other_obj.id)
|
285
|
+
end
|
286
|
+
|
287
|
+
it "should return false" do
|
288
|
+
expect(context <= kontext).to be_false
|
289
|
+
end
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
context "with a different class" do
|
294
|
+
let(:kontext) do
|
295
|
+
Zuul::Context.new('OtherContext', obj.id)
|
296
|
+
end
|
297
|
+
|
298
|
+
it "should return false" do
|
299
|
+
expect(context <= kontext).to be_false
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
describe "#>=" do
|
307
|
+
context "with a global context" do
|
308
|
+
let(:context) { Zuul::Context.new }
|
309
|
+
|
310
|
+
context "when compared a global context" do
|
311
|
+
let(:kontext) { Zuul::Context.new }
|
312
|
+
|
313
|
+
it "should return true" do
|
314
|
+
expect(context >= kontext).to be_true
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
context "when compared to a class context" do
|
319
|
+
let(:kontext) { Zuul::Context.new('Context') }
|
320
|
+
|
321
|
+
it "should return true" do
|
322
|
+
expect(context >= kontext).to be_true
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
context "when compared to an instance context" do
|
327
|
+
let(:kontext) do
|
328
|
+
obj = Context.create(:name => "Test Context")
|
329
|
+
Zuul::Context.new('Context', obj.id)
|
330
|
+
end
|
331
|
+
|
332
|
+
it "should return true" do
|
333
|
+
expect(context >= kontext).to be_true
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
context "with a class context" do
|
339
|
+
let(:context) { Zuul::Context.new('Context') }
|
340
|
+
|
341
|
+
context "when compared a global context" do
|
342
|
+
let(:kontext) { Zuul::Context.new }
|
343
|
+
|
344
|
+
it "should return false" do
|
345
|
+
expect(context >= kontext).to be_false
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
context "when compared to a class context" do
|
350
|
+
context "with the same class" do
|
351
|
+
let(:kontext) { Zuul::Context.new('Context') }
|
352
|
+
|
353
|
+
it "should return true" do
|
354
|
+
expect(context >= kontext).to be_true
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
context "with a different class" do
|
359
|
+
let(:kontext) { Zuul::Context.new('OtherContext') }
|
360
|
+
|
361
|
+
it "should return false" do
|
362
|
+
expect(context >= kontext).to be_false
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
context "when compared to an instance context" do
|
368
|
+
context "with the same class" do
|
369
|
+
let(:kontext) do
|
370
|
+
obj = Context.create(:name => "Test Context")
|
371
|
+
Zuul::Context.new('Context', obj.id)
|
372
|
+
end
|
373
|
+
|
374
|
+
it "should return true" do
|
375
|
+
expect(context >= kontext).to be_true
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
context "with a different class" do
|
380
|
+
let(:kontext) do
|
381
|
+
obj = ZuulModels::Context.create(:name => "Test Context")
|
382
|
+
Zuul::Context.new('OtherContext', obj.id)
|
383
|
+
end
|
384
|
+
|
385
|
+
it "should return false" do
|
386
|
+
expect(context >= kontext).to be_false
|
387
|
+
end
|
388
|
+
end
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
context "with an instance context" do
|
393
|
+
let(:obj) { Context.create(:name => "Test Context") }
|
394
|
+
let(:context) do
|
395
|
+
Zuul::Context.new('Context', obj.id)
|
396
|
+
end
|
397
|
+
|
398
|
+
context "when compared a global context" do
|
399
|
+
let(:kontext) { Zuul::Context.new }
|
400
|
+
|
401
|
+
it "should return false" do
|
402
|
+
expect(context >= kontext).to be_false
|
403
|
+
end
|
404
|
+
end
|
405
|
+
|
406
|
+
context "when compared to a class context" do
|
407
|
+
context "with the same class" do
|
408
|
+
let(:kontext) { Zuul::Context.new('Context') }
|
409
|
+
|
410
|
+
it "should return false" do
|
411
|
+
expect(context >= kontext).to be_false
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
415
|
+
context "with a different class" do
|
416
|
+
let(:kontext) { Zuul::Context.new('OtherContext') }
|
417
|
+
|
418
|
+
it "should return false" do
|
419
|
+
expect(context >= kontext).to be_false
|
420
|
+
end
|
421
|
+
end
|
422
|
+
end
|
423
|
+
|
424
|
+
context "when compared to an instance context" do
|
425
|
+
context "with the same class" do
|
426
|
+
context "with the same id" do
|
427
|
+
let(:kontext) do
|
428
|
+
Zuul::Context.new('Context', obj.id)
|
429
|
+
end
|
430
|
+
|
431
|
+
it "should return true" do
|
432
|
+
expect(context >= kontext).to be_true
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
context "with a different id" do
|
437
|
+
let(:kontext) do
|
438
|
+
other_obj = Context.create(:name => "Other Context")
|
439
|
+
Zuul::Context.new('Context', other_obj.id)
|
440
|
+
end
|
441
|
+
|
442
|
+
it "should return false" do
|
443
|
+
expect(context >= kontext).to be_false
|
444
|
+
end
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
448
|
+
context "with a different class" do
|
449
|
+
let(:kontext) do
|
450
|
+
Zuul::Context.new('OtherContext', obj.id)
|
451
|
+
end
|
452
|
+
|
453
|
+
it "should return false" do
|
454
|
+
expect(context >= kontext).to be_false
|
455
|
+
end
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
114
461
|
describe "#type" do
|
115
462
|
it "should return :nil for a nil context" do
|
116
463
|
Zuul::Context.new.type.should == :nil
|