tuersteher 0.6.7 → 0.7.0

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: 6348fe3992d663e9b6a01a8271c2773449dad6ab
4
+ data.tar.gz: e7fe4ecfcb3d72f9b5edacdb712bc7decebb3b08
5
+ SHA512:
6
+ metadata.gz: 97f4fe7a0d7927a4a34d9be4c2a420c92edf641d6eb8dbd04efb45d72e608620711fba2e52c57b6c10793a44ccf0c6bcc3b2b92bf5236a8ad8071cb924f89aee
7
+ data.tar.gz: 2af00ecf5eefe5debce58d7370190a48c49236324ac961da9240a76e9a3f9261c0fc394f5c8d97fda3e4423d136ddd086d27c235f9fd1c88fc5a1cc5c267a35e
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in multi-solr.gemspec
3
+ # Specify your gem's dependencies in tuersteher.gemspec
4
4
  gemspec
data/Rakefile CHANGED
@@ -1 +1,2 @@
1
+ # Rakefile
1
2
  require "bundler/gem_tasks"
data/lib/tuersteher.rb CHANGED
@@ -460,6 +460,26 @@ module Tuersteher
460
460
  end
461
461
  end
462
462
 
463
+ class RightSpecification
464
+ attr_reader :rights, :negation
465
+
466
+ def initialize right, negation
467
+ @negation = negation
468
+ @rights = [right]
469
+ end
470
+
471
+ def grant? path_or_model, method, login_ctx
472
+ return false if login_ctx.nil?
473
+ rc =@rights.any?{|right| login_ctx.has_right?(right) }
474
+ rc = !rc if @negation
475
+ rc
476
+ end
477
+
478
+ def to_s
479
+ "#{@negation && 'not.'}rights(#{@right.join(',')})"
480
+ end
481
+ end
482
+
463
483
  class MethodSpecification
464
484
  def initialize method, negation
465
485
  @method, @negation = method, negation
@@ -527,6 +547,24 @@ module Tuersteher
527
547
  def initialize
528
548
  @rule_spezifications = []
529
549
  @last_role_specification
550
+ @last_right_specification
551
+ end
552
+
553
+ # add right
554
+ def right(right_name)
555
+ return self if right_name==:all # :all is only syntax sugar
556
+ raise "wrong right '#{right_name}'! Must be a symbol " unless right_name.is_a?(Symbol)
557
+ # rights are OR-linked (per default)
558
+ # => add the right to RightSpecification, create only new RightSpecification if not exist
559
+ if @last_right_specification
560
+ raise("Mixin of right and not.right are yet not implemented!") if @negation != @last_right_specification.negation
561
+ @last_right_specification.rights << right_name
562
+ else
563
+ @last_right_specification = RightSpecification.new(right_name, @negation)
564
+ @rule_spezifications << @last_right_specification
565
+ end
566
+ @negation = false if @negation
567
+ self
530
568
  end
531
569
 
532
570
  # add role
@@ -17,6 +17,7 @@
17
17
  path('/').grant.method(:get)
18
18
  path(:all).grant.role(:ADMIN)
19
19
  path('/user/lock').deny.role(:USER).role(:APPROVER)
20
+ path('/statistic').grant.right(:STATISTIK_SHOW)
20
21
  path('/special').grant.extension(:special?, :area1)
21
22
  path('/pictures') do
22
23
  grant.role(:admin)
@@ -31,11 +31,11 @@ end
31
31
  end
32
32
 
33
33
  specify do
34
- @path_rules.should have(5).items
34
+ expect(@path_rules.size).to eq(5)
35
35
  end
36
36
 
37
37
  specify do
38
- @model_rules.should have(4).items
38
+ expect(@model_rules.size).to eq(4)
39
39
  end
40
40
 
41
41
  specify do
@@ -13,7 +13,7 @@ module Tuersteher
13
13
  PathAccessRule.new('/status').method(:get).role(:system)
14
14
  ]
15
15
  AccessRulesStorage.instance.stub(:path_rules).and_return(rules)
