simple-websocket-vcr 0.1.0 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a7afb7894a207b315a358e261bf424af389b4ff6
4
- data.tar.gz: c89e7986e60e765c8c635141bf2088e0f97c1e29
2
+ SHA256:
3
+ metadata.gz: 3647e6aa28e20c2c4f4a2a77d8b4fe217a25efaaea2db8d23cd68ab700765fde
4
+ data.tar.gz: ee99fd6d3cbabf1972202163345ac3675cb69bdd45458db1bbf0a6fe2c89b854
5
5
  SHA512:
6
- metadata.gz: c4c5bb740f4b7771a25eb472a58b90d0a9fa9811ad16d5065cdc15d76e322eabd95366d48933a4559df193d3483af0bd3d2216352b6358b0ba370fe590eef40c
7
- data.tar.gz: f94270cdcc1f91d34d4d8d0db6bfde3934e75066a834fc263c8139bfa19272a6a2ef22b354a79d93f6489c08bb3d2fc17ff43335d3a4fd902017f7b2a9c6c52d
6
+ metadata.gz: 4b0f687df578c80f9e79c5cc1e83c864bf7651b419b1f621abf55dfe44d7ffbf02863c5efa0149cb4fa6ba199087f43a8c3666775c4d5ac7b3e58362abf0d05e
7
+ data.tar.gz: 5614945f3bec587644a69ed07c425b4a22c55c2aa99831b16fdb5a54d70a45d3fe3f2b1bd3a8b6e3c78fdd1931cc84b176781f3d1821171f53b9736a7da1667b
data/README.md CHANGED
@@ -6,4 +6,6 @@
6
6
  [![Gem Version](https://badge.fury.io/rb/simple-websocket-vcr.svg)](https://badge.fury.io/rb/simple-websocket-vcr)
7
7
 
8
8
 
9
- TODO: this
9
+ Based on the idea of [vcr](https://github.com/vcr/vcr) project which record the http interactions and store them as files that can be replayed later and simulate the real communication counterpart (mostly server).
10
+
11
+ However, this projects aims on the web socket protocol where normally there is only a single HTTP connection and multiple messages or frames being sent over the channel.
@@ -121,11 +121,12 @@ module WebSocketVCR
121
121
  end
122
122
 
123
123
  class RecordEntry
124
- attr_accessor :operation, :type, :data
124
+ attr_accessor :operation, :event, :type, :data
125
125
 
126
126
  def self.parse(obj, erb_variables = nil)
127
127
  record_entry = RecordEntry.new
128
128
  record_entry.operation = obj['operation']
129
+ record_entry.event = obj['event'] if obj['event']
129
130
  record_entry.type = obj['type'] if obj['type']
130
131
  record_entry.data = obj['data'] if obj['data']
131
132
 
@@ -35,7 +35,7 @@ module WebSocketVCR
35
35
  end
36
36
 
37
37
  def emit(event, *data)
38
- @session.store(operation: 'read', data: data) if @live
38
+ @session.store(operation: 'read', event: event, data: data) if @live
39
39
  super(event, *data)
40
40
  end
41
41
 
@@ -49,12 +49,15 @@ module WebSocketVCR
49
49
 
50
50
  def close
51
51
  if @live
52
- @session.store(operation: 'close')
52
+ @session.store(operation: 'write', event: 'close')
53
53
  @client.close
54
54
  else
55
- sleep 0.5 if @session.head.operation != 'close'
56
- record = @session.next
57
- _ensure_operation('close', record.operation)
55
+ sleep 0.5 if @session.head && @session.head.event != 'close'
56
+ @session.record_entries.size.times do
57
+ record = @session.next
58
+ _ensure_event('close', record.event)
59
+ emit(record.event, record.data) if record.operation == 'read'
60
+ end
58
61
  Thread.kill @thread if @thread
59
62
  @open = false
60
63
  end
@@ -66,7 +69,7 @@ module WebSocketVCR
66
69
  text_data = opt[:type] == :text ? data.dup : Base64.encode64(data.dup)
67
70
  if @live
68
71
  @client.__send__(method, data, opt)
69
- @session.store(operation: 'write', data: text_data)
72
+ @session.store(operation: 'write', event: method, data: text_data)
70
73
  else
71
74
  sleep 0.5 if @session.head.operation != 'write'
72
75
  record = @session.next
@@ -79,16 +82,20 @@ module WebSocketVCR
79
82
  if @live
80
83
  rec = @session
81
84
  @client.on(event, params) do |msg|
82
- data = msg.type.to_s == 'text' ? msg.data : Base64.encode64(msg.data)
83
- rec.store(operation: 'read', type: msg.type, data: data)
85
+ params = { operation: 'read', event: event }
86
+ unless msg.nil?
87
+ data = msg.type.to_s == 'text' ? msg.data : Base64.encode64(msg.data)
88
+ params.merge!(type: msg.type, data: data)
89
+ end
90
+ rec.store(params)
84
91
  yield(msg)
85
92
  end
86
93
  else
87
- wait_for_reads(event) unless @thread && @thread.alive?
94
+ wait_for_reads unless @thread && @thread.alive?
88
95
  end
89
96
  end
90
97
 
91
- def wait_for_reads(event)
98
+ def wait_for_reads
92
99
  @thread = Thread.new do
93
100
  # if the next recorded operation is a 'read', take all the reads until next write
94
101
  # and translate them to the events
@@ -96,15 +103,8 @@ module WebSocketVCR
96
103
  begin
97
104
  if @session.head.operation == 'read'
98
105
  record = @session.next
99
- data = record.data
100
- data = Base64.decode64(data) if record.type != 'text'
101
- data = ::WebSocket::Frame::Data.new(data)
102
106
 
103
- def data.data
104
- self
105
- end
106
-
107
- emit(event, data)
107
+ emit(record.event, parse_data(record))
108
108
  break if __events.empty?
109
109
  else
110
110
  sleep 0.1 # TODO: config
@@ -114,6 +114,18 @@ module WebSocketVCR
114
114
  end
115
115
  end
116
116
 
117
+ def parse_data(record)
118
+ if (data = record.data)
119
+ data = Base64.decode64(data) if record.type != 'text'
120
+ data = ::WebSocket::Frame::Data.new(data)
121
+
122
+ def data.data
123
+ self
124
+ end
125
+ end
126
+ data
127
+ end
128
+
117
129
  def _take_first_read
118
130
  @session.delete_at(@session.index { |record| record.operation == 'read' } || @session.length)
119
131
  end
@@ -123,6 +135,11 @@ module WebSocketVCR
123
135
  fail string unless desired == actual
124
136
  end
125
137
 
138
+ def _ensure_event(desired, actual)
139
+ string = "Expected to '#{desired}' but the next event in recording was '#{actual}'"
140
+ fail string unless desired == actual
141
+ end
142
+
126
143
  def _ensure_data(desired, actual)
127
144
  string = "Expected data to be '#{desired}' but next data in recording was '#{actual}'"
128
145
  fail string unless desired == actual
@@ -1,3 +1,3 @@
1
1
  module WebSocketVCR
2
- VERSION = '0.1.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,11 +1,14 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: WelcomeResponse={"sessionId":"_Q8LZN4jeyX27Qb2qjiz_3HR9Ckoa1S-pHMaJi9q"}
6
7
  - operation: write
8
+ event: send
7
9
  data: something_1
8
10
  - operation: read
11
+ event: message
9
12
  type: text
10
13
  data: 'GenericErrorResponse={"errorMessage":"Failed to process message [?]","stackTrace":"java.lang.IllegalArgumentException:
11
14
  Cannot deserialize: [something_1]\n\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\n\tat
@@ -24,8 +27,10 @@ websocket_interactions:
24
27
  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat
25
28
  java.lang.Thread.run(Thread.java:745)\n"}'
26
29
  - operation: write
30
+ event: send
27
31
  data: something_2
28
32
  - operation: read
33
+ event: message
29
34
  type: text
30
35
  data: 'GenericErrorResponse={"errorMessage":"Failed to process message [?]","stackTrace":"java.lang.IllegalArgumentException:
31
36
  Cannot deserialize: [something_2]\n\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\n\tat
@@ -43,4 +48,5 @@ websocket_interactions:
43
48
  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat
44
49
  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat
45
50
  java.lang.Thread.run(Thread.java:745)\n"}'
46
- - operation: close
51
+ - operation: write
52
+ event: close
@@ -2,29 +2,35 @@
2
2
  [
3
3
  {
4
4
  "operation": "read",
5
+ "event": "message",
5
6
  "type": "text",
6
7
  "data": "WelcomeResponse={\"sessionId\":\"6lLLtFyPAUmpeh3JiSUW3b1D1YN6FTLGHc2Yt8dI\"}"
7
8
  },
8
9
  {
9
10
  "operation": "write",
11
+ "event": "send",
10
12
  "data": "something_1"
11
13
  },
12
14
  {
13
15
  "operation": "read",
16
+ "event": "message",
14
17
  "type": "text",
15
18
  "data": "GenericErrorResponse={\"errorMessage\":\"Failed to process message [?]\",\"stackTrace\":\"java.lang.IllegalArgumentException: Cannot deserialize: [something_1]\\n\\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\\n\\tat org.hawkular.cmdgw.api.ApiDeserializer.deserialize(ApiDeserializer.java:84)\\n\\tat org.hawkular.cmdgw.command.ws.server.AbstractGatewayWebSocket.onMessage(AbstractGatewayWebSocket.java:213)\\n\\tat sun.reflect.GeneratedMethodAccessor686.invoke(Unknown Source)\\n\\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\\n\\tat java.lang.reflect.Method.invoke(Method.java:497)\\n\\tat io.undertow.websockets.jsr.annotated.BoundMethod.invoke(BoundMethod.java:87)\\n\\tat io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$2$1.run(AnnotatedEndpoint.java:150)\\n\\tat io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:553)\\n\\tat io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$2.onMessage(AnnotatedEndpoint.java:145)\\n\\tat io.undertow.websockets.jsr.FrameHandler$7.run(FrameHandler.java:283)\\n\\tat io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:553)\\n\\tat io.undertow.websockets.jsr.ServerWebSocketContainer$5.run(ServerWebSocketContainer.java:538)\\n\\tat io.undertow.websockets.jsr.OrderedExecutor$ExecutorTask.run(OrderedExecutor.java:67)\\n\\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\\n\\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\\n\\tat java.lang.Thread.run(Thread.java:745)\\n\"}"
16
19
  },
17
20
  {
18
21
  "operation": "write",
22
+ "event": "send",
19
23
  "data": "something_2"
20
24
  },
21
25
  {
22
26
  "operation": "read",
27
+ "event": "message",
23
28
  "type": "text",
24
29
  "data": "GenericErrorResponse={\"errorMessage\":\"Failed to process message [?]\",\"stackTrace\":\"java.lang.IllegalArgumentException: Cannot deserialize: [something_2]\\n\\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\\n\\tat org.hawkular.cmdgw.api.ApiDeserializer.deserialize(ApiDeserializer.java:84)\\n\\tat org.hawkular.cmdgw.command.ws.server.AbstractGatewayWebSocket.onMessage(AbstractGatewayWebSocket.java:213)\\n\\tat sun.reflect.GeneratedMethodAccessor686.invoke(Unknown Source)\\n\\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\\n\\tat java.lang.reflect.Method.invoke(Method.java:497)\\n\\tat io.undertow.websockets.jsr.annotated.BoundMethod.invoke(BoundMethod.java:87)\\n\\tat io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$2$1.run(AnnotatedEndpoint.java:150)\\n\\tat io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:553)\\n\\tat io.undertow.websockets.jsr.annotated.AnnotatedEndpoint$2.onMessage(AnnotatedEndpoint.java:145)\\n\\tat io.undertow.websockets.jsr.FrameHandler$7.run(FrameHandler.java:283)\\n\\tat io.undertow.websockets.jsr.ServerWebSocketContainer.invokeEndpointMethod(ServerWebSocketContainer.java:553)\\n\\tat io.undertow.websockets.jsr.ServerWebSocketContainer$5.run(ServerWebSocketContainer.java:538)\\n\\tat io.undertow.websockets.jsr.OrderedExecutor$ExecutorTask.run(OrderedExecutor.java:67)\\n\\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\\n\\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\\n\\tat java.lang.Thread.run(Thread.java:745)\\n\"}"
25
30
  },
26
31
  {
27
- "operation": "close"
32
+ "operation": "write",
33
+ "event": "close"
28
34
  }
29
35
  ]
30
- ]
36
+ ]
@@ -1,11 +1,14 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: WelcomeResponse={"sessionId":"<%= foobar %>"}
6
7
  - operation: write
8
+ event: send
7
9
  data: something_1
8
10
  - operation: read
11
+ event: message
9
12
  type: text
10
13
  data: 'GenericErrorResponse={"errorMessage":"Failed to process message [?]","stackTrace":"java.lang.IllegalArgumentException:
11
14
  Cannot deserialize: [something_1]\n\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\n\tat
@@ -23,8 +26,10 @@ websocket_interactions:
23
26
  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat
24
27
  java.lang.Thread.run(Thread.java:745)\n"}'
25
28
  - operation: write
29
+ event: send
26
30
  data: something_2
27
31
  - operation: read
32
+ event: message
28
33
  type: text
29
34
  data: 'GenericErrorResponse={"errorMessage":"Failed to process message [?]","stackTrace":"java.lang.IllegalArgumentException:
30
35
  Cannot deserialize: [something_2]\n\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\n\tat
@@ -41,4 +46,5 @@ websocket_interactions:
41
46
  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat
42
47
  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat
43
48
  java.lang.Thread.run(Thread.java:745)\n"}'
44
- - operation: close
49
+ - operation: write
50
+ event: close
@@ -1,7 +1,9 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: <%= something %>={"sessionId":"_5_u_6hSDOVe0LlvGyx32CGR-f98iKwHQtjoQKy8"}
6
7
  - operation: write
8
+ event: send
7
9
  data: something_1
@@ -2,12 +2,14 @@
2
2
  [
3
3
  {
4
4
  "operation": "read",
5
+ "event": "message",
5
6
  "type": "text",
6
7
  "data": "WelcomeResponse={\"<%= something %>\":\"I_XSiCb1wcQgARIzJ_jRU8k2-kPVblJuNCxhYBnb\"}"
7
8
  },
8
9
  {
9
10
  "operation": "write",
11
+ "event": "send",
10
12
  "data": "<%= bar %>"
11
13
  }
12
14
  ]
13
- ]
15
+ ]
@@ -1,11 +1,14 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: WelcomeResponse={"<%= something %>":"KOrViCF_93axNx-WyGlhT6yktwqbJIl97mrxQXC5"}
6
7
  - operation: write
