strelka 0.0.1.pre.187 → 0.0.1.pre.193

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.
Files changed (47) hide show
  1. data.tar.gz.sig +0 -0
  2. data/ChangeLog +94 -26
  3. data/Manifest.txt +4 -2
  4. data/examples/apps/ws-echo +17 -0
  5. data/lib/strelka/app.rb +26 -24
  6. data/lib/strelka/app/auth.rb +2 -1
  7. data/lib/strelka/app/errors.rb +1 -1
  8. data/lib/strelka/app/filters.rb +1 -1
  9. data/lib/strelka/app/negotiation.rb +1 -1
  10. data/lib/strelka/app/parameters.rb +2 -2
  11. data/lib/strelka/app/restresources.rb +1 -1
  12. data/lib/strelka/app/routing.rb +3 -2
  13. data/lib/strelka/app/sessions.rb +3 -3
  14. data/lib/strelka/app/templating.rb +3 -3
  15. data/lib/strelka/authprovider.rb +2 -10
  16. data/lib/strelka/behavior/plugin.rb +3 -3
  17. data/lib/strelka/httprequest.rb +5 -2
  18. data/lib/strelka/httprequest/session.rb +3 -2
  19. data/lib/strelka/httpresponse/session.rb +8 -9
  20. data/lib/strelka/mixins.rb +15 -0
  21. data/lib/strelka/plugins.rb +257 -0
  22. data/lib/strelka/router/default.rb +27 -2
  23. data/lib/strelka/session.rb +20 -2
  24. data/lib/strelka/session/db.rb +20 -10
  25. data/lib/strelka/session/default.rb +41 -18
  26. data/spec/lib/helpers.rb +1 -1
  27. data/spec/strelka/app/auth_spec.rb +1 -1
  28. data/spec/strelka/app/errors_spec.rb +1 -1
  29. data/spec/strelka/app/filters_spec.rb +1 -1
  30. data/spec/strelka/app/negotiation_spec.rb +1 -1
  31. data/spec/strelka/app/parameters_spec.rb +1 -1
  32. data/spec/strelka/app/restresources_spec.rb +1 -1
  33. data/spec/strelka/app/routing_spec.rb +4 -1
  34. data/spec/strelka/app/sessions_spec.rb +63 -17
  35. data/spec/strelka/app/templating_spec.rb +1 -1
  36. data/spec/strelka/app_spec.rb +13 -5
  37. data/spec/strelka/httprequest/session_spec.rb +44 -23
  38. data/spec/strelka/httprequest_spec.rb +21 -0
  39. data/spec/strelka/httpresponse/session_spec.rb +143 -0
  40. data/spec/strelka/{app/plugins_spec.rb → plugins_spec.rb} +64 -53
  41. data/spec/strelka/router/default_spec.rb +15 -0
  42. data/spec/strelka/router/exclusive_spec.rb +14 -0
  43. data/spec/strelka/session/db_spec.rb +11 -0
  44. data/spec/strelka/session/default_spec.rb +10 -2
  45. metadata +119 -37
  46. metadata.gz.sig +0 -0
  47. data/lib/strelka/app/plugins.rb +0 -284
@@ -73,6 +73,21 @@ describe Strelka::Router::Default do
73
73
  @router.route_request( req ).should be_nil()
74
74
  end
75
75
 
76
+ it "responds with a 405 (method not allowed) for a POST request to /user/foo" do
77
+ expected_info = {
78
+ status: 405,
79
+ message: "Method not allowed.",
80
+ headers: {
81
+ allow: 'GET, HEAD'
82
+ }
83
+ }
84
+
85
+ req = @request_factory.post( '/user/foo' )
86
+ expect {
87
+ @router.route_request( req )
88
+ }.to throw_symbol( :finish, expected_info )
89
+ end
90
+
76
91
  end
77
92
 
78
93
  context "a router with routes for 'foo', 'foo/bar', and a fallback action" do
@@ -107,6 +107,20 @@ describe Strelka::Router::Exclusive do
107
107
  @router.route_request( req ).should be_nil()