16
- @user = stub('user')
16
+ @user = double('user')
17
17
  end
18
18
 
19
19
 
@@ -23,15 +23,15 @@ module Tuersteher
23
23
  end
24
24
 
25
25
  it "should be true for this paths" do
26
- AccessRules.path_access?(@user, '/', :get).should be_true
27
- AccessRules.path_access?(@user, '/', :post).should be_true
28
- AccessRules.path_access?(@user, '/images', :get).should be_true
26
+ AccessRules.path_access?(@user, '/', :get).should be_truthy
27
+ AccessRules.path_access?(@user, '/', :post).should be_truthy
28
+ AccessRules.path_access?(@user, '/images', :get).should be_truthy
29
29
  end
30
30
 
31
31
  it "should not be true for this paths" do
32
- AccessRules.path_access?(@user, '/admin', :get).should_not be_true
33
- AccessRules.path_access?(@user, '/images', :post).should_not be_true
34
- AccessRules.path_access?(@user, '/status', :get).should_not be_true
32
+ AccessRules.path_access?(@user, '/admin', :get).should_not be_truthy
33
+ AccessRules.path_access?(@user, '/images', :post).should_not be_truthy
34
+ AccessRules.path_access?(@user, '/status', :get).should_not be_truthy
35
35
  end
36
36
  end
37
37
 
@@ -42,15 +42,15 @@ module Tuersteher
42
42
  end
43
43
 
44
44
  it "should be true for this paths" do
45
- AccessRules.path_access?(@user, '/', :get).should be_true
46
- AccessRules.path_access?(@user, '/admin', :post).should be_true
47
- AccessRules.path_access?(@user, '/images', :get).should be_true
45
+ AccessRules.path_access?(@user, '/', :get).should be_truthy
46
+ AccessRules.path_access?(@user, '/admin', :post).should be_truthy
47
+ AccessRules.path_access?(@user, '/images', :get).should be_truthy
48
48
  end
49
49
 
50
50
  it "should not be true for this paths" do
51
- AccessRules.path_access?(@user, '/xyz', :get).should_not be_true
52
- AccessRules.path_access?(@user, '/images', :post).should_not be_true
53
- AccessRules.path_access?(@user, '/status', :get).should_not be_true
51
+ AccessRules.path_access?(@user, '/xyz', :get).should_not be_truthy
52
+ AccessRules.path_access?(@user, '/images', :post).should_not be_truthy
53
+ AccessRules.path_access?(@user, '/status', :get).should_not be_truthy
54
54
  end
55
55
  end
56
56
 
@@ -61,25 +61,25 @@ module Tuersteher
61
61
  end
62
62
 
63
63
  it "should be true for this paths" do
64
- AccessRules.path_access?(@user, '/', :get).should be_true
65
- AccessRules.path_access?(@user, '/status', :get).should be_true
64
+ AccessRules.path_access?(@user, '/', :get).should be_truthy
65
+ AccessRules.path_access?(@user, '/status', :get).should be_truthy
66
66
  end
67
67
 
68
68
  it "should not be true for this paths" do
69
- AccessRules.path_access?(@user, '/xyz', :get).should_not be_true
70
- AccessRules.path_access?(@user, '/admin', :post).should_not be_true
69
+ AccessRules.path_access?(@user, '/xyz', :get).should_not be_truthy
70
+ AccessRules.path_access?(@user, '/admin', :post).should_not be_truthy
71
71
  end
72
72
  end
73
73
 
74
74
 
75
75
  context "without user" do
76
76
  it "should be true for this paths" do
77
- AccessRules.path_access?(nil, '/', :get).should be_true
77
+ AccessRules.path_access?(nil, '/', :get).should be_truthy
78
78
  end
79
79
 
80
80
  it "should not be true for this paths" do
81
- AccessRules.path_access?(nil, '/xyz', :get).should_not be_true
82
- AccessRules.path_access?(nil, '/admin', :post).should_not be_true
81
+ AccessRules.path_access?(nil, '/xyz', :get).should_not be_truthy
82
+ AccessRules.path_access?(nil, '/admin', :post).should_not be_truthy
83
83
  end
