mongrel2 0.52.1 → 0.52.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -33,21 +33,25 @@ describe Mongrel2::Response do
33
33
  expect( response.body.read ).to eq( 'the body' )
34
34
  end
35
35
 
36
+
36
37
  it "stringifies to its body contents" do
37
38
  response = Mongrel2::Response.new( TEST_UUID, 8, 'the body' )
38
39
  expect( response.to_s ).to eq( 'the body' )
39
40
  end
40
41
 
42
+
41
43
  it "can be streamed in chunks" do
42
44
  response = Mongrel2::Response.new( TEST_UUID, 8, 'the body' )
43
45
  expect {|b| response.each_chunk(&b) }.to yield_with_args( 'the body' )
44
46
  end
45
47
 
48
+
46
49
  it "can generate an enumerator for its body stream" do
47
50
  response = Mongrel2::Response.new( TEST_UUID, 8, "the body" )
48
51
  expect( response.each_chunk ).to be_a( Enumerator )
49
52
  end
50
53
 
54
+
51
55
  it "wraps stringifiable bodies set via the #body= accessor in a StringIO" do
52
56
  response = Mongrel2::Response.new( TEST_UUID, 8 )
53
57
  response.body = 'a stringioed body'
@@ -55,6 +59,7 @@ describe Mongrel2::Response do
55
59
  expect( response.body.string ).to eq( 'a stringioed body' )
56
60
  end
57
61
 
62
+
58
63
  it "doesn't try to wrap non-stringfiable bodies in a StringIO" do
59
64
  response = Mongrel2::Response.new( TEST_UUID, 8 )
60
65
  testbody = Object.new
@@ -73,18 +78,21 @@ describe Mongrel2::Response do
73
78
  expect( response.body.read ).to eq( '' )
74
79
  end
75
80
 
81
+
76
82
  it "supports the append operator to append objects to the body IO" do
77
83
  response << 'some body stuff' << ' and some more body stuff'
78
84
  response.body.rewind
79
85
  expect( response.body.read ).to eq( 'some body stuff and some more body stuff' )
80
86
  end
81
87
 
88
+
82
89
  it "supports #puts for appending objects to the body IO separated by EOL" do
83
90
  response.puts( "some body stuff\n", " and some more body stuff\n\n", :and_a_symbol )
84
91
  response.body.rewind
85
92
  expect( response.body.read ).to eq( "some body stuff\n and some more body stuff\n\nand_a_symbol\n" )
86
93
  end
87
94
 
95
+
88
96
  it "is not an extended reply" do
89
97
  expect( response ).to_not be_extended_reply
90
98
  end
@@ -17,7 +17,6 @@ describe Mongrel2::Table do
17
17
  end
18
18
 
19
19
 
20
-
21
20
  it "allows setting/fetching case-insensitively" do
22
21
 
23
22
  @table['Accept'] = :accept
@@ -156,6 +155,7 @@ describe Mongrel2::Table do
156
155
  it "can yield an Enumerator for its header iterator" do
157
156
  expect( @table.each_header ).to be_a( Enumerator )
158
157
  end
158
+
159
159
  end
160
160
 
161
161
 
@@ -46,16 +46,19 @@ describe Mongrel2::WebSocket do
46
46
  expect( Mongrel2::Request.request_types[:WEBSOCKET_HANDSHAKE] ).to eq( Mongrel2::WebSocket::ClientHandshake )
47
47
  end
48
48
 
49
+
49
50
  it "knows what subprotocols were requested" do
50
51
  handshake = @factory.handshake( '/websock', 'echo', 'superecho' )
51
52
  expect( handshake.protocols ).to eq( ['echo', 'superecho'] )
52
53
  end
53
54
 
55
+
54
56
  it "doesn't error if no subprotocols were requested" do
55
57
  handshake = @factory.handshake( '/websock' )
56
58
  expect( handshake.protocols ).to eq( [] )
57
59
  end
58
60
 
61
+
59
62
  it "can create a response WebSocket::ServerHandshake for itself" do
60
63
  handshake = @factory.handshake( '/websock' )
61
64
  result = handshake.response
@@ -73,6 +76,7 @@ describe Mongrel2::WebSocket do
73
76
  expect( result.body.read ).to eq( '' )
