strelka 0.6.0 → 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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/ChangeLog +156 -9
- data/History.rdoc +15 -0
- data/IDEAS.rdoc +17 -1
- data/MILESTONES.rdoc +1 -1
- data/Manifest.txt +10 -2
- data/Plugins.rdoc +4 -4
- data/README.rdoc +3 -3
- data/Rakefile +5 -4
- data/bin/strelka +19 -10
- data/contrib/hoetemplate/data/project/apps/file_name_app +1 -0
- data/contrib/hoetemplate/lib/file_name.rb.erb +3 -2
- data/examples/apps/hello-world +1 -0
- data/examples/apps/ws-chat +69 -0
- data/examples/apps/ws-echo +61 -0
- data/examples/gen-config.rb +6 -5
- data/lib/strelka/app/auth.rb +2 -2
- data/lib/strelka/app/errors.rb +1 -1
- data/lib/strelka/app/filters.rb +3 -2
- data/lib/strelka/app/negotiation.rb +2 -2
- data/lib/strelka/app/parameters.rb +1 -2
- data/lib/strelka/app/restresources.rb +3 -2
- data/lib/strelka/app/routing.rb +1 -1
- data/lib/strelka/app/sessions.rb +2 -2
- data/lib/strelka/app/templating.rb +7 -3
- data/lib/strelka/app.rb +5 -145
- data/lib/strelka/behavior/plugin.rb +4 -4
- data/lib/strelka/discovery.rb +211 -0
- data/lib/strelka/httprequest.rb +1 -0
- data/lib/strelka/httpresponse/negotiation.rb +7 -1
- data/lib/strelka/mixins.rb +4 -1
- data/lib/strelka/paramvalidator.rb +1 -1
- data/lib/strelka/plugins.rb +8 -6
- data/lib/strelka/websocketserver/routing.rb +116 -0
- data/lib/strelka/websocketserver.rb +147 -0
- data/lib/strelka.rb +5 -4
- data/spec/{lib/constants.rb → constants.rb} +3 -2
- data/spec/{lib/helpers.rb → helpers.rb} +15 -14
- data/spec/strelka/app/auth_spec.rb +145 -142
- data/spec/strelka/app/errors_spec.rb +20 -26
- data/spec/strelka/app/filters_spec.rb +67 -54
- data/spec/strelka/app/negotiation_spec.rb +8 -14
- data/spec/strelka/app/parameters_spec.rb +23 -29
- data/spec/strelka/app/restresources_spec.rb +98 -100
- data/spec/strelka/app/routing_spec.rb +57 -57
- data/spec/strelka/app/sessions_spec.rb +11 -17
- data/spec/strelka/app/templating_spec.rb +36 -40
- data/spec/strelka/app_spec.rb +48 -147
- data/spec/strelka/authprovider/basic_spec.rb +5 -11
- data/spec/strelka/authprovider/hostaccess_spec.rb +9 -15
- data/spec/strelka/authprovider_spec.rb +3 -9
- data/spec/strelka/cookie_spec.rb +32 -38
- data/spec/strelka/cookieset_spec.rb +31 -37
- data/spec/strelka/discovery_spec.rb +144 -0
- data/spec/strelka/exceptions_spec.rb +2 -8
- data/spec/strelka/httprequest/acceptparams_spec.rb +74 -83
- data/spec/strelka/httprequest/auth_spec.rb +5 -15
- data/spec/strelka/httprequest/negotiation_spec.rb +93 -103
- data/spec/strelka/httprequest/session_spec.rb +12 -22
- data/spec/strelka/httprequest_spec.rb +1 -7
- data/spec/strelka/httpresponse/negotiation_spec.rb +84 -76
- data/spec/strelka/httpresponse/session_spec.rb +25 -35
- data/spec/strelka/httpresponse_spec.rb +20 -26
- data/spec/strelka/mixins_spec.rb +66 -61
- data/spec/strelka/multipartparser_spec.rb +31 -37
- data/spec/strelka/paramvalidator_spec.rb +389 -373
- data/spec/strelka/plugins_spec.rb +17 -23
- data/spec/strelka/router/default_spec.rb +32 -38
- data/spec/strelka/router/exclusive_spec.rb +28 -34
- data/spec/strelka/router_spec.rb +2 -8
- data/spec/strelka/session/db_spec.rb +17 -15
- data/spec/strelka/session/default_spec.rb +22 -28
- data/spec/strelka/session_spec.rb +3 -9
- data/spec/strelka/websocketserver/routing_spec.rb +119 -0
- data/spec/strelka/websocketserver_spec.rb +149 -0
- data/spec/strelka_spec.rb +11 -13
- data.tar.gz.sig +3 -3
- metadata +22 -14
- metadata.gz.sig +0 -0
@@ -1,16 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
require 'pathname'
|
5
|
-
basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
|
6
|
-
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
7
|
-
}
|
3
|
+
require_relative '../../helpers'
|
8
4
|
|
9
5
|
require 'rspec'
|
10
6
|
require 'rspec/mocks'
|
11
7
|
|
12
|
-
require 'spec/lib/helpers'
|
13
|
-
|
14
8
|
require 'strelka'
|
15
9
|
require 'strelka/plugins'
|
16
10
|
require 'strelka/app/auth'
|
@@ -35,7 +29,7 @@ describe Strelka::App::Auth do
|
|
35
29
|
end
|
36
30
|
|
37
31
|
|
38
|
-
it_should_behave_like( "A Strelka
|
32
|
+
it_should_behave_like( "A Strelka Plugin" )
|
39
33
|
|
40
34
|
|
41
35
|
it "gives including apps a default authprovider" do
|
@@ -43,8 +37,8 @@ describe Strelka::App::Auth do
|
|
43
37
|
plugins :auth
|
44
38
|
end
|
45
39
|
|
46
|
-
app.auth_provider.
|
47
|
-
app.auth_provider.
|
40
|
+
expect( app.auth_provider ).to be_a( Class )
|
41
|
+
expect( app.auth_provider ).to be < Strelka::AuthProvider
|
48
42
|
end
|
49
43
|
|
50
44
|
it "adds the Auth mixin to the request class" do
|
@@ -53,7 +47,7 @@ describe Strelka::App::Auth do
|
|
53
47
|
end
|
54
48
|
app.install_plugins
|
55
49
|
|
56
|
-
@request_factory.get( '/api/v1/verify' ).
|
50
|
+
expect( @request_factory.get( '/api/v1/verify' ) ).to respond_to( :authenticated? )
|
57
51
|
end
|
58
52
|
|
59
53
|
|
@@ -92,46 +86,53 @@ describe Strelka::App::Auth do
|
|
92
86
|
app = @app.new
|
93
87
|
req = @request_factory.get( '/api/v1' )
|
94
88
|
|
95
|
-
app.auth_provider.
|
96
|
-
app.auth_provider.
|
89
|
+
expect( app.auth_provider ).to receive( :authenticate ).and_return( 'anonymous' )
|
90
|
+
expect( app.auth_provider ).to receive( :authorize )
|
97
91
|
|
98
92
|
res = app.handle( req )
|
99
93
|
|
100
|
-
res.status.
|
94
|
+
expect( res.status ).to eq( HTTP::OK )
|
101
95
|
end
|
102
96
|
|
103
97
|
it "doesn't have any auth criteria by default" do
|
104
|
-
@app.
|
98
|
+
expect( @app ).to_not have_auth_criteria()
|
105
99
|
end
|
106
100
|
|
107
101
|
it "sets the authenticated_user attribute of the request to the credentials of the authenticating user" do
|
108
102
|
app = @app.new
|
109
103
|
req = @request_factory.get( '/api/v1' )
|
110
104
|
|
111
|
-
app.auth_provider.
|
112
|
-
app.auth_provider.
|
105
|
+
expect( app.auth_provider ).to receive( :authenticate ).and_return( 'anonymous' )
|
106
|
+
expect( app.auth_provider ).to receive( :authorize ).and_return( true )
|
113
107
|
|
114
108
|
app.handle( req )
|
115
|
-
req.authenticated_user.
|
109
|
+
expect( req.authenticated_user ).to eq( 'anonymous' )
|
116
110
|
end
|
117
111
|
|
118
112
|
it "has its configured auth provider inherited by subclasses" do
|
119
113
|
Strelka::App::Auth.configure( :provider => 'basic' )
|
120
114
|
subclass = Class.new( @app )
|
121
|
-
subclass.auth_provider.
|
115
|
+
expect( subclass.auth_provider ).to eq( Strelka::AuthProvider::Basic )
|
122
116
|
end
|
123
117
|
|
124
118
|
it "has its auth config inherited by subclasses" do
|
125
119
|
subclass = Class.new( @app )
|
126
120
|
|
127
|
-
subclass.positive_auth_criteria.
|
128
|
-
subclass.positive_auth_criteria.
|
129
|
-
subclass.negative_auth_criteria.
|
130
|
-
subclass.negative_auth_criteria.
|
131
|
-
subclass.positive_perms_criteria.
|
132
|
-
subclass.positive_perms_criteria.
|
133
|
-
subclass.negative_perms_criteria.
|
134
|
-
subclass.negative_perms_criteria.
|
121
|
+
expect( subclass.positive_auth_criteria ).to eq( @app.positive_auth_criteria )
|
122
|
+
expect( subclass.positive_auth_criteria ).to_not equal( @app.positive_auth_criteria )
|
123
|
+
expect( subclass.negative_auth_criteria ).to eq( @app.negative_auth_criteria )
|
124
|
+
expect( subclass.negative_auth_criteria ).to_not equal( @app.negative_auth_criteria )
|
125
|
+
expect( subclass.positive_perms_criteria ).to eq( @app.positive_perms_criteria )
|
126
|
+
expect( subclass.positive_perms_criteria ).to_not equal( @app.positive_perms_criteria )
|
127
|
+
expect( subclass.negative_perms_criteria ).to eq( @app.negative_perms_criteria )
|
128
|
+
expect( subclass.negative_perms_criteria ).to_not equal( @app.negative_perms_criteria )
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
RSpec::Matchers.define( :require_auth_for_request ) do |request|
|
133
|
+
match do |app|
|
134
|
+
app.request_should_auth?( request )
|
135
|
+
end
|
135
136
|
end
|
136
137
|
|
137
138
|
|
@@ -140,13 +141,14 @@ describe Strelka::App::Auth do
|
|
140
141
|
app = @app.new
|
141
142
|
|
142
143
|
req = @request_factory.get( '/api/v1/string' )
|
143
|
-
|
144
|
+
expect( app ).to require_auth_for_request( req )
|
145
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
144
146
|
req = @request_factory.get( '/api/v1/strong' )
|
145
|
-
app.request_should_auth?(
|
147
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
146
148
|
req = @request_factory.get( '/api/v1/stri' )
|
147
|
-
app.request_should_auth?(
|
149
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
148
150
|
req = @request_factory.get( '/api/v1/string/long' )
|
149
|
-
app.request_should_auth?(
|
151
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
150
152
|
end
|
151
153
|
|
152
154
|
it "allows auth criteria to be declared with a regexp" do
|
@@ -154,17 +156,17 @@ describe Strelka::App::Auth do
|
|
154
156
|
app = @app.new
|
155
157
|
|
156
158
|
req = @request_factory.get( '/api/v1/stri' )
|
157
|
-
app.request_should_auth?(
|
159
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
158
160
|
req = @request_factory.get( '/api/v1/stro' )
|
159
|
-
app.request_should_auth?(
|
161
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
160
162
|
req = @request_factory.get( '/api/v1/string' ) # not right-bound
|
161
|
-
app.request_should_auth?(
|
163
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
162
164
|
req = @request_factory.get( '/api/v1/string/long' )
|
163
|
-
app.request_should_auth?(
|
165
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
164
166
|
req = @request_factory.get( '/api/v1/other/string/long' ) # Not left-bound
|
165
|
-
app.request_should_auth?(
|
167
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
166
168
|
req = @request_factory.get( '/api/v1/chatlog' ) # Not left-bound
|
167
|
-
app.request_should_auth?(
|
169
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
168
170
|
end
|
169
171
|
|
170
172
|
it "allows auth criteria to be declared with a string and a block" do
|
@@ -175,15 +177,15 @@ describe Strelka::App::Auth do
|
|
175
177
|
app = @app.new
|
176
178
|
|
177
179
|
req = @request_factory.get( '/api/v1/string' )
|
178
|
-
app.request_should_auth?(
|
180
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
179
181
|
req = @request_factory.post( '/api/v1/string' )
|
180
|
-
app.request_should_auth?(
|
182
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
181
183
|
req = @request_factory.put( '/api/v1/string' )
|
182
|
-
app.request_should_auth?(
|
184
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
183
185
|
req = @request_factory.delete( '/api/v1/string' )
|
184
|
-
app.request_should_auth?(
|
186
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
185
187
|
req = @request_factory.options( '/api/v1/string' )
|
186
|
-
app.request_should_auth?(
|
188
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
187
189
|
end
|
188
190
|
|
189
191
|
it "allows auth criteria to be declared with a regexp and a block" do
|
@@ -194,11 +196,11 @@ describe Strelka::App::Auth do
|
|
194
196
|
app = @app.new
|
195
197
|
|
196
198
|
req = @request_factory.get( '/api/v1/regexp' )
|
197
|
-
app.request_should_auth?(
|
199
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
198
200
|
req = @request_factory.get( '/api/v1/regexp/a_username' )
|
199
|
-
app.request_should_auth?(
|
201
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
200
202
|
req = @request_factory.get( '/api/v1/regexp/%20not+a+username' )
|
201
|
-
app.request_should_auth?(
|
203
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
202
204
|
end
|
203
205
|
|
204
206
|
it "allows auth criteria to be declared with just a block" do
|
@@ -216,21 +218,21 @@ describe Strelka::App::Auth do
|
|
216
218
|
app = @app.new
|
217
219
|
|
218
220
|
req = @request_factory.get( '/api/v1/strong' )
|
219
|
-
app.request_should_auth?(
|
221
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
220
222
|
req = @request_factory.get( '/api/v1/marlon_brando' )
|
221
|
-
app.request_should_auth?(
|
223
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
222
224
|
req = @request_factory.post( '/api/v1/somewhere' )
|
223
|
-
app.request_should_auth?(
|
225
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
224
226
|
req = @request_factory.put( '/api/v1/somewhere' )
|
225
227
|
req.content_type = 'application/x-www-form-urlencoded'
|
226
|
-
app.request_should_auth?(
|
228
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
227
229
|
|
228
230
|
req = @request_factory.get( '/api/v1/string' )
|
229
|
-
app.request_should_auth?(
|
231
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
230
232
|
req = @request_factory.get( '/api/v1/marlon_brando/2' )
|
231
|
-
app.request_should_auth?(
|
233
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
232
234
|
req = @request_factory.put( '/api/v1/somewhere' )
|
233
|
-
app.request_should_auth?(
|
235
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
234
236
|
|
235
237
|
end
|
236
238
|
|
@@ -239,13 +241,13 @@ describe Strelka::App::Auth do
|
|
239
241
|
app = @app.new
|
240
242
|
|
241
243
|
req = @request_factory.get( '/api/v1/string' )
|
242
|
-
app.request_should_auth?(
|
244
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
243
245
|
req = @request_factory.get( '/api/v1/strong' )
|
244
|
-
app.request_should_auth?(
|
246
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
245
247
|
req = @request_factory.get( '/api/v1/stri' )
|
246
|
-
app.request_should_auth?(
|
248
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
247
249
|
req = @request_factory.get( '/api/v1/string/long' )
|
248
|
-
app.request_should_auth?(
|
250
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
249
251
|
end
|
250
252
|
|
251
253
|
it "allows negative auth criteria to be declared with a regexp" do
|
@@ -253,17 +255,17 @@ describe Strelka::App::Auth do
|
|
253
255
|
app = @app.new
|
254
256
|
|
255
257
|
req = @request_factory.get( '/api/v1/stri' )
|
256
|
-
app.request_should_auth?(
|
258
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
257
259
|
req = @request_factory.get( '/api/v1/stro' )
|
258
|
-
app.request_should_auth?(
|
260
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
259
261
|
req = @request_factory.get( '/api/v1/string' ) # not right-bound
|
260
|
-
app.request_should_auth?(
|
262
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
261
263
|
req = @request_factory.get( '/api/v1/string/long' )
|
262
|
-
app.request_should_auth?(
|
264
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
263
265
|
req = @request_factory.get( '/api/v1/other/string/long' ) # Not left-bound
|
264
|
-
app.request_should_auth?(
|
266
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
265
267
|
req = @request_factory.get( '/api/v1/chat' )
|
266
|
-
app.request_should_auth?(
|
268
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
267
269
|
end
|
268
270
|
|
269
271
|
it "allows negative auth criteria to be declared with a string and a block" do
|
@@ -272,17 +274,17 @@ describe Strelka::App::Auth do
|
|
272
274
|
app = @app.new
|
273
275
|
|
274
276
|
req = @request_factory.get( '/api/v1/string' )
|
275
|
-
app.request_should_auth?(
|
277
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
276
278
|
req = @request_factory.get( '/api/v1/strong' )
|
277
|
-
app.request_should_auth?(
|
279
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
278
280
|
req = @request_factory.post( '/api/v1/string' )
|
279
|
-
app.request_should_auth?(
|
281
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
280
282
|
req = @request_factory.put( '/api/v1/string' )
|
281
|
-
app.request_should_auth?(
|
283
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
282
284
|
req = @request_factory.delete( '/api/v1/string' )
|
283
|
-
app.request_should_auth?(
|
285
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
284
286
|
req = @request_factory.options( '/api/v1/string' )
|
285
|
-
app.request_should_auth?(
|
287
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
286
288
|
end
|
287
289
|
|
288
290
|
it "allows negative auth criteria to be declared with a regexp and a block" do
|
@@ -293,13 +295,13 @@ describe Strelka::App::Auth do
|
|
293
295
|
app = @app.new
|
294
296
|
|
295
297
|
req = @request_factory.get( '/api/v1/regexp' )
|
296
|
-
app.request_should_auth?(
|
298
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
297
299
|
req = @request_factory.get( '/api/v1/regexp/a_username' )
|
298
|
-
app.request_should_auth?(
|
300
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
299
301
|
req = @request_factory.get( '/api/v1/regexp/%20not+a+username' )
|
300
|
-
app.request_should_auth?(
|
302
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
301
303
|
req = @request_factory.get( '/api/v1/regexp/guest' )
|
302
|
-
app.request_should_auth?(
|
304
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
303
305
|
end
|
304
306
|
|
305
307
|
it "allows negative auth criteria to be declared with just a block" do
|
@@ -312,11 +314,11 @@ describe Strelka::App::Auth do
|
|
312
314
|
app = @app.new
|
313
315
|
|
314
316
|
req = @request_factory.get( '/api/v1/foom' )
|
315
|
-
app.request_should_auth?(
|
317
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
316
318
|
req = @request_factory.post( '/api/v1/foom', :accept => 'text/plain, text/html; q=0.5' )
|
317
|
-
app.request_should_auth?(
|
319
|
+
expect( app.request_should_auth?(req) ).to be_true()
|
318
320
|
req = @request_factory.get( '/api/v1/foom', :accept => 'text/plain, text/html; q=0.5' )
|
319
|
-
app.request_should_auth?(
|
321
|
+
expect( app.request_should_auth?(req) ).to be_false()
|
320
322
|
|
321
323
|
end
|
322
324
|
|
@@ -326,9 +328,9 @@ describe Strelka::App::Auth do
|
|
326
328
|
app = @app.new
|
327
329
|
|
328
330
|
req = @request_factory.get( '/api/v1/string' )
|
329
|
-
app.required_perms_for(
|
331
|
+
expect( app.required_perms_for(req) ).to eq( [ :stringperm ] )
|
330
332
|
req = @request_factory.get( '/api/v1/strong' )
|
331
|
-
app.required_perms_for(
|
333
|
+
expect( app.required_perms_for(req) ).to eq( [] )
|
332
334
|
end
|
333
335
|
|
334
336
|
it "allows perms criteria to be declared with a regexp" do
|
@@ -337,13 +339,13 @@ describe Strelka::App::Auth do
|
|
337
339
|
app = @app.new
|
338
340
|
|
339
341
|
req = @request_factory.get( '/api/v1/admin' )
|
340
|
-
app.required_perms_for(
|
342
|
+
expect( app.required_perms_for(req) ).to eq( [ :admin ] )
|
341
343
|
req = @request_factory.get( '/api/v1/admin/grant' )
|
342
|
-
app.required_perms_for(
|
344
|
+
expect( app.required_perms_for(req) ).to eq( [ :admin, :grant ] )
|
343
345
|
req = @request_factory.get( '/api/v1/users' )
|
344
|
-
app.required_perms_for(
|
346
|
+
expect( app.required_perms_for(req) ).to eq( [] )
|
345
347
|
req = @request_factory.get( '/api/v1/users/grant' )
|
346
|
-
app.required_perms_for(
|
348
|
+
expect( app.required_perms_for(req) ).to eq( [ :grant ] )
|
347
349
|
end
|
348
350
|
|
349
351
|
it "allows perms criteria to be declared with a string and a block" do
|
@@ -354,9 +356,9 @@ describe Strelka::App::Auth do
|
|
354
356
|
app = @app.new
|
355
357
|
|
356
358
|
req = @request_factory.get( '/api/v1/string' )
|
357
|
-
app.required_perms_for(
|
359
|
+
expect( app.required_perms_for(req) ).to eq( [ :stringperm, :otherperm ] )
|
358
360
|
req = @request_factory.get( '/api/v1/strong' )
|
359
|
-
app.required_perms_for(
|
361
|
+
expect( app.required_perms_for(req) ).to eq( [] )
|
360
362
|
end
|
361
363
|
|
362
364
|
it "allows multiple perms criteria for the same path" do
|
@@ -367,13 +369,13 @@ describe Strelka::App::Auth do
|
|
367
369
|
app = @app.new
|
368
370
|
|
369
371
|
req = @request_factory.get( '/api/v1' )
|
370
|
-
app.required_perms_for(
|
372
|
+
expect( app.required_perms_for(req) ).to eq( [ :it_assets_webapp ] )
|
371
373
|
req = @request_factory.post( '/api/v1' )
|
372
|
-
app.required_perms_for(
|
374
|
+
expect( app.required_perms_for(req) ).to eq( [ :it_assets_webapp, :@sysadmin ] )
|
373
375
|
req = @request_factory.get( '/api/v1/users' )
|
374
|
-
app.required_perms_for(
|
376
|
+
expect( app.required_perms_for(req) ).to eq( [ :it_assets_webapp ] )
|
375
377
|
req = @request_factory.post( '/api/v1/users' )
|
376
|
-
app.required_perms_for(
|
378
|
+
expect( app.required_perms_for(req) ).to eq( [ :it_assets_webapp, :@sysadmin ] )
|
377
379
|
end
|
378
380
|
|
379
381
|
it "allows perms criteria to be declared with a regexp and a block" do
|
@@ -394,11 +396,11 @@ describe Strelka::App::Auth do
|
|
394
396
|
app = @app.new
|
395
397
|
|
396
398
|
req = @request_factory.get( '/api/v1/user' )
|
397
|
-
app.required_perms_for(
|
399
|
+
expect( app.required_perms_for(req) ).to eq( [ :admin ] )
|
398
400
|
req = @request_factory.get( '/api/v1/user/jzero' )
|
399
|
-
app.required_perms_for(
|
401
|
+
expect( app.required_perms_for(req) ).to eq( [ :admin ] )
|
400
402
|
req = @request_factory.get( '/api/v1/user/madeline' )
|
401
|
-
app.required_perms_for(
|
403
|
+
expect( app.required_perms_for(req) ).to eq( [ :admin, :superuser ] )
|
402
404
|
end
|
403
405
|
|
404
406
|
it "allows perms the same as the appid to be declared with just a block" do
|
@@ -408,11 +410,11 @@ describe Strelka::App::Auth do
|
|
408
410
|
app = @app.new
|
409
411
|
|
410
412
|
req = @request_factory.get( '/api/v1/accounts' )
|
411
|
-
app.required_perms_for(
|
413
|
+
expect( app.required_perms_for(req) ).to eq( [] )
|
412
414
|
req = @request_factory.post( '/api/v1/accounts', '' )
|
413
|
-
app.required_perms_for(
|
415
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
414
416
|
req = @request_factory.put( '/api/v1/accounts/1', '' )
|
415
|
-
app.required_perms_for(
|
417
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
416
418
|
end
|
417
419
|
|
418
420
|
it "allows negative perms criteria to be declared with a string" do
|
@@ -420,9 +422,9 @@ describe Strelka::App::Auth do
|
|
420
422
|
app = @app.new
|
421
423
|
|
422
424
|
req = @request_factory.get( '/api/v1/string' )
|
423
|
-
app.required_perms_for(
|
425
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
424
426
|
req = @request_factory.get( '/api/v1/strong' )
|
425
|
-
app.required_perms_for(
|
427
|
+
expect( app.required_perms_for(req) ).to eq([ :auth_test ]) # default == appid
|
426
428
|
end
|
427
429
|
|
428
430
|
it "allows negative perms criteria to be declared with a regexp" do
|
@@ -430,11 +432,11 @@ describe Strelka::App::Auth do
|
|
430
432
|
app = @app.new
|
431
433
|
|
432
434
|
req = @request_factory.get( '/api/v1/signup' )
|
433
|
-
app.required_perms_for(
|
435
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
434
436
|
req = @request_factory.get( '/api/v1/signup/reapply' )
|
435
|
-
app.required_perms_for(
|
437
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
436
438
|
req = @request_factory.get( '/api/v1/index' )
|
437
|
-
app.required_perms_for(
|
439
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
438
440
|
end
|
439
441
|
|
440
442
|
it "allows negative perms criteria to be declared with a string and a block" do
|
@@ -444,11 +446,12 @@ describe Strelka::App::Auth do
|
|
444
446
|
app = @app.new
|
445
447
|
|
446
448
|
req = @request_factory.get( '/api/v1' )
|
447
|
-
app.required_perms_for(
|
449
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
448
450
|
req = @request_factory.post( '/api/v1' )
|
449
|
-
app.required_perms_for(
|
451
|
+
expect( app.required_perms_for(req) ).to eq([ :auth_test ]) # default == appid
|
450
452
|
req = @request_factory.get( '/api/v1/users' )
|
451
|
-
|
453
|
+
|
454
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
452
455
|
end
|
453
456
|
|
454
457
|
it "allows negative perms criteria to be declared with a regexp and a block" do
|
@@ -460,15 +463,15 @@ describe Strelka::App::Auth do
|
|
460
463
|
app = @app.new
|
461
464
|
|
462
465
|
req = @request_factory.get( '/api/v1/collection' )
|
463
|
-
app.required_perms_for(
|
466
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
464
467
|
req = @request_factory.get( '/api/v1/collection/degasse' )
|
465
|
-
app.required_perms_for(
|
468
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
466
469
|
req = @request_factory.get( '/api/v1/collection/ione' )
|
467
|
-
app.required_perms_for(
|
470
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
468
471
|
req = @request_factory.get( '/api/v1/collection/champhion' )
|
469
|
-
app.required_perms_for(
|
472
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
470
473
|
req = @request_factory.get( '/api/v1/collection/calindra' )
|
471
|
-
app.required_perms_for(
|
474
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
472
475
|
end
|
473
476
|
|
474
477
|
it "allows negative perms criteria to be declared with just a block" do
|
@@ -479,9 +482,9 @@ describe Strelka::App::Auth do
|
|
479
482
|
app = @app.new
|
480
483
|
|
481
484
|
req = @request_factory.get( '/api/v1/collection', x_forwarded_for: '10.0.1.68' )
|
482
|
-
app.required_perms_for(
|
485
|
+
expect( app.required_perms_for(req) ).to be_empty()
|
483
486
|
req = @request_factory.get( '/api/v1/collection', x_forwarded_for: '192.0.43.10' )
|
484
|
-
app.required_perms_for(
|
487
|
+
expect( app.required_perms_for(req) ).to eq( [ :auth_test ] )
|
485
488
|
end
|
486
489
|
|
487
490
|
|
@@ -503,8 +506,8 @@ describe Strelka::App::Auth do
|
|
503
506
|
req = @request_factory.get( '/api/v1/onlyperms' )
|
504
507
|
|
505
508
|
app = @app.new
|
506
|
-
app.auth_provider.
|
507
|
-
app.auth_provider.
|
509
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
510
|
+
expect( app.auth_provider ).to receive( :authorize )
|
508
511
|
|
509
512
|
app.handle( req )
|
510
513
|
end
|
@@ -513,8 +516,8 @@ describe Strelka::App::Auth do
|
|
513
516
|
req = @request_factory.get( '/api/v1/onlyauth' )
|
514
517
|
|
515
518
|
app = @app.new
|
516
|
-
app.auth_provider.
|
517
|
-
app.auth_provider.
|
519
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
520
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
518
521
|
|
519
522
|
app.handle( req )
|
520
523
|
end
|
@@ -523,8 +526,8 @@ describe Strelka::App::Auth do
|
|
523
526
|
req = @request_factory.get( '/api/v1/both' )
|
524
527
|
|
525
528
|
app = @app.new
|
526
|
-
app.auth_provider.
|
527
|
-
app.auth_provider.
|
529
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
530
|
+
expect( app.auth_provider ).to receive( :authorize )
|
528
531
|
|
529
532
|
app.handle( req )
|
530
533
|
end
|
@@ -533,8 +536,8 @@ describe Strelka::App::Auth do
|
|
533
536
|
req = @request_factory.get( '/api/v1/neither' )
|
534
537
|
|
535
538
|
app = @app.new
|
536
|
-
app.auth_provider.
|
537
|
-
app.auth_provider.
|
539
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
540
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
538
541
|
|
539
542
|
app.handle( req )
|
540
543
|
end
|
@@ -552,8 +555,8 @@ describe Strelka::App::Auth do
|
|
552
555
|
req = @request_factory.get( '/api/v1/onlyperms' )
|
553
556
|
|
554
557
|
app = @app.new
|
555
|
-
app.auth_provider.
|
556
|
-
app.auth_provider.
|
558
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
559
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
557
560
|
|
558
561
|
app.handle( req )
|
559
562
|
end
|
@@ -562,8 +565,8 @@ describe Strelka::App::Auth do
|
|
562
565
|
req = @request_factory.get( '/api/v1/onlyauth' )
|
563
566
|
|
564
567
|
app = @app.new
|
565
|
-
app.auth_provider.
|
566
|
-
app.auth_provider.
|
568
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
569
|
+
expect( app.auth_provider ).to receive( :authorize )
|
567
570
|
|
568
571
|
app.handle( req )
|
569
572
|
end
|
@@ -572,8 +575,8 @@ describe Strelka::App::Auth do
|
|
572
575
|
req = @request_factory.get( '/api/v1/both' )
|
573
576
|
|
574
577
|
app = @app.new
|
575
|
-
app.auth_provider.
|
576
|
-
app.auth_provider.
|
578
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
579
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
577
580
|
|
578
581
|
app.handle( req )
|
579
582
|
end
|
@@ -582,8 +585,8 @@ describe Strelka::App::Auth do
|
|
582
585
|
req = @request_factory.get( '/api/v1/neither' )
|
583
586
|
|
584
587
|
app = @app.new
|
585
|
-
app.auth_provider.
|
586
|
-
app.auth_provider.
|
588
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
589
|
+
expect( app.auth_provider ).to receive( :authorize )
|
587
590
|
|
588
591
|
app.handle( req )
|
589
592
|
end
|
@@ -611,8 +614,8 @@ describe Strelka::App::Auth do
|
|
611
614
|
req = @request_factory.get( '/api/v1/onlyperms' )
|
612
615
|
|
613
616
|
app = @app.new
|
614
|
-
app.auth_provider.
|
615
|
-
app.auth_provider.
|
617
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
618
|
+
expect( app.auth_provider ).to receive( :authorize )
|
616
619
|
|
617
620
|
app.handle( req )
|
618
621
|
end
|
@@ -621,8 +624,8 @@ describe Strelka::App::Auth do
|
|
621
624
|
req = @request_factory.get( '/api/v1/onlyauth' )
|
622
625
|
|
623
626
|
app = @app.new
|
624
|
-
app.auth_provider.
|
625
|
-
app.auth_provider.
|
627
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
628
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
626
629
|
|
627
630
|
app.handle( req )
|
628
631
|
end
|
@@ -631,8 +634,8 @@ describe Strelka::App::Auth do
|
|
631
634
|
req = @request_factory.get( '/api/v1/both' )
|
632
635
|
|
633
636
|
app = @app.new
|
634
|
-
app.auth_provider.
|
635
|
-
app.auth_provider.
|
637
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
638
|
+
expect( app.auth_provider ).to receive( :authorize )
|
636
639
|
|
637
640
|
app.handle( req )
|
638
641
|
end
|
@@ -641,8 +644,8 @@ describe Strelka::App::Auth do
|
|
641
644
|
req = @request_factory.get( '/api/v1/neither' )
|
642
645
|
|
643
646
|
app = @app.new
|
644
|
-
app.auth_provider.
|
645
|
-
app.auth_provider.
|
647
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
648
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
646
649
|
|
647
650
|
app.handle( req )
|
648
651
|
end
|
@@ -660,8 +663,8 @@ describe Strelka::App::Auth do
|
|
660
663
|
req = @request_factory.get( '/api/v1/onlyperms' )
|
661
664
|
|
662
665
|
app = @app.new
|
663
|
-
app.auth_provider.
|
664
|
-
app.auth_provider.
|
666
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
667
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
665
668
|
|
666
669
|
app.handle( req )
|
667
670
|
end
|
@@ -670,8 +673,8 @@ describe Strelka::App::Auth do
|
|
670
673
|
req = @request_factory.get( '/api/v1/onlyauth' )
|
671
674
|
|
672
675
|
app = @app.new
|
673
|
-
app.auth_provider.
|
674
|
-
app.auth_provider.
|
676
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
677
|
+
expect( app.auth_provider ).to receive( :authorize )
|
675
678
|
|
676
679
|
app.handle( req )
|
677
680
|
end
|
@@ -680,8 +683,8 @@ describe Strelka::App::Auth do
|
|
680
683
|
req = @request_factory.get( '/api/v1/both' )
|
681
684
|
|
682
685
|
app = @app.new
|
683
|
-
app.auth_provider.
|
684
|
-
app.auth_provider.
|
686
|
+
expect( app.auth_provider ).to_not receive( :authenticate )
|
687
|
+
expect( app.auth_provider ).to_not receive( :authorize )
|
685
688
|
|
686
689
|
app.handle( req )
|
687
690
|
end
|
@@ -690,8 +693,8 @@ describe Strelka::App::Auth do
|
|
690
693
|
req = @request_factory.get( '/api/v1/neither' )
|
691
694
|
|
692
695
|
app = @app.new
|
693
|
-
app.auth_provider.
|
694
|
-
app.auth_provider.
|
696
|
+
expect( app.auth_provider ).to receive( :authenticate )
|
697
|
+
expect( app.auth_provider ).to receive( :authorize )
|
695
698
|
|
696
699
|
app.handle( req )
|
697
700
|
end
|
@@ -712,8 +715,8 @@ describe Strelka::App::Auth do
|
|
712
715
|
req = @request_factory.get( '/api/v1/admin/upload' )
|
713
716
|
|
714
717
|
app = @app.new
|
715
|
-
app.auth_provider.
|
716
|
-
app.auth_provider.
|
718
|
+
allow( app.auth_provider ).to receive( :authenticate ).and_return( :credentials )
|
719
|
+
expect( app.auth_provider ).to receive( :authorize ).with( :credentials, req, [:admin, :upload] )
|
717
720
|
|
718
721
|
app.handle( req )
|
719
722
|
end
|