84
84
  end
85
85
  end
@@ -100,7 +100,7 @@ module Tuersteher
100
100
  ModelAccessRule.new(SampleModel2).grant.method(:all).role(:admin),
101
101
  ]
102
102
  AccessRulesStorage.instance.stub(:model_rules).and_return(rules)
103
- @user = stub('user')
103
+ @user = double('user')
104
104
  @model1 = SampleModel1.new
105
105
  @model2 = SampleModel2.new
106
106
  @model2.stub(:owner?).and_return(false)
@@ -113,15 +113,15 @@ module Tuersteher
113
113
  end
114
114
 
115
115
  it "should be true for this" do
116
- AccessRules.model_access?(@user, @model1, :xyz).should be_true
116
+ AccessRules.model_access?(@user, @model1, :xyz).should be_truthy
117
117
  @model2.stub(:owner?).and_return true
118
- AccessRules.model_access?(@user, @model2, :read).should be_true
119
- AccessRules.model_access?(@user, @model2, :update).should be_true
118
+ AccessRules.model_access?(@user, @model2, :read).should be_truthy
119
+ AccessRules.model_access?(@user, @model2, :update).should be_truthy
120
120
  end
121
121
 
122
122
  it "should not be true for this" do
123
- AccessRules.model_access?(@user, @model2, :update).should_not be_true
124
- AccessRules.model_access?(@user, @model2, :delete).should_not be_true
123
+ AccessRules.model_access?(@user, @model2, :update).should_not be_truthy
124
+ AccessRules.model_access?(@user, @model2, :delete).should_not be_truthy
125
125
  end
126
126
  end
127
127
 
@@ -132,14 +132,14 @@ module Tuersteher
132
132
  end
133
133
 
134
134
  it "should be true for this" do
135
- AccessRules.model_access?(@user, @model1, :xyz).should be_true
136
- AccessRules.model_access?(@user, @model2, :read).should be_true
137
- AccessRules.model_access?(@user, @model2, :update).should be_true
138
- AccessRules.model_access?(@user, @model2, :delete).should be_true
135
+ AccessRules.model_access?(@user, @model1, :xyz).should be_truthy
136
+ AccessRules.model_access?(@user, @model2, :read).should be_truthy
137
+ AccessRules.model_access?(@user, @model2, :update).should be_truthy
138
+ AccessRules.model_access?(@user, @model2, :delete).should be_truthy
139
139
  end
140
140
 
141
141
  it "should not be true for this" do
142
- AccessRules.model_access?(@user, @model2, :create).should_not be_true
142
+ AccessRules.model_access?(@user, @model2, :create).should_not be_truthy
143
143
  end
144
144
  end
145
145
 
@@ -150,24 +150,24 @@ module Tuersteher
150
150
  end
151
151
 
152
152
  it "should be true for this" do
153
- AccessRules.model_access?(@user, "test", :xyz).should be_true
154
- AccessRules.model_access?(@user, @model1, :xyz).should be_true
155
- AccessRules.model_access?(@user, @model2, :read).should be_true
156
- AccessRules.model_access?(@user, @model2, :update).should be_true
157
- AccessRules.model_access?(@user, @model2, :delete).should be_true
158
- AccessRules.model_access?(@user, @model2, :create).should be_true
153
+ AccessRules.model_access?(@user, "test", :xyz).should be_truthy
154
+ AccessRules.model_access?(@user, @model1, :xyz).should be_truthy
155
+ AccessRules.model_access?(@user, @model2, :read).should be_truthy
156
+ AccessRules.model_access?(@user, @model2, :update).should be_truthy
157
+ AccessRules.model_access?(@user, @model2, :delete).should be_truthy
158
+ AccessRules.model_access?(@user, @model2, :create).should be_truthy
159
159
  end
160
160
  end
161
161
 
162
162
 
163
163
  context "without user" do
164
164
  it "should be true for this models" do