108
108
  end
109
109
 
110
+ it "responds with an HTTP::METHOD_NOT_ALLOWED for a POST request to /user/foo" do
111
+ expected_info = {
112
+ status: 405,
113
+ message: "Method not allowed.",
114
+ headers: {
115
+ allow: 'GET, HEAD'
116
+ }
117
+ }
118
+
119
+ req = @request_factory.post( '/user/foo' )
120
+ expect {
121
+ @router.route_request( req )
122
+ }.to throw_symbol( :finish, expected_info )
123
+ end
110
124
  end
111
125
 
112
126
  context "a router with routes for 'foo', 'foo/\w{3}', and 'foo/\w{6}'" do
@@ -70,6 +70,17 @@ describe Strelka::Session::Db do
70
70
  end
71
71
 
72
72
 
73
+ it "knows that a request has a session if it has a cookie with an existing session id" do
74
+ described_class.dataset.insert(
75
+ :session_id => @session_id,
76
+ :session => @session_data.to_yaml )
77
+
78
+ session_cookie = "%s=%s" % [ @cookie_name, @session_id ]
79
+ req = @request_factory.get( '/frothy/gymkata', :cookie => session_cookie )
80
+ described_class.should have_session_for( req )
81
+ end
82
+
83
+
73
84
  it "can save session data to the database" do
74
85
  req = @request_factory.get( '/frothy/broth' )
75
86
  response = req.response
@@ -27,6 +27,7 @@ describe Strelka::Session::Default do
27
27
  end
28
28
 
29
29
  before( :each ) do
30
+ described_class.configure
30
31
  @cookie_name = described_class.cookie_options[:name]
31
32
  end
32
33
 
@@ -66,18 +67,25 @@ describe Strelka::Session::Default do
66
67
  end
67
68
 
68
69
  it "rejects invalid session-ids" do
69
- session_cookie = 'strelka-sessionid=gibberish'
70
+ session_cookie = "%s=gibberish" % [ @cookie_name ]
70
71
  req = @request_factory.get( '/hungry/what-is-in-a-fruit-bowl?', :cookie => session_cookie )
71
72
  described_class.get_session_id( req ).should =~ /^[[:xdigit:]]+$/
72
73
  end
73
74
 
74
75
  it "accepts and reuses an existing valid session-id" do
75
76
  session_id = '3422067061a5790be374c81118d9ed3f'
76
- session_cookie = "buh-mahlon=%s" % [ session_id ]
77
+ session_cookie = "%s=%s" % [ @cookie_name, session_id ]
77
78
  req = @request_factory.get( '/hungry/what-is-in-a-fruit-bowl?', :cookie => session_cookie )
78
79
  described_class.get_session_id( req ).should == session_id
79
80
  end
80
81
 
82
+ it "knows that a request has a session if it has a cookie with an existing session id" do
83
+ session_id = '3422067061a5790be374c81118d9ed3f'
84
+ described_class.sessions[ session_id ] = {}
85
+ session_cookie = "%s=%s" % [ @cookie_name, session_id ]
86
+ req = @request_factory.get( '/hungry/what-is-in-a-fruit-bowl?', :cookie => session_cookie )
87
+ described_class.should have_session_for( req )
88
+ end
81
89
 
82
90
  it "can save itself to the store and set the response's session ID" do
83
91
  req = @request_factory.get( '/hungry/hungry/hippos' )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strelka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre.187
4
+ version: 0.0.1.pre.193
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -36,11 +36,11 @@ cert_chain:
36
36
  YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
37
37
  Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
38
38
  cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
39
- date: 2012-04-12 00:00:00.000000000 Z
39
+ date: 2012-04-18 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: trollop
43
- requirement: &70305412738440 !ruby/object:Gem::Requirement
43
+ requirement: !ruby/object:Gem::Requirement
44
44
  none: false
45
45
  requirements:
46
46
  - - ~>
@@ -48,10 +48,15 @@ dependencies:
48
48
  version: '1.16'
