strelka 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -2,16 +2,10 @@
|
|
2
2
|
# vim: set nosta noet ts=4 sw=4:
|
3
3
|
# encoding: utf-8
|
4
4
|
|
5
|
-
|
6
|
-
require 'pathname'
|
7
|
-
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
8
|
-
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
9
|
-
}
|
5
|
+
require_relative '../helpers'
|
10
6
|
|
11
7
|
require 'rspec'
|
12
8
|
|
13
|
-
require 'spec/lib/helpers'
|
14
|
-
|
15
9
|
require 'strelka'
|
16
10
|
require 'strelka/plugins'
|
17
11
|
|
@@ -80,7 +74,7 @@ describe "Strelka plugin system" do
|
|
80
74
|
end
|
81
75
|
|
82
76
|
it "registers itself with a plugin registry" do
|
83
|
-
Strelka::Pluggable.loaded_plugins.
|
77
|
+
expect( Strelka::Pluggable.loaded_plugins ).to include( @plugin.plugin_name => @plugin )
|
84
78
|
end
|
85
79
|
|
86
80
|
|
@@ -91,7 +85,7 @@ describe "Strelka plugin system" do
|
|
91
85
|
@before_mod = Module.new do
|
92
86
|
def self::name; "Strelka::Pluggable::BeforeTestPlugin"; end
|
93
87
|
extend Strelka::Plugin
|
94
|
-
|
88
|
+
run_outside( modname )
|
95
89
|
end
|
96
90
|
end
|
97
91
|
|
@@ -110,7 +104,7 @@ describe "Strelka plugin system" do
|
|
110
104
|
@after_mod = Module.new do
|
111
105
|
def self::name; "Strelka::Pluggable::AfterTestPlugin"; end
|
112
106
|
extend Strelka::Plugin
|
113
|
-
|
107
|
+
run_inside( modname )
|
114
108
|
end
|
115
109
|
end
|
116
110
|
|
@@ -128,7 +122,7 @@ describe "Strelka plugin system" do
|
|
128
122
|
context "loading" do
|
129
123
|
|
130
124
|
it "requires plugins from a directory based on the name of the loader" do
|
131
|
-
Strelka::Pluggable.
|
125
|
+
expect( Strelka::Pluggable ).to receive( :require ).
|
132
126
|
with( 'strelka/pluggable/scheduler' ).
|
133
127
|
and_return do
|
134
128
|
Module.new do
|
@@ -152,7 +146,7 @@ describe "Strelka plugin system" do
|
|
152
146
|
app = Class.new( Strelka::Pluggable )
|
153
147
|
app.register_plugin( plugin )
|
154
148
|
|
155
|
-
app.a_class_method.
|
149
|
+
expect( app.a_class_method ).to eq( "yep." )
|
156
150
|
end
|
157
151
|
|
158
152
|
it "adds class-instance variables to the class if the plugin has them" do
|
@@ -168,9 +162,9 @@ describe "Strelka plugin system" do
|
|
168
162
|
app = Class.new( Strelka::Pluggable )
|
169
163
|
app.register_plugin( plugin )
|
170
164
|
|
171
|
-
app.testing_value.
|
165
|
+
expect( app.testing_value ).to eq( :default )
|
172
166
|
app.testing_value = :not_the_default
|
173
|
-
app.testing_value.
|
167
|
+
expect( app.testing_value ).to eq( :not_the_default )
|
174
168
|
end
|
175
169
|
|
176
170
|
it "adds class-instance variables to the class if the plugin has them" do
|
@@ -187,7 +181,7 @@ describe "Strelka plugin system" do
|
|
187
181
|
app.instance_variable_set( :@testing_value, :pre_existing_value )
|
188
182
|
app.register_plugin( plugin )
|
189
183
|
|
190
|
-
app.testing_value.
|
184
|
+
expect( app.testing_value ).to eq( :pre_existing_value )
|
191
185
|
end
|
192
186
|
|
193
187
|
end
|
@@ -210,7 +204,7 @@ describe "Strelka plugin system" do
|
|
210
204
|
@templating_plugin = Module.new do
|
211
205
|
def self::name; "Strelka::Pluggable::Templating"; end
|
212
206
|
extend Strelka::Plugin
|
213
|
-
|
207
|
+
run_outside :routing
|
214
208
|
end
|
215
209
|
end
|
216
210
|
|
@@ -221,7 +215,7 @@ describe "Strelka plugin system" do
|
|
221
215
|
end
|
222
216
|
klass.install_plugins
|
223
217
|
|
224
|
-
klass.ancestors.
|
218
|
+
expect( klass.ancestors ).to include( @routing_plugin )
|
225
219
|
end
|
226
220
|
|
227
221
|
it "can declare a list of plugins to load" do
|
@@ -229,7 +223,7 @@ describe "Strelka plugin system" do
|
|
229
223
|
plugins :templating, :routing
|
230
224
|
end
|
231
225
|
klass.install_plugins
|
232
|
-
klass.ancestors.
|
226
|
+
expect( klass.ancestors ).to include( @routing_plugin, @templating_plugin )
|
233
227
|
end
|
234
228
|
|
235
229
|
it "has an introspection method for examining the list of loaded plugins" do
|
@@ -237,7 +231,7 @@ describe "Strelka plugin system" do
|
|
237
231
|
plugins :templating, :routing
|
238
232
|
end
|
239
233
|
klass.install_plugins
|
240
|
-
klass.application_stack.
|
234
|
+
expect( klass.application_stack ).to eq( [ @templating_plugin, @routing_plugin ] )
|
241
235
|
end
|
242
236
|
|
243
237
|
|
@@ -250,16 +244,16 @@ describe "Strelka plugin system" do
|
|
250
244
|
end
|
251
245
|
subclass.install_plugins
|
252
246
|
|
253
|
-
subclass.ancestors.
|
247
|
+
expect( subclass.ancestors ).to order( @templating_plugin ).before( @routing_plugin )
|
254
248
|
end
|
255
249
|
|
256
250
|
it "adds information about where plugins were installed" do
|
257
251
|
klass = Class.new( Strelka::Pluggable ) do
|
258
252
|
plugin :routing
|
259
253
|
end
|
260
|
-
klass.plugins_installed_from.
|
254
|
+
expect( klass.plugins_installed_from ).to be_nil()
|
261
255
|
klass.install_plugins
|
262
|
-
klass.plugins_installed_from.
|
256
|
+
expect( klass.plugins_installed_from ).to match( /#{__FILE__}:#{__LINE__ - 1}/ )
|
263
257
|
end
|
264
258
|
|
265
259
|
it "are inherited by subclasses" do
|
@@ -270,7 +264,7 @@ describe "Strelka plugin system" do
|
|
270
264
|
route_some_stuff
|
271
265
|
end
|
272
266
|
|
273
|
-
subclass.routed.
|
267
|
+
expect( subclass.routed ).to be_true()
|
274
268
|
end
|
275
269
|
|
276
270
|
end
|
@@ -2,16 +2,10 @@
|
|
2
2
|
# vim: set nosta noet ts=4 sw=4:
|
3
3
|
# encoding: utf-8
|
4
4
|
|
5
|
-
|
6
|
-
require 'pathname'
|
7
|
-
basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
|
8
|
-
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
9
|
-
}
|
5
|
+
require_relative '../../helpers'
|
10
6
|
|
11
7
|
require 'rspec'
|
12
8
|
|
13
|
-
require 'spec/lib/helpers'
|
14
|
-
|
15
9
|
require 'strelka'
|
16
10
|
require 'strelka/router/default'
|
17
11
|
|
@@ -46,37 +40,37 @@ describe Strelka::Router::Default do
|
|
46
40
|
|
47
41
|
it "routes GET /user/foo/bar/baz to the GET foo/bar action" do
|
48
42
|
req = @request_factory.get( '/user/foo/bar/baz' )
|
49
|
-
@router.route_request(
|
43
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_bar )
|
50
44
|
end
|
51
45
|
|
52
46
|
it "routes GET /user/foo/bar to the GET foo/bar action" do
|
53
47
|
req = @request_factory.get( '/user/foo/bar' )
|
54
|
-
@router.route_request(
|
48
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_bar )
|
55
49
|
end
|
56
50
|
|
57
51
|
it "routes GET /user/foo to the GET foo action" do
|
58
52
|
req = @request_factory.get( '/user/foo' )
|
59
|
-
@router.route_request(
|
53
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo )
|
60
54
|
end
|
61
55
|
|
62
56
|
it "doesn't route GET /user" do
|
63
57
|
req = @request_factory.get( '/user' )
|
64
|
-
@router.route_request(
|
58
|
+
expect( @router.route_request(req) ).to be_nil()
|
65
59
|
end
|
66
60
|
|
67
61
|
it "doesn't route GET /user/something/foo/bar" do
|
68
62
|
req = @request_factory.get( '/user/something/foo/bar' )
|
69
|
-
@router.route_request(
|
63
|
+
expect( @router.route_request(req) ).to be_nil()
|
70
64
|
end
|
71
65
|
|
72
66
|
it "doesn't route GET /user/other" do
|
73
67
|
req = @request_factory.get( '/user/other' )
|
74
|
-
@router.route_request(
|
68
|
+
expect( @router.route_request(req) ).to be_nil()
|
75
69
|
end
|
76
70
|
|
77
71
|
it "routes HEAD requests to the GET route" do
|
78
72
|
req = @request_factory.head( '/user/foo' )
|
79
|
-
@router.route_request(
|
73
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo )
|
80
74
|
end
|
81
75
|
|
82
76
|
it "responds with a 405 (method not allowed) for a DELETE request to /user/foo" do
|
@@ -107,27 +101,27 @@ describe Strelka::Router::Default do
|
|
107
101
|
|
108
102
|
it "routes /user/foo/bar/baz to the foo/bar action" do
|
109
103
|
req = @request_factory.get( '/user/foo/bar/baz' )
|
110
|
-
@router.route_request(
|
104
|
+
expect( @router.route_request(req) ).to match_route( :foo_bar )
|
111
105
|
end
|
112
106
|
|
113
107
|
it "routes /user/foo/bar to the foo/bar action" do
|
114
108
|
req = @request_factory.get( '/user/foo/bar' )
|
115
|
-
@router.route_request(
|
109
|
+
expect( @router.route_request(req) ).to match_route( :foo_bar )
|
116
110
|
end
|
117
111
|
|
118
112
|
it "routes /user/foo to the foo action" do
|
119
113
|
req = @request_factory.get( '/user/foo' )
|
120
|
-
@router.route_request(
|
114
|
+
expect( @router.route_request(req) ).to match_route( :foo )
|
121
115
|
end
|
122
116
|
|
123
117
|
it "routes /user to the fallback action" do
|
124
118
|
req = @request_factory.get( '/user' )
|
125
|
-
@router.route_request(
|
119
|
+
expect( @router.route_request(req) ).to match_route( :fallback )
|
126
120
|
end
|
127
121
|
|
128
122
|
it "routes /user/other to the fallback action" do
|
129
123
|
req = @request_factory.get( '/user/other' )
|
130
|
-
@router.route_request(
|
124
|
+
expect( @router.route_request(req) ).to match_route( :fallback )
|
131
125
|
end
|
132
126
|
|
133
127
|
end
|
@@ -142,37 +136,37 @@ describe Strelka::Router::Default do
|
|
142
136
|
|
143
137
|
it "routes /user/foo/barbim/baz to the foo/\w{6} action" do
|
144
138
|
req = @request_factory.get( '/user/foo/barbim/baz' )
|
145
|
-
@router.route_request(
|
139
|
+
expect( @router.route_request(req) ).to match_route( :foo_six )
|
146
140
|
end
|
147
141
|
|
148
142
|
it "routes /user/foo/barbat to the foo/\w{6} action" do
|
149
143
|
req = @request_factory.get( '/user/foo/barbat' )
|
150
|
-
@router.route_request(
|
144
|
+
expect( @router.route_request(req) ).to match_route( :foo_six )
|
151
145
|
end
|
152
146
|
|
153
147
|
it "routes /user/foo/bar/baz to the foo/\w{3} action" do
|
154
148
|
req = @request_factory.get( '/user/foo/bar/baz' )
|
155
|
-
@router.route_request(
|
149
|
+
expect( @router.route_request(req) ).to match_route( :foo_three )
|
156
150
|
end
|
157
151
|
|
158
152
|
it "routes /user/foo/bar to the foo/\w{3} action" do
|
159
153
|
req = @request_factory.get( '/user/foo/bar' )
|
160
|
-
@router.route_request(
|
154
|
+
expect( @router.route_request(req) ).to match_route( :foo_three )
|
161
155
|
end
|
162
156
|
|
163
157
|
it "routes /user/foo to the foo action" do
|
164
158
|
req = @request_factory.get( '/user/foo' )
|
165
|
-
@router.route_request(
|
159
|
+
expect( @router.route_request(req) ).to match_route( :foo )
|
166
160
|
end
|
167
161
|
|
168
162
|
it "doesn't route /user" do
|
169
163
|
req = @request_factory.get( '/user' )
|
170
|
-
@router.route_request(
|
164
|
+
expect( @router.route_request(req) ).to be_nil()
|
171
165
|
end
|
172
166
|
|
173
167
|
it "doesn't route /user/other" do
|
174
168
|
req = @request_factory.get( '/user/other' )
|
175
|
-
@router.route_request(
|
169
|
+
expect( @router.route_request(req) ).to be_nil()
|
176
170
|
end
|
177
171
|
|
178
172
|
end
|
@@ -189,22 +183,22 @@ describe Strelka::Router::Default do
|
|
189
183
|
|
190
184
|
it "routes /user/foo/1 to the foo/\d+ action" do
|
191
185
|
req = @request_factory.get( '/user/foo/1' )
|
192
|
-
@router.route_request(
|
186
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
193
187
|
end
|
194
188
|
|
195
189
|
it "routes /user/foo/12 to the foo/\d+ action" do
|
196
190
|
req = @request_factory.get( '/user/foo/12' )
|
197
|
-
@router.route_request(
|
191
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
198
192
|
end
|
199
193
|
|
200
194
|
it "routes /user/foo/123 to the foo/\w{3} action" do
|
201
195
|
req = @request_factory.get( '/user/foo/123' )
|
202
|
-
@router.route_request(
|
196
|
+
expect( @router.route_request(req) ).to match_route( :foo_three )
|
203
197
|
end
|
204
198
|
|
205
199
|
it "routes /user/foo/1234 to the foo/\d+ action" do
|
206
200
|
req = @request_factory.get( '/user/foo/1234' )
|
207
|
-
@router.route_request(
|
201
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
208
202
|
end
|
209
203
|
|
210
204
|
end
|
@@ -221,22 +215,22 @@ describe Strelka::Router::Default do
|
|
221
215
|
|
222
216
|
it "routes /user/foo/1 to the foo/\d+ action" do
|
223
217
|
req = @request_factory.get( '/user/foo/1' )
|
224
|
-
@router.route_request(
|
218
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
225
219
|
end
|
226
220
|
|
227
221
|
it "routes /user/foo/12 to the foo/\d+ action" do
|
228
222
|
req = @request_factory.get( '/user/foo/12' )
|
229
|
-
@router.route_request(
|
223
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
230
224
|
end
|
231
225
|
|
232
226
|
it "routes /user/foo/123 to the foo/\d+ action" do
|
233
227
|
req = @request_factory.get( '/user/foo/123' )
|
234
|
-
@router.route_request(
|
228
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
235
229
|
end
|
236
230
|
|
237
231
|
it "routes /user/foo/1234 to the foo/\d+ action" do
|
238
232
|
req = @request_factory.get( '/user/foo/1234' )
|
239
|
-
@router.route_request(
|
233
|
+
expect( @router.route_request(req) ).to match_route( :foo_digit )
|
240
234
|
end
|
241
235
|
|
242
236
|
end
|
@@ -250,22 +244,22 @@ describe Strelka::Router::Default do
|
|
250
244
|
|
251
245
|
it "routes /user/foo/1 to the foo action" do
|
252
246
|
req = @request_factory.get( '/user/foo/1' )
|
253
|
-
@router.route_request(
|
247
|
+
expect( @router.route_request(req) ).to match_route( :foo )
|
254
248
|
end
|
255
249
|
|
256
250
|
it "routes /foo.pdf to the regexp action" do
|
257
251
|
req = @request_factory.get( '/user/foo.pdf' )
|
258
|
-
@router.route_request(
|
252
|
+
expect( @router.route_request(req) ).to match_route( :as_pdf )
|
259
253
|
end
|
260
254
|
|
261
255
|
it "doesn't route /foo%1B.pdf to the regexp action" do
|
262
256
|
req = @request_factory.get( "/user/foo%1B.pdf" )
|
263
|
-
@router.route_request(
|
257
|
+
expect( @router.route_request(req) ).to_not match_route( :as_pdf )
|
264
258
|
end
|
265
259
|
|
266
260
|
it "routes /zanzibar.pdf to the regexp action" do
|
267
261
|
req = @request_factory.get( '/user/zanzibar.pdf' )
|
268
|
-
@router.route_request(
|
262
|
+
expect( @router.route_request(req) ).to match_route( :as_pdf )
|
269
263
|
end
|
270
264
|
|
271
265
|
end
|
@@ -2,16 +2,10 @@
|
|
2
2
|
# vim: set nosta noet ts=4 sw=4:
|
3
3
|
# encoding: utf-8
|
4
4
|
|
5
|
-
|
6
|
-
require 'pathname'
|
7
|
-
basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
|
8
|
-
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
9
|
-
}
|
5
|
+
require_relative '../../helpers'
|
10
6
|
|
11
7
|
require 'rspec'
|
12
8
|
|
13
|
-
require 'spec/lib/helpers'
|
14
|
-
|
15
9
|
require 'strelka'
|
16
10
|
require 'strelka/router/exclusive'
|
17
11
|
|
@@ -44,32 +38,32 @@ describe Strelka::Router::Exclusive do
|
|
44
38
|
|
45
39
|
it "doesn't route /user/foo/bar/baz" do
|
46
40
|
req = @request_factory.get( '/user/foo/bar/baz' )
|
47
|
-
@router.route_request(
|
41
|
+
expect( @router.route_request(req) ).to be_nil()
|
48
42
|
end
|
49
43
|
|
50
44
|
it "routes /user/foo/bar to the foo/bar action" do
|
51
45
|
req = @request_factory.get( '/user/foo/bar' )
|
52
|
-
@router.route_request(
|
46
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_bar )
|
53
47
|
end
|
54
48
|
|
55
49
|
it "routes /user/foo/bar?limit=10 to the foo/bar action" do
|
56
50
|
req = @request_factory.get( '/user/foo/bar?limit=10' )
|
57
|
-
@router.route_request(
|
51
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_bar )
|
58
52
|
end
|
59
53
|
|
60
54
|
it "routes /user/foo to the foo action" do
|
61
55
|
req = @request_factory.get( '/user/foo' )
|
62
|
-
@router.route_request(
|
56
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo )
|
63
57
|
end
|
64
58
|
|
65
59
|
it "doesn't route /user" do
|
66
60
|
req = @request_factory.get( '/user' )
|
67
|
-
@router.route_request(
|
61
|
+
expect( @router.route_request(req) ).to be_nil()
|
68
62
|
end
|
69
63
|
|
70
64
|
it "doesn't route /user/other" do
|
71
65
|
req = @request_factory.get( '/user/other' )
|
72
|
-
@router.route_request(
|
66
|
+
expect( @router.route_request(req) ).to be_nil()
|
73
67
|
end
|
74
68
|
|
75
69
|
end
|
@@ -85,32 +79,32 @@ describe Strelka::Router::Exclusive do
|
|
85
79
|
|
86
80
|
it "doesn't route GET /user/foo/bar/baz" do
|
87
81
|
req = @request_factory.get( '/user/foo/bar/baz' )
|
88
|
-
@router.route_request(
|
82
|
+
expect( @router.route_request(req) ).to be_nil()
|
89
83
|
end
|
90
84
|
|
91
85
|
it "routes GET /user/foo/bar to the GET foo/bar action" do
|
92
86
|
req = @request_factory.get( '/user/foo/bar' )
|
93
|
-
@router.route_request(
|
87
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_bar )
|
94
88
|
end
|
95
89
|
|
96
90
|
it "routes POST /user/foo/bar to the POST foor/bar action" do
|
97
91
|
req = @request_factory.post( '/user/foo/bar' )
|
98
|
-
@router.route_request(
|
92
|
+
expect( @router.route_request(req) ).to match_route( :POST_foo_bar )
|
99
93
|
end
|
100
94
|
|
101
95
|
it "routes GET /user/foo to the GET foo action" do
|
102
96
|
req = @request_factory.get( '/user/foo' )
|
103
|
-
@router.route_request(
|
97
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo )
|
104
98
|
end
|
105
99
|
|
106
100
|
it "routes GET /user to the fallback action" do
|
107
101
|
req = @request_factory.get( '/user' )
|
108
|
-
@router.route_request(
|
102
|
+
expect( @router.route_request(req) ).to match_route( :fallback )
|
109
103
|
end
|
110
104
|
|
111
105
|
it "doesn't route GET /user/other" do
|
112
106
|
req = @request_factory.get( '/user/other' )
|
113
|
-
@router.route_request(
|
107
|
+
expect( @router.route_request(req) ).to be_nil()
|
114
108
|
end
|
115
109
|
|
116
110
|
it "responds with an HTTP::METHOD_NOT_ALLOWED for a POST to /user/foo" do
|
@@ -140,37 +134,37 @@ describe Strelka::Router::Exclusive do
|
|
140
134
|
|
141
135
|
it "doesn't route /user/foo/barbim/baz" do
|
142
136
|
req = @request_factory.get( '/user/foo/barbim/baz' )
|
143
|
-
@router.route_request(
|
137
|
+
expect( @router.route_request(req) ).to be_nil()
|
144
138
|
end
|
145
139
|
|
146
140
|
it "routes /user/foo/barbat to the foo/\w{6} action" do
|
147
141
|
req = @request_factory.get( '/user/foo/barbat' )
|
148
|
-
@router.route_request(
|
142
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_six )
|
149
143
|
end
|
150
144
|
|
151
145
|
it "doesn't route /user/foo/bar/baz" do
|
152
146
|
req = @request_factory.get( '/user/foo/bar/baz' )
|
153
|
-
@router.route_request(
|
147
|
+
expect( @router.route_request(req) ).to be_nil()
|
154
148
|
end
|
155
149
|
|
156
150
|
it "routes /user/foo/bar to the foo/\w{3} action" do
|
157
151
|
req = @request_factory.get( '/user/foo/bar' )
|
158
|
-
@router.route_request(
|
152
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_three )
|
159
153
|
end
|
160
154
|
|
161
155
|
it "routes /user/foo to the foo action" do
|
162
156
|
req = @request_factory.get( '/user/foo' )
|
163
|
-
@router.route_request(
|
157
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo )
|
164
158
|
end
|
165
159
|
|
166
160
|
it "doesn't route /user" do
|
167
161
|
req = @request_factory.get( '/user' )
|
168
|
-
@router.route_request(
|
162
|
+
expect( @router.route_request(req) ).to be_nil()
|
169
163
|
end
|
170
164
|
|
171
165
|
it "doesn't route /user/other" do
|
172
166
|
req = @request_factory.get( '/user/other' )
|
173
|
-
@router.route_request(
|
167
|
+
expect( @router.route_request(req) ).to be_nil()
|
174
168
|
end
|
175
169
|
|
176
170
|
end
|
@@ -187,22 +181,22 @@ describe Strelka::Router::Exclusive do
|
|
187
181
|
|
188
182
|
it "routes /user/foo/1 to the foo/\d+ action" do
|
189
183
|
req = @request_factory.get( '/user/foo/1' )
|
190
|
-
@router.route_request(
|
184
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
191
185
|
end
|
192
186
|
|
193
187
|
it "routes /user/foo/12 to the foo/\d+ action" do
|
194
188
|
req = @request_factory.get( '/user/foo/12' )
|
195
|
-
@router.route_request(
|
189
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
196
190
|
end
|
197
191
|
|
198
192
|
it "routes /user/foo/123 to the foo/\w{3} action" do
|
199
193
|
req = @request_factory.get( '/user/foo/123' )
|
200
|
-
@router.route_request(
|
194
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_three )
|
201
195
|
end
|
202
196
|
|
203
197
|
it "routes /user/foo/1234 to the foo/\d+ action" do
|
204
198
|
req = @request_factory.get( '/user/foo/1234' )
|
205
|
-
@router.route_request(
|
199
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
206
200
|
end
|
207
201
|
|
208
202
|
end
|
@@ -219,22 +213,22 @@ describe Strelka::Router::Exclusive do
|
|
219
213
|
|
220
214
|
it "routes /user/foo/1 to the foo/\d+ action" do
|
221
215
|
req = @request_factory.get( '/user/foo/1' )
|
222
|
-
@router.route_request(
|
216
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
223
217
|
end
|
224
218
|
|
225
219
|
it "routes /user/foo/12 to the foo/\d+ action" do
|
226
220
|
req = @request_factory.get( '/user/foo/12' )
|
227
|
-
@router.route_request(
|
221
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
228
222
|
end
|
229
223
|
|
230
224
|
it "routes /user/foo/123 to the foo/\d+ action" do
|
231
225
|
req = @request_factory.get( '/user/foo/123' )
|
232
|
-
@router.route_request(
|
226
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
233
227
|
end
|
234
228
|
|
235
229
|
it "routes /user/foo/1234 to the foo/\d+ action" do
|
236
230
|
req = @request_factory.get( '/user/foo/1234' )
|
237
|
-
@router.route_request(
|
231
|
+
expect( @router.route_request(req) ).to match_route( :GET_foo_digit )
|
238
232
|
end
|
239
233
|
|
240
234
|
end
|
data/spec/strelka/router_spec.rb
CHANGED
@@ -2,16 +2,10 @@
|
|
2
2
|
# vim: set nosta noet ts=4 sw=4:
|
3
3
|
# encoding: utf-8
|
4
4
|
|
5
|
-
|
6
|
-
require 'pathname'
|
7
|
-
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
8
|
-
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
9
|
-
}
|
5
|
+
require_relative '../helpers'
|
10
6
|
|
11
7
|
require 'rspec'
|
12
8
|
|
13
|
-
require 'spec/lib/helpers'
|
14
|
-
|
15
9
|
require 'strelka'
|
16
10
|
require 'strelka/router'
|
17
11
|
|
@@ -33,7 +27,7 @@ describe Strelka::Router do
|
|
33
27
|
|
34
28
|
|
35
29
|
it "looks for plugins under strelka/router" do
|
36
|
-
Strelka::Router.plugin_prefixes.
|
30
|
+
expect( Strelka::Router.plugin_prefixes ).to include( 'strelka/router' )
|
37
31
|
end
|
38
32
|
|
39
33
|
|
@@ -1,16 +1,10 @@
|
|
1
1
|
# -*- rspec -*-
|
2
2
|
# vim: set nosta noet ts=4 sw=4:
|
3
3
|
|
4
|
-
|
5
|
-
require 'pathname'
|
6
|
-
basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
|
7
|
-
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
8
|
-
}
|
4
|
+
require_relative '../../helpers'
|
9
5
|
|
10
6
|
require 'rspec'
|
11
7
|
|
12
|
-
require 'spec/lib/helpers'
|
13
|
-
|
14
8
|
require 'strelka'
|
15
9
|
require 'strelka/session/db'
|
16
10
|
|
@@ -54,14 +48,21 @@ describe Strelka::Session::Db do
|
|
54
48
|
end
|
55
49
|
|
56
50
|
|
51
|
+
RSpec::Matchers.define( :contain_table ) do |tablename|
|
52
|
+
match do |db|
|
53
|
+
db.table_exists?( tablename )
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
57
58
|
it "creates the database if needed" do
|
58
|
-
described_class.db.
|
59
|
+
expect( described_class.db ).to contain_table( :sessions )
|
59
60
|
end
|
60
61
|
|
61
62
|
|
62
63
|
it "can change the default table name" do
|
63
64
|
described_class.configure( @default_config.merge(:table_name => :brothy) )
|
64
|
-
described_class.db.
|
65
|
+
expect( described_class.db ).to contain_table( :brothy )
|
65
66
|
described_class.db.drop_table( :brothy )
|
66
67
|
end
|
67
68
|
|
@@ -73,7 +74,7 @@ describe Strelka::Session::Db do
|
|
73
74
|
:session => @session_data.to_yaml )
|
74
75
|
|
75
76
|
session = described_class.load( @session_id )
|
76
|
-
session.namespaced_hash.
|
77
|
+
expect( session.namespaced_hash ).to eq( @session_data )
|
77
78
|
end
|
78
79
|
|
79
80
|
|
@@ -84,7 +85,7 @@ describe Strelka::Session::Db do
|
|
84
85
|
|
85
86
|
session_cookie = "%s=%s" % [ @cookie_name, @session_id ]
|
86
87
|
req = @request_factory.get( '/frothy/gymkata', :cookie => session_cookie )
|
87
|
-
described_class.
|
88
|
+
expect( described_class ).to have_session_for( req )
|
88
89
|
end
|
89
90
|
|
90
91
|
|
@@ -95,9 +96,10 @@ describe Strelka::Session::Db do
|
|
95
96
|
session.save( response )
|
96
97
|
|
97
98
|
row = session.class.dataset.filter( :session_id => @session_id ).first
|
98
|
-
|
99
|
-
row[ :
|
100
|
-
row[ :
|
101
|
-
|
99
|
+
|
100
|
+
expect( row[ :session_id ] ).to eq( @session_id )
|
101
|
+
expect( row[ :session ] ).to match( /hurrrg: true/ )
|
102
|
+
expect( row[ :created ].to_s ).to match( /\d{4}-\d{2}-\d{2}/ )
|
103
|
+
expect( response.header_data ).to match( /Set-Cookie: #{@cookie_name}=#{@session_id}/i )
|
102
104
|
end
|
103
105
|
end
|