74
77
  end
75
78
 
79
+
76
80
  it "can create a response WebSocket::ServerHandshake with a valid sub-protocol for itself" do
77
81
  handshake = @factory.handshake( '/websock', 'echo', 'superecho' )
78
82
  result = handshake.response( :superecho )
@@ -91,6 +95,7 @@ describe Mongrel2::WebSocket do
91
95
  expect( result.body.read ).to eq( '' )
92
96
  end
93
97
 
98
+
94
99
  it "raises an exception if the specified protocol is not one of the client's advertised ones" do
95
100
  handshake = @factory.handshake( '/websock', 'echo', 'superecho' )
96
101
 
@@ -99,6 +104,7 @@ describe Mongrel2::WebSocket do
99
104
  }.to raise_error( Mongrel2::WebSocket::HandshakeError, /map_updates/i )
100
105
  end
101
106
 
107
+
102
108
  it "has a socket identifier" do
103
109
  handshake = @factory.handshake( '/websock', 'echo', 'superecho' )
104
110
  expect( handshake.socket_id ).to eq( "#{handshake.sender_id}:#{handshake.conn_id}" )
@@ -114,85 +120,103 @@ describe Mongrel2::WebSocket do
114
120
  expect( Mongrel2::Request.request_types[:WEBSOCKET] ).to eq( Mongrel2::WebSocket::Frame )
115
121
  end
116
122
 
123
+
117
124
  it "knows that its FIN flag is not set if its FLAG header doesn't include that bit" do
118
125
  frame = @factory.text( '/websock', 'Hello!' )
119
126
  frame.flags ^= ( frame.flags & Mongrel2::WebSocket::FIN_FLAG )
120
127
  expect( frame ).to_not be_fin()
121
128
  end
122
129
 
130
+
123
131
  it "knows that its FIN flag is set if its FLAG header includes that bit" do
124
132
  frame = @factory.text( '/websock', 'Hello!', :fin )
125
133
  expect( frame ).to be_fin()
126
134
  end
127
135
 
136
+
128
137
  it "can unset its FIN flag" do
129
138
  frame = @factory.text( '/websock', 'Hello!', :fin )
130
139
  frame.fin = false
131
140
  expect( frame ).to_not be_fin()
132
141
  end
133
142
 
143
+
134
144
  it "can set its FIN flag" do
135
145
  frame = @factory.text( '/websock', 'Hello!' )
136
146
  frame.fin = true
137
147
  expect( frame ).to be_fin()
138
148
  end
139
149
 
150
+
140
151
  it "knows that its opcode is continuation if its opcode is 0x0" do
141
152
  expect( @factory.continuation( '/websock' ).opcode ).to eq( :continuation )
142
153
  end
143
154
 
155
+
144
156
  it "knows that is opcode is 'text' if its opcode is 0x1" do
145
157
  expect( @factory.text( '/websock', 'Hello!' ).opcode ).to eq( :text )
146
158
  end
147
159
 
160
+
148
161
  it "knows that is opcode is 'binary' if its opcode is 0x2" do
149
162
  expect( @factory.binary( '/websock', 'Hello!' ).opcode ).to eq( :binary )
150
163
  end
151
164
 
165
+
152
166
  it "knows that is opcode is 'close' if its opcode is 0x8" do
153
167
  expect( @factory.close( '/websock' ).opcode ).to eq( :close )
154
168
  end
155
169
 
170
+
156
171
  it "knows that is opcode is 'ping' if its opcode is 0x9" do
157
172
  expect( @factory.ping( '/websock' ).opcode ).to eq( :ping )
158
173
  end
159
174
 
175
+
160
176
  it "knows that is opcode is 'pong' if its opcode is 0xA" do
161
177
  expect( @factory.pong( '/websock' ).opcode ).to eq( :pong )
162
178
  end
163
179
 
180
+
164
181
  it "knows that its opcode is one of the reserved ones if it's 0x3" do
165
182
  expect( @factory.create( '/websocket', '', 0x3 ).opcode ).to eq( :reserved )
166
183
  end
167
184
 
185
+
168
186
  it "knows that its opcode is one of the reserved ones if it's 0x4" do
169
187
  expect( @factory.create( '/websocket', '', 0x4 ).opcode ).to eq( :reserved )