8
+ event: send
7
9
  data: something_1
8
10
  - operation: read
11
+ event: message
9
12
  type: text
10
13
  data: 'GenericErrorResponse={"errorMessage":"Failed to process message [?]","stackTrace":"java.lang.IllegalArgumentException:
11
14
  Cannot deserialize: [something_1]\n\tat org.hawkular.cmdgw.api.ApiDeserializer.fromHawkularFormat(ApiDeserializer.java:68)\n\tat
@@ -1,11 +1,15 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: WelcomeResponse={"sessionId":"XQVVtE53wxz1lmMsqz2TbmR68ilFzDxLOOpkKGpd"}
6
7
  - operation: write
8
+ send: message
7
9
  data: something 1
8
10
  - operation: write
11
+ send: message
9
12
  data: something 2
10
13
  - operation: write
14
+ send: message
11
15
  data: something 3
@@ -2,11 +2,13 @@
2
2
  [
3
3
  {
4
4
  "operation": "read",
5
+ "event": "message",
5
6
  "type": "text",
6
7
  "data": "WelcomeResponse={\"sessionId\":\"rfynzN_MQHaFvhedHpqiQj1zFo0hBHsiICU4pmX-\"}"
7
8
  },
8
9
  {
9
- "operation": "close"
10
+ "operation": "write",
11
+ "event": "close"
10
12
  }
11
13
  ]