49
49
  type: :runtime
50
50
  prerelease: false
51
- version_requirements: *70305412738440
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '1.16'
52
57
  - !ruby/object:Gem::Dependency
53
58
  name: highline
54
- requirement: &70305412737980 !ruby/object:Gem::Requirement
59
+ requirement: !ruby/object:Gem::Requirement
55
60
  none: false
56
61
  requirements:
57
62
  - - ~>
@@ -59,10 +64,15 @@ dependencies:
59
64
  version: '1.6'
60
65
  type: :runtime
61
66
  prerelease: false
62
- version_requirements: *70305412737980
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ version: '1.6'
63
73
  - !ruby/object:Gem::Dependency
64
74
  name: sysexits
65
- requirement: &70305412737520 !ruby/object:Gem::Requirement
75
+ requirement: !ruby/object:Gem::Requirement
66
76
  none: false
67
77
  requirements:
68
78
  - - ~>
@@ -70,10 +80,15 @@ dependencies:
70
80
  version: '1.0'
71
81
  type: :runtime
72
82
  prerelease: false
73
- version_requirements: *70305412737520
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: '1.0'
74
89
  - !ruby/object:Gem::Dependency
75
90
  name: formvalidator
76
- requirement: &70305412737060 !ruby/object:Gem::Requirement
91
+ requirement: !ruby/object:Gem::Requirement
77
92
  none: false
78
93
  requirements:
79
94
  - - ~>
@@ -81,10 +96,15 @@ dependencies:
81
96
  version: '0.1'
82
97
  type: :runtime
83
98
  prerelease: false
84
- version_requirements: *70305412737060
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '0.1'
85
105
  - !ruby/object:Gem::Dependency
86
106
  name: inversion
87
- requirement: &70305412736540 !ruby/object:Gem::Requirement
107
+ requirement: !ruby/object:Gem::Requirement
88
108
  none: false
89
109
  requirements:
90
110
  - - ~>
@@ -92,10 +112,15 @@ dependencies:
92
112
  version: '0.8'
93
113
  type: :runtime
94
114
  prerelease: false
95
- version_requirements: *70305412736540
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: '0.8'
96
121
  - !ruby/object:Gem::Dependency
97
122
  name: mongrel2
98
- requirement: &70305412736020 !ruby/object:Gem::Requirement
123
+ requirement: !ruby/object:Gem::Requirement
99
124
  none: false
100
125
  requirements:
101
126
  - - ~>
@@ -103,10 +128,15 @@ dependencies:
103
128
  version: '0.20'
104
129
  type: :runtime
105
130
  prerelease: false
106
- version_requirements: *70305412736020
131
+ version_requirements: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ~>
135
+ - !ruby/object:Gem::Version
136
+ version: '0.20'
107
137
  - !ruby/object:Gem::Dependency
108
138
  name: uuidtools
109
- requirement: &70305412735580 !ruby/object:Gem::Requirement
139
+ requirement: !ruby/object:Gem::Requirement
110
140
  none: false
111
141
  requirements:
112
142
  - - ~>
@@ -114,10 +144,15 @@ dependencies:
114
144
  version: '2.1'
115
145
  type: :runtime
116
146
  prerelease: false
117
- version_requirements: *70305412735580
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '2.1'
118
153
  - !ruby/object:Gem::Dependency
119
154
  name: configurability
120
- requirement: &70305412734980 !ruby/object:Gem::Requirement
155
+ requirement: !ruby/object:Gem::Requirement
121
156
  none: false
122
157
  requirements:
123
158
  - - ~>
@@ -125,10 +160,15 @@ dependencies:
125
160
  version: '1.0'
126
161
  type: :runtime
127
162
  prerelease: false
128
- version_requirements: *70305412734980
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ~>
167
+ - !ruby/object:Gem::Version
168
+ version: '1.0'
129
169
  - !ruby/object:Gem::Dependency
130
170
  name: pluginfactory
131
- requirement: &70305412734060 !ruby/object:Gem::Requirement
171
+ requirement: !ruby/object:Gem::Requirement
132
172
  none: false