170
188
  end
171
189
 
190
+
172
191
  it "knows that its opcode is one of the reserved ones if it's 0xB" do
173
192
  expect( @factory.create( '/websocket', '', 0xB ).opcode ).to eq( :reserved )
174
193
  end
175
194
 
195
+
176
196
  it "knows that its opcode is one of the reserved ones if it's 0xD" do
177
197
  expect( @factory.create( '/websocket', '', 0xD ).opcode ).to eq( :reserved )
178
198
  end
179
199
 
200
+
180
201
  it "knows that its opcode is one of the reserved ones if it's 0xF" do
181
202
  expect( @factory.create( '/websocket', '', 0xF ).opcode ).to eq( :reserved )
182
203
  end
183
204
 
205
+
184
206
  it "allows its opcode to be set Symbolically" do
185
207
  frame = @factory.text( '/websocket', 'data' )
186
208
  frame.opcode = :binary
187
209
  expect( frame.numeric_opcode ).to eq( OPCODE[:binary] )
188
210
  end
189
211
 
212
+
190
213
  it "allows its opcode to be set Numerically" do
191
214
  frame = @factory.binary( '/websocket', 'data' )
192
215
  frame.opcode = :text
193
216
  expect( frame.numeric_opcode ).to eq( OPCODE[:text] )
194
217
  end
195
218
 
219
+
196
220
  it "allows its opcode to be set to one of the reserved opcodes Numerically" do
197
221
  frame = @factory.binary( '/websocket', 'data' )
198
222
  frame.opcode = 0xC
@@ -200,34 +224,42 @@ describe Mongrel2::WebSocket do
200
224
  expect( frame.numeric_opcode ).to eq( 0xC )
201
225
  end
202
226
 
227
+
203
228
  it "knows that its RSV1 flag is set if its FLAG header includes that bit" do
204
229
  expect( @factory.ping( '/websock', 'test', :rsv1 ) ).to be_rsv1()
205
230
  end
206
231
 
232
+
207
233
  it "knows that its RSV2 flag is set if its FLAG header includes that bit" do
208
234
  expect( @factory.ping( '/websock', 'test', :rsv2 ) ).to be_rsv2()
209
235
  end
210
236
 
237
+
211
238
  it "knows that its RSV3 flag is set if its FLAG header includes that bit" do
212
239
  expect( @factory.ping( '/websock', 'test', :rsv3 ) ).to be_rsv3()
213
240
  end
214
241
 
242
+
215
243
  it "knows that one of its RSV flags is set if its FLAG header includes RSV1" do
216
244
  expect( @factory.ping( '/websock', 'test', :rsv1 ) ).to have_rsv_flags()
217
245
  end
218
246
 
247
+
219
248
  it "knows that one of its RSV flags is set if its FLAG header includes RSV2" do
220
249
  expect( @factory.ping( '/websock', 'test', :rsv2 ) ).to have_rsv_flags()
221
250
  end
222
251
 
252
+
223
253
  it "knows that one of its RSV flags is set if its FLAG header includes RSV3" do
224
254
  expect( @factory.ping( '/websock', 'test', :rsv3 ) ).to have_rsv_flags()
225
255
  end
226
256
 
257
+
227
258
  it "knows that no RSV flags are set if its FLAG header doesn't have any RSV bits" do
228
259
  expect( @factory.ping( '/websock', 'test' ) ).to_not have_rsv_flags()
229
260
  end
230
261
 
262
+
231
263
  it "can create a response WebSocket::Frame for itself" do
232
264
  frame = @factory.text( '/websock', "Hi, here's a message!", :fin )
233
265
 
@@ -242,6 +274,7 @@ describe Mongrel2::WebSocket do
242
274
  expect( result.payload.read ).to eq( '' )
243
275
  end
244
276
 
277
+
245
278
  it "creates PONG responses with the same payload for PING frames" do
246
279
  frame = @factory.ping( '/websock', "WOO" )
247
280
 
@@ -256,6 +289,7 @@ describe Mongrel2::WebSocket do
256
289
  expect( result.payload.read ).to eq( 'WOO' )
257
290
  end
258
291
 
292
+
259
293
  it "allows header flags and/or opcode to be specified when creating a response" do