12
- ]
14
+ ]
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: WelcomeResponse={"sessionId":"3CEro9B5w8IUD4DAaVxRocyKm-rMVXLMlECNwfgD"}
6
- - operation: close
7
+ - operation: write
8
+ event: close
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  websocket_interactions:
3
3
  - - operation: read
4
+ event: message
4
5
  type: text
5
6
  data: WelcomeResponse={"sessionId":"g-YqmCVcqkDqG7KkgzSzhd0qbeoM0fsVheOJ5jx8"}
@@ -0,0 +1,34 @@
1
+ ---
2
+ websocket_interactions:
3
+ - - operation: read
4
+ event: open
5
+ - operation: write
6
+ event: send
7
+ data: hello
8
+ - operation: write
9
+ event: send
10
+ data: how
11
+ - operation: write
12
+ event: send
13
+ data: are
14
+ - operation: write
15
+ event: send
16
+ data: you
17
+ - operation: read
18
+ event: message
19
+ type: text
20
+ data: hello
21
+ - operation: read
22
+ event: message
23
+ type: text
24
+ data: how
25
+ - operation: read
26
+ event: message
27
+ type: text
28
+ data: are
29
+ - operation: read
30
+ event: message
31
+ type: text
32
+ data: you
33
+ - operation: read
34
+ event: close
@@ -0,0 +1,36 @@
1
+ ---
2
+ websocket_interactions:
3
+ - - operation: read
4
+ event: open
5
+ - operation: write
6
+ event: send
7
+ data: hello
8
+ - operation: write
9
+ event: send
10
+ data: how
11
+ - operation: write
12
+ event: send
13
+ data: are
14
+ - operation: write
15
+ event: send
16
+ data: you
17
+ - operation: read
18
+ event: message
19
+ type: text
20
+ data: hello
21
+ - operation: read
22
+ event: message
23
+ type: text
24
+ data: how
25
+ - operation: read
26
+ event: message
27
+ type: text
28
+ data: are
29
+ - operation: read
30
+ event: message
31
+ type: text
32
+ data: you
33
+ - operation: write
34
+ event: close
35
+ - operation: read
36
+ event: close
@@ -319,6 +319,76 @@ describe 'VCR for WS' do
319
319
  end