133
173
  requirements:
134
174
  - - ~>
@@ -136,10 +176,15 @@ dependencies:
136
176
  version: '1.0'
137
177
  type: :runtime
138
178
  prerelease: false
139
- version_requirements: *70305412734060
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ~>
183
+ - !ruby/object:Gem::Version
184
+ version: '1.0'
140
185
  - !ruby/object:Gem::Dependency
141
186
  name: hoe-mercurial
142
- requirement: &70305412733240 !ruby/object:Gem::Requirement
187
+ requirement: !ruby/object:Gem::Requirement
143
188
  none: false
144
189
  requirements:
145
190
  - - ~>
@@ -147,10 +192,15 @@ dependencies:
147
192
  version: 1.4.0
148
193
  type: :development
149
194
  prerelease: false
150
- version_requirements: *70305412733240
195
+ version_requirements: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ~>
199
+ - !ruby/object:Gem::Version
200
+ version: 1.4.0
151
201
  - !ruby/object:Gem::Dependency
152
202
  name: hoe-manualgen
153
- requirement: &70305412732720 !ruby/object:Gem::Requirement
203
+ requirement: !ruby/object:Gem::Requirement
154
204
  none: false
155
205
  requirements:
156
206
  - - ~>
@@ -158,10 +208,15 @@ dependencies:
158
208
  version: 0.3.0
159
209
  type: :development
160
210
  prerelease: false
161
- version_requirements: *70305412732720
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ~>
215
+ - !ruby/object:Gem::Version
216
+ version: 0.3.0
162
217
  - !ruby/object:Gem::Dependency
163
218
  name: hoe-highline
164
- requirement: &70305412732180 !ruby/object:Gem::Requirement
219
+ requirement: !ruby/object:Gem::Requirement
165
220
  none: false
166
221
  requirements:
167
222
  - - ~>
@@ -169,10 +224,15 @@ dependencies:
169
224
  version: 0.1.0
170
225
  type: :development
171
226
  prerelease: false
172
- version_requirements: *70305412732180
227
+ version_requirements: !ruby/object:Gem::Requirement
228
+ none: false
229
+ requirements:
230
+ - - ~>
231
+ - !ruby/object:Gem::Version
232
+ version: 0.1.0
173
233
  - !ruby/object:Gem::Dependency
174
234
  name: rdoc
175
- requirement: &70305412731580 !ruby/object:Gem::Requirement
235
+ requirement: !ruby/object:Gem::Requirement
176
236
  none: false
177
237
  requirements:
178
238
  - - ~>
@@ -180,10 +240,15 @@ dependencies:
180
240
  version: '3.10'
181
241
  type: :development
182
242
  prerelease: false
183
- version_requirements: *70305412731580
243
+ version_requirements: !ruby/object:Gem::Requirement
244
+ none: false
245
+ requirements:
246
+ - - ~>
247
+ - !ruby/object:Gem::Version
248
+ version: '3.10'
184
249
  - !ruby/object:Gem::Dependency
185
250
  name: hoe-deveiate
186
- requirement: &70305412730800 !ruby/object:Gem::Requirement
251
+ requirement: !ruby/object:Gem::Requirement
187
252
  none: false
188
253
  requirements:
189
254
  - - ~>
@@ -191,10 +256,15 @@ dependencies:
191
256
  version: '0.1'
192
257
  type: :development
193
258
  prerelease: false
194
- version_requirements: *70305412730800
259
+ version_requirements: !ruby/object:Gem::Requirement
260
+ none: false
261
+ requirements:
262
+ - - ~>
263
+ - !ruby/object:Gem::Version
264
+ version: '0.1'
195
265
  - !ruby/object:Gem::Dependency
196
266
  name: simplecov
197
- requirement: &70305412745860 !ruby/object:Gem::Requirement
267
+ requirement: !ruby/object:Gem::Requirement
198
268
  none: false
199
269
  requirements:
200
270
  - - ~>
@@ -202,10 +272,15 @@ dependencies:
202
272
  version: '0.6'