165
- AccessRules.model_access?(nil, @model1, :xyz).should be_true
166
- AccessRules.model_access?(nil, @model2, :read).should be_true
165
+ AccessRules.model_access?(nil, @model1, :xyz).should be_truthy
166
+ AccessRules.model_access?(nil, @model2, :read).should be_truthy
167
167
  end
168
168
 
169
169
  it "should not be true for this models" do
170
- AccessRules.model_access?(nil, @model2, :update).should_not be_true
170
+ AccessRules.model_access?(nil, @model2, :update).should_not be_truthy
171
171
  end
172
172
  end
173
173
  end # of context 'model_access?'
@@ -186,7 +186,7 @@ module Tuersteher
186
186
  ModelAccessRule.new(SampleModel).method(:update).role(:user).extension(:owner?),
187
187
  ]
188
188
  AccessRulesStorage.instance.stub(:model_rules).and_return(rules)
189
- @user = stub('user')
189
+ @user = double('user')
190
190
  @model1 = SampleModel.new
191
191
  @model2 = SampleModel.new
192
192
  @model3 = SampleModel.new
@@ -10,12 +10,12 @@ module Tuersteher
10
10
  end
11
11
 
12
12
  it "should fired without user" do
13
- @rule.fired?("test", :read, nil).should be_true
13
+ @rule.fired?("test", :read, nil).should be_truthy
14
14
  end
15
15
 
16
16
  it "should fired with user" do
17
- @user = stub('user')
18
- @rule.fired?("test", :read, @user).should be_true
17
+ @user = double('user')
18
+ @rule.fired?("test", :read, @user).should be_truthy
19
19
  end
20
20
  end
21
21
 
@@ -28,67 +28,67 @@ module Tuersteher
28
28
 
29
29
  context "for User with role :admin" do
30
30
  before do
31
- @user = stub('user')
31
+ @user = double('user')
32
32
  @user.stub(:has_role?) { |role| role==:admin }
33
33
  end
34
34
 
35
35
  it "should be fired for String-Object and access-type :read" do
36
- @rule.fired?("test", :read, @user).should be_true
36
+ @rule.fired?("test", :read, @user).should be_truthy
37
37
  end
38
38
 
39
39
  it "should not be fired for Non-String-Object" do
40
- @rule.fired?(12345, :read, @user).should_not be_true
40
+ @rule.fired?(12345, :read, @user).should_not be_truthy
41
41
  end
42
42
 
43
43
  it "should not be fired for String-Object and other access-method as :read" do
44
- @rule.fired?("test", :delete, @user).should_not be_true
44
+ @rule.fired?("test", :delete, @user).should_not be_truthy
45
45
  end
46
46
  end
47
47
 
48
48
  context "for User without role :admin" do
49
49
  before do
50
- @user = stub('user')
50
+ @user = double('user')
51
51
  @user.stub(:has_role?).and_return(false)
52
52
  end
53
53
 
54
54
  specify do
55
- @rule.fired?("test", :read, @user).should_not be_true
55
+ @rule.fired?("test", :read, @user).should_not be_truthy
56
56
  end
57
57
  end
58
58
 
59
59
  context "for :all Model-Instances" do
60
60
  before do
61
61
  @rule_all = ModelAccessRule.new(:all).grant.role(:admin)
62
- @user = stub('user')
62
+ @user = double('user')
63
63
  end
64
64
 
65
65
  it "should fired for user with role :admin" do
66
66
  @user.stub(:has_role?) { |role| role==:admin }
67
- @rule_all.fired?("test", :xyz, @user).should be_true
67
+ @rule_all.fired?("test", :xyz, @user).should be_truthy
68
68
  end
69
69
 
70
70
  it "should fired for user with role :admin" do
71
71
  @user.stub(:has_role?).and_return(false)
72
- @rule_all.fired?("test", :xyz, @user).should_not be_true
72
+ @rule_all.fired?("test", :xyz, @user).should_not be_truthy
73
73
  end
74
74
  end
75
75
  end # of context "grant with roles"
76
76
 
77
77
 
78
78
  context "deny with not.role" do