320
320
  end
321
321
 
322
+ describe 'with multiple kinds of events' do
323
+ it 'works' do
324
+ WebSocketVCR.configure do |c|
325
+ c.hook_uris = ['echo.websocket.org']
326
+ end
327
+ opened = false
328
+ messages = []
329
+ closed = false
330
+ WebSocketVCR.record(example, self) do
331
+ url = 'ws://echo.websocket.org'
332
+ c = WebSocket::Client::Simple.connect url do |client|
333
+ client.on(:open) do
334
+ opened = true
335
+ end
336
+ client.on(:message) do |event|
337
+ messages << event.data
338
+ end
339
+ client.on(:close) do
340
+ closed = true
341
+ end
342
+ end
343
+ sleep 5 if WebSocketVCR.live?
344
+ c.send('hello')
345
+ c.send('how')
346
+ c.send('are')
347
+ c.send('you')
348
+ sleep 20 if WebSocketVCR.live?
349
+ c.close
350
+ expect(c.open?).to be false
351
+ end
352
+ expect(opened).to eq(true)
353
+ expect(messages).to eq(%w(hello how are you))
354
+ expect(closed).to eq(true)
355
+ end
356
+ end
357
+
358
+ describe 'when server closes the connection' do
359
+ it 'works' do
360
+ WebSocketVCR.configure do |c|
361
+ c.hook_uris = ['echo.websocket.org']
362
+ end
363
+ opened = false
364
+ messages = []
365
+ closed = false
366
+ cassette_path = 'VCR_for_WS/when_server_closes_connection_works'
367
+ WebSocketVCR.use_cassette(cassette_path) do
368
+ url = 'ws://echo.websocket.org'
369
+ c = WebSocket::Client::Simple.connect url do |client|
370
+ client.on(:open) do
371
+ opened = true
372
+ end
373
+ client.on(:message) do |event|
374
+ messages << event.data
375
+ end
376
+ client.on(:close) do
377
+ closed = true
378
+ end
379
+ end
380
+ c.send('hello')
381
+ c.send('how')
382
+ c.send('are')
383
+ c.send('you')
384
+ expect { c.close }.not_to raise_error
385
+ end
386
+ expect(opened).to eq(true)
387
+ expect(messages).to eq(%w(hello how are you))
388
+ expect(closed).to eq(true)
389
+ end
390
+ end
391
+
322
392
  describe 'version' do