260
294
  frame = @factory.text( '/websock', "some bad data" )
261
295
 
@@ -271,6 +305,7 @@ describe Mongrel2::WebSocket do
271
305
  expect( result.payload.read ).to eq( '' )
272
306
  end
273
307
 
308
+
274
309
  it "allows reserved opcodes to be specified when creating a response" do
275
310
  frame = @factory.text( '/websock', "some bad data" )
276
311
 
@@ -286,6 +321,7 @@ describe Mongrel2::WebSocket do
286
321
  expect( result.payload.read ).to eq( '' )
287
322
  end
288
323
 
324
+
289
325
  it "can be streamed in chunks instead of read all at once" do
290
326
  data = BINARY_DATA * 256
291
327
  binary = @factory.binary( '/websock', data, :fin )
@@ -297,6 +333,7 @@ describe Mongrel2::WebSocket do
297
333
  ])
298
334
  end
299
335
 
336
+
300
337
  it "has a socket identifier" do
301
338
  frame = @factory.text( '/websock', "data" )
302
339
  expect( frame.socket_id ).to eq( "#{frame.sender_id}:#{frame.conn_id}" )
@@ -311,6 +348,7 @@ describe Mongrel2::WebSocket do
311
348
  @frame = @factory.text( '/websock', '', :fin )
312
349
  end
313
350
 
351
+
314
352
  it "automatically transcodes its payload to UTF8" do
315
353
  text = "Стрелке!".encode( Encoding::KOI8_U )
316
354
  @frame << text
@@ -325,24 +363,29 @@ describe Mongrel2::WebSocket do
325
363
 
326
364
 
327
365
  describe "a WebSocket binary frame" do
366
+
328
367
  before( :each ) do
329
368
  @frame = @factory.binary( '/websock', BINARY_DATA, :fin )
330
369
  end
331
370
 
371
+
332
372
  it "doesn't try to transcode non-UTF8 data" do
333
373
  # 4-byte header
334
374
  expect( @frame.bytes.to_a[ 4, 16 ] ).
335
375
  to eq([ 0x07, 0xbd, 0xb3, 0xfe, 0x87, 0xeb, 0xa9, 0x0e, 0x6e, 0x32, 0x71,
336
376
  0xce, 0x85, 0xaf, 0x29, 0x88 ])
337
377
  end
378
+
338
379
  end
339
380
 
340
381
 
341
382
  describe "a WebSocket close frame" do
383
+
342
384
  before( :each ) do
343
385
  @frame = @factory.close( '/websock' )
344
386
  end
345
387
 
388
+
346
389
  it "has convenience methods for setting its payload via integer status code" do
347
390
  @frame.set_status( CLOSE_BAD_DATA )
348
391
  @frame.payload.rewind
@@ -354,6 +397,7 @@ describe Mongrel2::WebSocket do
354
397
 
355
398
 
356
399
  describe "WebSocket control frames" do
400
+
357
401
  before( :each ) do
358
402
  @frame = @factory.close( '/websock', "1002 Protocol error" )
359
403
  end
@@ -366,6 +410,7 @@ describe Mongrel2::WebSocket do
366
410
  }.to raise_error( Mongrel2::WebSocket::FrameError, /cannot exceed 125 bytes/i )
367
411
  end
368
412
 
413
+
369
414
  it "raises an exception if it's fragmented" do
370
415
  @frame.fin = false