79
- before(:all) do
79
+ before do
80
80
  @rule = ModelAccessRule.new(String).deny.method(:append).not.role(:admin)
81
- @user = stub('user')
81
+ @user = double('user')
82
82
  end
83
83
 
84
84
  it "should not fired for user with role :admin" do
85
85
  @user.stub(:has_role?){|role| role==:admin}
86
- @rule.fired?("/admin", :append, @user).should_not be_true
86
+ @rule.fired?("/admin", :append, @user).should_not be_truthy
87
87
  end
88
88
 
89
89
  it "should fired for user with role :user" do
90
90
  @user.stub(:has_role?){|role| role==:user}
91
- @rule.fired?("/admin", :append, @user).should be_true
91
+ @rule.fired?("/admin", :append, @user).should be_truthy
92
92
  end
93
93
  end # of context "deny with not.role"
94
94
 
@@ -16,7 +16,7 @@ module Tuersteher
16
16
  before do
17
17
  rules = [ModelAccessRule.new(SampleModel).grant.method(:deactived).role(:admin)]
18
18
  AccessRulesStorage.instance.stub(:model_rules).and_return(rules)
19
- @user = stub('user')
19
+ @user = double('user')
20
20
  Thread.current[:user] = @user
21
21
  end
22
22
 
@@ -12,183 +12,206 @@ module Tuersteher
12
12
 
13
13
  context "for User with role :admin" do
14
14
  before do
15
- @user = stub('user')
15
+ @user = double('user')
16
16
  @user.stub(:has_role?){|role| role==:admin}
17
17
  end
18
18
 
19
19
  it "should be fired for path='/admin/xyz' and method :get" do
20
- @rule.fired?("/admin/xyz", :get, @user).should be_true
20
+ @rule.fired?("/admin/xyz", :get, @user).should be_truthy
21
21
  end
22
22
 
23
23
  it "should not be fired for other path" do
24
- @rule.fired?('/todos/admin', :get, @user).should_not be_true
24
+ @rule.fired?('/todos/admin', :get, @user).should_not be_truthy
25
25
  end
26
26
 
27
27
  it "should not be fired for other method as :get" do
28
- @rule.fired?("/admin/xyz", :post, @user).should_not be_true
28
+ @rule.fired?("/admin/xyz", :post, @user).should_not be_truthy
29
29
  end
30
30
  end
31
31
 
32
32
 
33
33
  context "for User without role :admin" do
34
34
  before do
35
- @user = stub('user')
35
+ @user = double('user')
36
36
  @user.stub(:has_role?).and_return(false)
37
37
  end
38
38
 
39
39
  it "should not be fired for correct path and method" do
40
- @rule.fired?("/admin/xyz", :get, @user).should_not be_true
40
+ @rule.fired?("/admin/xyz", :get, @user).should_not be_truthy
41
41
  end
42
42
  end
43
43
 
44
44
 
45
45
  context "Rule with :all as Path-Matcher" do
46
- before(:all) do
46
+ before do
47
47
  @rule = PathAccessRule.new(:all).method(:get).role(:sysadmin).role(:admin)
48
- @user = stub('user')
48
+ @user = double('user')
49
49
  @user.stub(:has_role?).and_return(true)
50
50
  end
51
51
 
52
52
  it "should fired for several paths" do
53
- @rule.fired?("/admin/xyz", :get, @user).should be_true
54
- @rule.fired?("/xyz", :get, @user).should be_true
55
- @rule.fired?("/", :get, @user).should be_true
53
+ @rule.fired?("/admin/xyz", :get, @user).should be_truthy
54
+ @rule.fired?("/xyz", :get, @user).should be_truthy
55
+ @rule.fired?("/", :get, @user).should be_truthy
56
56
  end
57
57
 
58
58
  it "should not be fired with other method" do
59
- @rule.fired?("/admin/xyz", :post, @user).should_not be_true
59
+ @rule.fired?("/admin/xyz", :post, @user).should_not be_truthy
60
60
  end
61
61
  end
62
62
 
63
63
 