323
393
  it 'should return the major, minor and micro components correctly' do
324
394
  expect(WebSocketVCR.version).to include(WebSocketVCR.version.major.to_s)
@@ -332,7 +402,7 @@ describe 'VCR for WS' do
332
402
  expect(File.readlines(file_path).grep(/how/).size).to eq(2)
333
403
  expect(File.readlines(file_path).grep(/are/).size).to eq(2)
334
404
  expect(File.readlines(file_path).grep(/you/).size).to eq(2)
335
- expect(File.readlines(file_path).grep(/write/).size).to eq(4)
405
+ expect(File.readlines(file_path).grep(/write/).size).to eq(5)
336
406
  expect(File.readlines(file_path).grep(/read/).size).to eq(4)
337
407
  expect(File.readlines(file_path).grep(/close/).size).to eq(1)
338
408
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-websocket-vcr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jirka Kremser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-14 00:00:00.000000000 Z
11
+ date: 2019-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-client-simple
@@ -162,6 +162,8 @@ files:
162
162
  - spec/fixtures/vcr_cassettes/VCR_for_WS/should_record_the_closing_event(json).json
163
163
  - spec/fixtures/vcr_cassettes/VCR_for_WS/should_record_the_closing_event(yaml).yml
164
164
  - spec/fixtures/vcr_cassettes/VCR_for_WS/should_record_the_very_first_message_caught_on_the_client_yielded_by_the_connect_method.yml