371
416
  expect {
@@ -384,6 +429,7 @@ describe Mongrel2::WebSocket do
384
429
  expect( raw_response.encoding ).to eq( Encoding::BINARY )
385
430
  end
386
431
 
432
+
387
433
  it "generates both parts of a fragmented unmasked text message correctly" do
388
434
  first = @factory.text( '/websock', 'Hel' )
389
435
  last = @factory.continuation( '/websock', 'lo', :fin )
@@ -392,6 +438,7 @@ describe Mongrel2::WebSocket do
392
438
  expect( last.bytes.to_a ).to eq( [ 0x80, 0x02, 0x6c, 0x6f ] )
393
439
  end
394
440
 
441
+
395
442
  # The RFC's example is a masked response, but we're never a client, so never
396
443
  # generate masked payloads.
397
444
  it "generates a unmasked Ping request and (un)masked Ping response correctly" do
@@ -411,6 +458,7 @@ describe Mongrel2::WebSocket do
411
458
  expect( binary.to_s[4..-1] ).to eq( BINARY_DATA )
412
459
  end
413
460
 
461
+
414
462
  it "generates a 64KiB binary message in a single unmasked frame correctly" do
415
463
  data = BINARY_DATA * 256
416
464
 
@@ -11,6 +11,7 @@ require 'mongrel2'
11
11
  describe Mongrel2 do
12
12
 
13
13
  describe "version methods" do
14
+
14
15
  it "returns a version string if asked" do
15
16
  expect( Mongrel2.version_string ).to match( /\w+ [\d.]+/ )
16
17
  end
@@ -19,6 +20,7 @@ describe Mongrel2 do
19
20
  it "returns a version string with a build number if asked" do
20
21
  expect( Mongrel2.version_string(true) ).to match( /\w+ [\d.]+ \(build [[:xdigit:]]+\)/ )
21
22
  end
23
+
22
24
  end
23
25
 
24
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongrel2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.52.1
4
+ version: 0.52.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
@@ -10,32 +10,31 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- 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
- GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
15
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- cZ+lPcg834G9DrqW2zhqUoLr1MTly4pqxYGb7XoDhoR7dd1kFE2a067+DzWC/ADt
23
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
35
+ JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
37
36
  -----END CERTIFICATE-----
38
- date: 2018-07-23 00:00:00.000000000 Z
37
+ date: 2019-04-24 00:00:00.000000000 Z
39
38
  dependencies:
40
39
  - !ruby/object:Gem::Dependency
41
40
  name: cztop
@@ -197,14 +196,14 @@ dependencies:
197
196
  requirements:
198
197
  - - "~>"
199
198
  - !ruby/object:Gem::Version
200
- version: '0.9'
199
+ version: '0.10'
201
200
  type: :development
202
201
  prerelease: false
203
202
  version_requirements: !ruby/object:Gem::Requirement
204
203
  requirements:
205
204
  - - "~>"
206
205
  - !ruby/object:Gem::Version
207
- version: '0.9'
206
+ version: '0.10'
208
207
  - !ruby/object:Gem::Dependency
209
208
  name: hoe-highline
210
209
  requirement: !ruby/object:Gem::Requirement
@@ -279,30 +278,36 @@ dependencies:
279
278
  name: rdoc
280
279
  requirement: !ruby/object:Gem::Requirement
281
280
  requirements:
282
- - - "~>"
281
+ - - ">="
283
282
  - !ruby/object:Gem::Version
284
283
  version: '4.0'
284
+ - - "<"
285
+ - !ruby/object:Gem::Version
286
+ version: '7'
285
287
  type: :development
286
288
  prerelease: false
287
289
  version_requirements: !ruby/object:Gem::Requirement
288
290
  requirements:
289
- - - "~>"
291
+ - - ">="
290
292
  - !ruby/object:Gem::Version
291
293
  version: '4.0'
294
+ - - "<"
295
+ - !ruby/object:Gem::Version
296
+ version: '7'
292
297
  - !ruby/object:Gem::Dependency
293
298
  name: hoe
294
299
  requirement: !ruby/object:Gem::Requirement
295
300
  requirements:
296
301
  - - "~>"
297
302
  - !ruby/object:Gem::Version
298
- version: '3.16'
303
+ version: '3.17'
299
304
  type: :development
300
305
  prerelease: false
301
306
  version_requirements: !ruby/object:Gem::Requirement
302
307
  requirements:
303
308
  - - "~>"
304
309
  - !ruby/object:Gem::Version
305
- version: '3.16'
310
+ version: '3.17'
306
311
  description: |-
307
312
  Ruby-Mongrel2 is a complete Ruby connector for Mongrel2[http://mongrel2.org/].
308
313
 
@@ -412,8 +417,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
412
417
  - !ruby/object:Gem::Version
413
418
  version: '0'
414
419
  requirements: []
415
- rubyforge_project:
416
- rubygems_version: 2.7.7
420
+ rubygems_version: 3.0.3
417
421
  signing_key:
418
422
  specification_version: 4
419
423
  summary: Ruby-Mongrel2 is a complete Ruby connector for Mongrel2[http://mongrel2.org/]