64
64
  context "Rule with no Methode spezifed => all methods allowed" do
65
- before(:all) do
65
+ before do
66
66
  @rule = PathAccessRule.new('/admin').role(:sysadmin).role(:admin)
67
- @user = stub('user')
67
+ @user = double('user')
68
68
  @user.stub(:has_role?).and_return(true)
69
69
  end
70
70
 
71
71
  it "should fired for several methods" do
72
- @rule.fired?("/admin/xyz", :get, @user).should be_true
73
- @rule.fired?("/admin/xyz", :post, @user).should be_true
74
- @rule.fired?("/admin/xyz", :put, @user).should be_true
75
- @rule.fired?("/admin/xyz", :delete, @user).should be_true
72
+ @rule.fired?("/admin/xyz", :get, @user).should be_truthy
73
+ @rule.fired?("/admin/xyz", :post, @user).should be_truthy
74
+ @rule.fired?("/admin/xyz", :put, @user).should be_truthy
75
+ @rule.fired?("/admin/xyz", :delete, @user).should be_truthy
76
76
  end
77
77
 
78
78
  it "should not be fired with other path" do
79
- @rule.fired?("/xyz", :post, @user).should_not be_true
79
+ @rule.fired?("/xyz", :post, @user).should_not be_truthy
80
80
  end
81
81
  end
82
82
 
83
83
 
84
- context "Rule with no role spezifed => now role needed" do
85
- before(:all) do
84
+ context "Rule with no role spezifed => no role needed" do
85
+ before do
86
86
  @rule = PathAccessRule.new('/public').method(:get)
87
- @user = stub('user')
87
+ @user = double('user')
88
88
  @user.stub(:has_role?).and_return(false)
89
89
  end
90
90
 
91
91
  it "should fired for user with no roles" do
92
- @rule.fired?("/public/xyz", :get, @user).should be_true
92
+ @rule.fired?("/public/xyz", :get, @user).should be_truthy
93
93
  end
94
94
 
95
95
  it "should fired for non user" do
96
- @rule.fired?("/public/xyz", :get, nil).should be_true
96
+ @rule.fired?("/public/xyz", :get, nil).should be_truthy
97
97
  end
98
98
 
99
99
  it "should not be fired with other path" do
100
- @rule.fired?("/xyz", :get, @user).should_not be_true
100
+ @rule.fired?("/xyz", :get, @user).should_not be_truthy
101
101
  end
102
102
  end
103
103
 
104
104
 
105
105
  context "Rule with extension" do
106
- before(:all) do
106
+ before do
107
107
  @rule = PathAccessRule.new('/admin').method(:get).extension(:modul_function?, :testvalue)
108
108
  @rule2 = PathAccessRule.new('/admin').method(:get).extension(:modul_function2?)
109
- @user = stub('user')
109
+ @user = double('user')
110
110
  @user.stub(:has_role?).and_return(false)
111
111
  end
112
112
 
113
113
  it "should not be fired with user have not the check_extension" do
114
- @rule.fired?("/admin", :get, @user).should_not be_true
114
+ @rule.fired?("/admin", :get, @user).should_not be_truthy
115
115
  end
116
116
 
117
117
  it "should fired for user with true for check-extension" do
118
118
  @user.should_receive(:modul_function?).with(:testvalue).and_return(true)
119
- @rule.fired?("/admin/xyz", :get, @user).should be_true
119
+ @rule.fired?("/admin/xyz", :get, @user).should be_truthy
120
120
  end
121
121
 
122
122
  it "should not be fired for user with false for check-extension" do
123
123
  @user.should_receive(:modul_function?).with(:testvalue).and_return(false)
124
- @rule.fired?("/admin/xyz", :get, @user).should_not be_true
124
+ @rule.fired?("/admin/xyz", :get, @user).should_not be_truthy
125
125
  end
126
126
 
127
127
  it "should fired for rule2 and user with true for check-extension" do
128
128
  @user.should_receive(:modul_function2?).and_return(true)