203
273
  type: :development
204
274
  prerelease: false
205
- version_requirements: *70305412745860
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ none: false
277
+ requirements:
278
+ - - ~>
279
+ - !ruby/object:Gem::Version
280
+ version: '0.6'
206
281
  - !ruby/object:Gem::Dependency
207
282
  name: hoe
208
- requirement: &70305412745420 !ruby/object:Gem::Requirement
283
+ requirement: !ruby/object:Gem::Requirement
209
284
  none: false
210
285
  requirements:
211
286
  - - ~>
@@ -213,7 +288,12 @@ dependencies:
213
288
  version: '3.0'
214
289
  type: :development
215
290
  prerelease: false
216
- version_requirements: *70305412745420
291
+ version_requirements: !ruby/object:Gem::Requirement
292
+ none: false
293
+ requirements:
294
+ - - ~>
295
+ - !ruby/object:Gem::Version
296
+ version: '3.0'
217
297
  description: ! 'Strelka is a framework for creating and deploying Mongrel2 web applications
218
298
 
219
299
  in Ruby, and for managing a Mongrel2 cluster.
@@ -254,6 +334,7 @@ files:
254
334
  - examples/apps/auth-demo
255
335
  - examples/apps/auth-demo2
256
336
  - examples/apps/sessions-demo
337
+ - examples/apps/ws-echo
257
338
  - examples/config.yml
258
339
  - examples/gen-config.rb
259
340
  - examples/static/examples.css
@@ -268,7 +349,6 @@ files:
268
349
  - lib/strelka/app/filters.rb
269
350
  - lib/strelka/app/negotiation.rb
270
351
  - lib/strelka/app/parameters.rb
271
- - lib/strelka/app/plugins.rb
272
352
  - lib/strelka/app/restresources.rb
273
353
  - lib/strelka/app/routing.rb
274
354
  - lib/strelka/app/sessions.rb
@@ -292,6 +372,7 @@ files:
292
372
  - lib/strelka/logging.rb
293
373
  - lib/strelka/mixins.rb
294
374
  - lib/strelka/paramvalidator.rb
375
+ - lib/strelka/plugins.rb
295
376
  - lib/strelka/router.rb
296
377
  - lib/strelka/router/default.rb
297
378
  - lib/strelka/router/exclusive.rb
@@ -308,7 +389,6 @@ files:
308
389
  - spec/strelka/app/filters_spec.rb
309
390
  - spec/strelka/app/negotiation_spec.rb
310
391
  - spec/strelka/app/parameters_spec.rb
311
- - spec/strelka/app/plugins_spec.rb
312
392
  - spec/strelka/app/restresources_spec.rb
313
393
  - spec/strelka/app/routing_spec.rb
314
394
  - spec/strelka/app/sessions_spec.rb
@@ -326,10 +406,12 @@ files:
326
406
  - spec/strelka/httprequest/session_spec.rb
327
407
  - spec/strelka/httprequest_spec.rb
328
408
  - spec/strelka/httpresponse/negotiation_spec.rb
409
+ - spec/strelka/httpresponse/session_spec.rb
329
410
  - spec/strelka/httpresponse_spec.rb
330
411
  - spec/strelka/logging_spec.rb
331
412
  - spec/strelka/mixins_spec.rb
332
413
  - spec/strelka/paramvalidator_spec.rb
414
+ - spec/strelka/plugins_spec.rb
333
415
  - spec/strelka/router/default_spec.rb
334
416
  - spec/strelka/router/exclusive_spec.rb
335
417
  - spec/strelka/router_spec.rb
@@ -362,7 +444,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
362
444
  version: '0'
363
445
  requirements: []
364
446
  rubyforge_project: strelka
365
- rubygems_version: 1.8.16
447
+ rubygems_version: 1.8.21
366
448
  signing_key:
367
449
  specification_version: 3
368
450
  summary: Strelka is a framework for creating and deploying Mongrel2 web applications
metadata.gz.sig CHANGED
Binary file