165
+ - spec/fixtures/vcr_cassettes/VCR_for_WS/when_server_closes_connection_works.yml
166
+ - spec/fixtures/vcr_cassettes/VCR_for_WS/with_multiple_kinds_of_events_works.yml
165
167
  - spec/spec_helper.rb
166
168
  - spec/vcr_spec.rb
167
169
  homepage: https://github.com/Jiri-Kremser/simple-websocket-vcr
@@ -184,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
186
  version: '0'
185
187
  requirements: []
186
188
  rubyforge_project:
187
- rubygems_version: 2.6.12
189
+ rubygems_version: 2.7.6
188
190
  signing_key:
189
191
  specification_version: 4
190
192
  summary: simple_websocket_vcr is VCR add-on for websockets.
@@ -204,5 +206,7 @@ test_files:
204
206
  - spec/fixtures/vcr_cassettes/VCR_for_WS/should_record_the_closing_event(json).json
205
207
  - spec/fixtures/vcr_cassettes/VCR_for_WS/should_record_the_closing_event(yaml).yml
206
208
  - spec/fixtures/vcr_cassettes/VCR_for_WS/should_record_the_very_first_message_caught_on_the_client_yielded_by_the_connect_method.yml
209
+ - spec/fixtures/vcr_cassettes/VCR_for_WS/when_server_closes_connection_works.yml
210
+ - spec/fixtures/vcr_cassettes/VCR_for_WS/with_multiple_kinds_of_events_works.yml
207
211
  - spec/spec_helper.rb
208
212
  - spec/vcr_spec.rb