129
- @rule2.fired?("/admin/xyz", :get, @user).should be_true
129
+ @rule2.fired?("/admin/xyz", :get, @user).should be_truthy
130
+ end
131
+ end
132
+
133
+ context "Rule with right" do
134
+ before do
135
+ @rule = PathAccessRule.new('/admin').right(:test1).right(:test2)
136
+ @user = double('user')
137
+ end
138
+
139
+ it "should not be fired with user have not the right" do
140
+ @user.stub(:has_right?).and_return(false)
141
+ @rule.fired?("/admin", :get, @user).should be_falsey
142
+ end
143
+
144
+ it "should fired for user with the right :test1" do
145
+ @user.should_receive(:has_right?).with(:test1).and_return(true)
146
+ @rule.fired?("/admin", :get, @user).should be_truthy
147
+ end
148
+
149
+ it "should fired for user with the right :test2" do
150
+ @user.should_receive(:has_right?).with(:test1).and_return(false)
151
+ @user.should_receive(:has_right?).with(:test2).and_return(true)
152
+ @rule.fired?("/admin", :get, @user).should be_truthy
130
153
  end
131
154
  end
132
155
  end # of context "grant" do
133
156
 
134
157
 
135
158
  context "deny" do
136
- before(:all) do
159
+ before do
137
160
  @rule = PathAccessRule.new('/admin').deny.role(:user)
138
- @user = stub('user')
161
+ @user = double('user')
139
162
  end
140
163
 
141
164
  it "should fired for user with role :user" do
142
165
  @user.stub(:has_role?){|role| role==:user}
143
- @rule.fired?("/admin", :get, @user).should be_true
166
+ @rule.fired?("/admin", :get, @user).should be_truthy
144
167
  end
145
168
 
146
169
  it "should not fired for user with role :admin" do
147
170
  @user.stub(:has_role?){|role| role==:admin}
148
- @rule.fired?("/admin", :get, @user).should_not be_true
171
+ @rule.fired?("/admin", :get, @user).should_not be_truthy
149
172
  end
150
173
  end # of context "deny" do
151
174
 
152
175
 
153
176
  context "with not" do
154
177
  context "as prefix for role" do
155
- before(:all) do
178
+ before do
156
179
  @rule = PathAccessRule.new('/admin').deny.not.role(:admin)
157
- @user = stub('user')
180
+ @user = double('user')
158
181
  end
159
182
 
160
183
  it "should not fired for user with role :admin" do
161
184
  @user.stub(:has_role?){|role| role==:admin}
162
- @rule.fired?("/admin", :get, @user).should_not be_true
185
+ @rule.fired?("/admin", :get, @user).should_not be_truthy
163
186
  end
164
187
 
165
188
  it "should fired for user with role :user" do
166
189
  @user.stub(:has_role?){|role| role==:user}
167
- @rule.fired?("/admin", :get, @user).should be_true
190
+ @rule.fired?("/admin", :get, @user).should be_truthy
168
191
  end
169
192
  end
170
193
 
171
194
  context "as prefix for extension" do
172
- before(:all) do
195
+ before do
173
196
  @rule = PathAccessRule.new('/admin').grant.role(:admin).not.extension(:login_ctx_method)
174
- @user = stub('user')
197
+ @user = double('user')
175
198
  end
176
199
 
177
200
  it "should fired for user with role :admin and false for extension" do
178
201
  @user.stub(:has_role?){|role| role==:admin}
179
202
  @user.should_receive(:login_ctx_method).and_return(false)
180
- @rule.fired?("/admin", :get, @user).should be_true
203
+ @rule.fired?("/admin", :get, @user).should be_truthy
181
204
  end
182
205
 
183
206
  it "should not fired for user with role :admin and true for extension" do
184
207
  @user.stub(:has_role?){|role| role==:admin}
185
208
  @user.should_receive(:login_ctx_method).and_return(true)
186
- @rule.fired?("/admin", :get, @user).should_not be_true
209
+ @rule.fired?("/admin", :get, @user).should_not be_truthy
187
210
  end
188
211
 
189
212
  it "should not fired for user with role :user" do
