strelka 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -220,11 +220,16 @@ module Strelka
220
220
  extend( cm_mod )
221
221
  cm_mod.instance_variables.each do |ivar|
222
222
  next if instance_variable_defined?( ivar )
223
- self.log.debug " copying class instance variable %s" % [ ivar ]
223
+
224
224
  ival = cm_mod.instance_variable_get( ivar )
225
+ copy = Strelka::DataUtilities.deep_copy( ival )
226
+
227
+ self.log.debug " copying class instance variable %s (%p)" % [ ivar, copy ]
225
228
 
226
229
  # Don't duplicate modules/classes or immediates
227
- instance_variable_set( ivar, Strelka::DataUtilities.deep_copy(ival) )
230
+ instance_variable_set( ivar, copy )
231
+ self.log.debug " instance variable %p set to %p in %p" %
232
+ [ ivar, self.instance_variable_get(ivar), self ]
228
233
  end
229
234
  end
230
235
  end
data/lib/strelka.rb CHANGED
@@ -24,10 +24,10 @@ module Strelka
24
24
  log_as :strelka
25
25
 
26
26
  # Library version constant
27
- VERSION = '0.0.3'
27
+ VERSION = '0.1.0'
28
28
 
29
29
  # Version-control revision constant
30
- REVISION = %q$Revision: 4cb76b1531ef $
30
+ REVISION = %q$Revision: a6be71c3d94d $
31
31
 
32
32
  require 'strelka/constants'
33
33
  require 'strelka/exceptions'
@@ -303,12 +303,13 @@ describe Strelka::App do
303
303
 
304
304
  it "uses the app's ID constant for the appid if .run is called without one" do
305
305
  @app.const_set( :ID, 'testing-app' )
306
+ conn = double( "Mongrel2 connection", close: true )
306
307
 
307
308
  Mongrel2::Handler.should_receive( :connection_info_for ).with( 'testing-app' ).
308
309
  and_return([ TEST_SEND_SPEC, TEST_RECV_SPEC ])
309
310
  Mongrel2::Connection.should_receive( :new ).
310
311
  with( 'testing-app', TEST_SEND_SPEC, TEST_RECV_SPEC ).
311
- and_return( :a_connection )
312
+ and_return( conn )
312
313
 
313
314
  @app.run
314
315
  end
@@ -318,12 +319,13 @@ describe Strelka::App do
318
319
  @app.class_eval do
319
320
  def self::name; "My::First::Blog" ; end
320
321
  end
322
+ conn = double( "Mongrel2 connection", close: true )
321
323
 
322
324
  Mongrel2::Handler.should_receive( :connection_info_for ).with( 'my-first-blog' ).
323
325
  and_return([ TEST_SEND_SPEC, TEST_RECV_SPEC ])
324
326
  Mongrel2::Connection.should_receive( :new ).
325
327
  with( 'my-first-blog', TEST_SEND_SPEC, TEST_RECV_SPEC ).
326
- and_return( :a_connection )
328
+ and_return( conn )
327
329
 
328
330
  @app.run
329
331
  end
@@ -201,6 +201,39 @@ describe Strelka::HTTPRequest do
201
201
  end
202
202
 
203
203
 
204
+ context "a DELETE request without a content type" do
205
+ before( :each ) do
206
+ @req = @request_factory.delete( '/directory/path' )
207
+ end
208
+
209
+
210
+ it "Doesn't respond with a 400 (BAD_REQUEST)" do
211
+ @req.params.should be_nil
212
+ end
213
+ end
214
+
215
+
216
+ context "a DELETE request with a 'multipart/form-data' body" do
217
+
218
+ before( :each ) do
219
+ @req = @request_factory.delete( '/directory/path',
220
+ 'Content-type' => 'multipart/form-data; boundary=--a_boundary' )
221
+ end
222
+
223
+ it "returns a hash for form parameters" do
224
+ @req.body = "----a_boundary\r\n" +
225
+ %{Content-Disposition: form-data; name="reason"\r\n} +
226
+ %{\r\n} +
227
+ %{I really don't like this path.\r\n} +
228
+ %{----a_boundary--\r\n}
229
+
230
+ @req.params.should == {'reason' => "I really don't like this path."}
231
+ end
232
+
233
+ end
234
+
235
+
236
+
204
237
  context "a POST request without a content type" do
205
238
  before( :each ) do
206
239
  @req = @request_factory.post( '/directory/path', '' )
@@ -90,7 +90,7 @@ describe Strelka::ParamValidator do
90
90
  it "raises an exception on an unknown constraint type" do
91
91
  expect {
92
92
  @validator.add( :foo, $stderr )
93
- }.to raise_error( /no builtin "foo" validator/ )
93
+ }.to raise_error( /no constraint type for a #{$stderr.class.name} validation spec/i )
94
94
  end
95
95
 
96
96
  it "retains its profile through a copy" do
@@ -272,18 +272,22 @@ describe Strelka::ParamValidator do
272
272
  end
273
273
 
274
274
  it "capitalizes the names of simple fields for descriptions" do
275
+ @validator.add( :required, :string )
275
276
  @validator.get_description( "required" ).should == 'Required'
276
277
  end
277
278
 
278
279
  it "splits apart underbarred field names into capitalized words for descriptions" do
280
+ @validator.add( :rodent_size, :string )
279
281
  @validator.get_description( "rodent_size" ).should == 'Rodent Size'
280
282
  end
281
283
 
282
284
  it "uses the key for descriptions of hash fields" do
285
+ @validator.add( 'rodent[size]', :string )
283
286
  @validator.get_description( "rodent[size]" ).should == 'Size'
284
287
  end
285
288
 
286
289
  it "uses separate capitalized words for descriptions of hash fields with underbarred keys " do
290
+ @validator.add( 'castle[baron_id]', :string )
287
291
  @validator.get_description( "castle[baron_id]" ).should == 'Baron Id'
288
292
  end
289
293
 
@@ -323,7 +327,7 @@ describe Strelka::ParamValidator do
323
327
  @validator.add( 'recipe[ingredient][name]', :string )
324
328
  @validator.add( 'recipe[ingredient][cost]', :string )
325
329
  @validator.add( 'recipe[yield]', :string )
326
- @validator.untaint_all_constraints
330
+ @validator.untaint_all_constraints = true
327
331
 
328
332
  args = {
329
333
  'recipe[ingredient][rarity]'.taint => 'super-rare'.taint,
@@ -1049,7 +1053,7 @@ describe Strelka::ParamValidator do
1049
1053
 
1050
1054
  it "rejects parameters for fields with Proc constraints if the Proc returns a false value" do
1051
1055
  @validator.add( :creation_date ) do |input|
1052
- Date.parse( input )
1056
+ Date.parse( input ) rescue nil
1053
1057
  end
1054
1058
  @validator.validate( 'creation_date' => '::::' )
1055
1059
 
data.tar.gz.sig CHANGED
Binary file
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.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -36,7 +36,7 @@ cert_chain:
36
36
  YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
37
37
  Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
38
38
  cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
39
- date: 2012-10-23 00:00:00.000000000 Z
39
+ date: 2012-12-28 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: configurability
metadata.gz.sig CHANGED
Binary file