190
213
  @user.stub(:has_role?){|role| role==:user}
191
- @rule.fired?("/admin", :get, @user).should be_false
214
+ @rule.fired?("/admin", :get, @user).should be_falsey
192
215
  end
193
216
 
194
217
  end
@@ -196,21 +219,21 @@ module Tuersteher
196
219
 
197
220
 
198
221
  context "add multiple roles" do
199
- before(:all) do
222
+ before do
200
223
  @rule = PathAccessRule.new('/admin').roles(:admin1, :admin2).roles([:s1, :s2])
201
- @user = stub('user')
224
+ @user = double('user')
202
225
  end
203
226
 
204
227
  it "should fired for user with role which specified in the rule" do
205
228
  [:admin1, :admin2, :s1, :s2].each do |role_name|
206
229
  @user.stub(:has_role?){|role| role==role_name}
207
- @rule.fired?("/admin", :get, @user).should be_true
230
+ @rule.fired?("/admin", :get, @user).should be_truthy
208
231
  end
209
232
  end
210
233
 
211
234
  it "should not fired for user with role :user" do
212
235
  @user.stub(:has_role?){|role| role==:user}
213
- @rule.fired?("/admin", :get, @user).should_not be_true
236
+ @rule.fired?("/admin", :get, @user).should_not be_truthy
214
237
  end
215
238
  end
216
239
  end
data/tuersteher.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'tuersteher'
6
- s.version = '0.6.7'
6
+ s.version = '0.7.0'
7
7
  s.authors = ["Bernd Ledig"]
8
8
  s.email = ["bernd@ledig.info"]
9
9
  s.homepage = "http://github.com/bledig/tuersteher"
@@ -20,12 +20,10 @@ Gem::Specification.new do |s|
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
22
 
23
- # specify any dependencies here; for example:
24
- #s.add_runtime_dependency "rsolr", '>1.0', '<2.0'
25
- #s.add_runtime_dependency "activesupport", '>3.0', '<4.0'
26
23
  #s.add_runtime_dependency "i18n"
27
24
 
28
- #s.add_development_dependency "rake"
29
- #s.add_development_dependency "rspec", '>2.7', '<3.0'
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "rspec", '>2.7', '<3.0'
27
+
30
28
  end
31
29
 
metadata CHANGED
@@ -1,19 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tuersteher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Bernd Ledig
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-04 00:00:00.000000000 Z
13
- dependencies: []
14
- description: ! ' Security-Layer for Rails-Application acts like a firewall.
15
-
16
- '
11
+ date: 2014-08-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>'
32
+ - !ruby/object:Gem::Version
33
+ version: '2.7'
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: '3.0'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>'
42
+ - !ruby/object:Gem::Version
43
+ version: '2.7'
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ description: |2
48
+ Security-Layer for Rails-Application acts like a firewall.
17
49
  email:
18
50
  - bernd@ledig.info
19
51
  executables: []
@@ -40,26 +72,25 @@ files:
40
72
  - tuersteher.gemspec
41
73
  homepage: http://github.com/bledig/tuersteher
42
74
  licenses: []
75
+ metadata: {}
43
76
  post_install_message:
44
77
  rdoc_options: []
45
78
  require_paths:
46
79
  - lib
47
80
  required_ruby_version: !ruby/object:Gem::Requirement
48
- none: false
49
81
  requirements:
50
- - - ! '>='
82
+ - - '>='
51
83
  - !ruby/object:Gem::Version
52
84
  version: '0'
53
85
  required_rubygems_version: !ruby/object:Gem::Requirement
54
- none: false
55
86
  requirements:
56
- - - ! '>='
87
+ - - '>='
57
88
  - !ruby/object:Gem::Version
58
89
  version: '0'
59
90
  requirements: []
60
91
  rubyforge_project: tuersteher
61
- rubygems_version: 1.8.24
92
+ rubygems_version: 2.2.2
62
93
  signing_key:
63
- specification_version: 3
94
+ specification_version: 4
64
95
  summary: summary of the gem
65
96
  test_files: []