pubnub 3.5.8 → 3.5.12
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.
Potentially problematic release.
This version of pubnub might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG +7 -0
- data/Gemfile.lock +1 -1
- data/README.md +3 -3
- data/VERSION +1 -1
- data/examples/chaos/tmp/pids/passenger.3000.pid.lock +0 -0
- data/fixtures/vcr_cassettes/eof_subscribe.yml +85 -0
- data/fixtures/vcr_cassettes/grant-multiple-channels.yml +45 -0
- data/fixtures/vcr_cassettes/heartbeat-non200.yml +173 -25
- data/lib/pubnub/client.rb +4 -0
- data/lib/pubnub/event.rb +50 -29
- data/lib/pubnub/events/grant.rb +1 -1
- data/lib/pubnub/events/publish.rb +1 -0
- data/lib/pubnub/events/revoke.rb +1 -1
- data/lib/pubnub/pam.rb +2 -2
- data/lib/pubnub/version.rb +1 -1
- data/pubnub.gemspec +2 -2
- data/spec/lib/eof_error_spec.rb +48 -0
- data/spec/lib/integration/audit_dpc_spec.rb +544 -0
- data/spec/lib/integration/global_here_now_dpc_spec.rb +541 -0
- data/spec/lib/integration/grant_dpc_spec.rb +555 -0
- data/spec/lib/integration/grant_spec.rb +25 -0
- data/spec/lib/integration/here_now_dpc_spec.rb +543 -0
- data/spec/lib/integration/history_dpc_spec.rb +541 -0
- data/spec/lib/integration/leave_dpc_spec.rb +540 -0
- data/spec/lib/integration/presence_dpc_spec.rb +557 -0
- data/spec/lib/integration/publish_dpc_spec.rb +1877 -0
- data/spec/lib/integration/revoke_dpc_spec.rb +555 -0
- data/spec/lib/integration/subscribe_dpc_spec.rb +564 -0
- data/spec/lib/integration/time_dpc_spec.rb +541 -0
- data/spec/lib/integration/v3_presence_dpc_spec.rb +557 -0
- metadata +18 -2
@@ -0,0 +1,541 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "#here_now" do
|
4
|
+
before(:each) do
|
5
|
+
|
6
|
+
EM.stop if EM.reactor_running?
|
7
|
+
while EM.reactor_running? do end
|
8
|
+
sleep(0.1)
|
9
|
+
|
10
|
+
@response_output = StringIO.new
|
11
|
+
@message_output = StringIO.new
|
12
|
+
|
13
|
+
@callback = lambda { |envelope|
|
14
|
+
$logger.debug 'FIRING CALLBACK FROM TEST'
|
15
|
+
@response_output.write envelope.response
|
16
|
+
@message_output.write envelope.msg
|
17
|
+
@after_callback = true
|
18
|
+
}
|
19
|
+
|
20
|
+
@error_callback = lambda { |envelope|
|
21
|
+
$logger.debug 'FIRING ERROR CALLBACK FROM TEST'
|
22
|
+
@response_output.write envelope.response
|
23
|
+
@message_output.write envelope.msg
|
24
|
+
@after_error_callback = true
|
25
|
+
}
|
26
|
+
|
27
|
+
@pn = Pubnub.new(:disable_persistent_connection => true, :max_retries => 0, :subscribe_key => 'demo-36', :publish_key => 'demo-36', :auth_key => :demoish_authkey, :secret_key => 'some_secret_key', :error_callback => @error_callback)
|
28
|
+
@pn.uuid = 'rubytests'
|
29
|
+
|
30
|
+
end
|
31
|
+
context "uses ssl" do
|
32
|
+
before(:each) { @ssl = true }
|
33
|
+
context "passess callback as block" do
|
34
|
+
context "gets valid json in response" do
|
35
|
+
context "gets status 200 in response" do
|
36
|
+
context "uses sync connection" do
|
37
|
+
it 'works fine' do
|
38
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-200-sync", :record => :none) do
|
39
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
40
|
+
|
41
|
+
@after_callback.should eq true
|
42
|
+
@response_output.seek 0
|
43
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
44
|
+
@message_output.seek 0
|
45
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context "uses async connection" do
|
50
|
+
it 'works fine' do
|
51
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-200-async", :record => :none) do
|
52
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
53
|
+
|
54
|
+
eventually do
|
55
|
+
@after_callback.should eq true
|
56
|
+
@response_output.seek 0
|
57
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
58
|
+
@message_output.seek 0
|
59
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
context "gets status non-200 in response" do
|
66
|
+
context "uses sync connection" do
|
67
|
+
it 'works fine' do
|
68
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-non-200-sync", :record => :none) do
|
69
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
70
|
+
|
71
|
+
@after_error_callback.should eq true
|
72
|
+
@response_output.seek 0
|
73
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
74
|
+
@message_output.seek 0
|
75
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
context "uses async connection" do
|
80
|
+
it 'works fine' do
|
81
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-non-200-sync", :record => :none) do
|
82
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
83
|
+
|
84
|
+
eventually do
|
85
|
+
@after_error_callback.should eq true
|
86
|
+
@response_output.seek 0
|
87
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
88
|
+
@message_output.seek 0
|
89
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
context "gets invalid json in response" do
|
97
|
+
context "gets status 200 in response" do
|
98
|
+
context "uses sync connection" do
|
99
|
+
it 'works fine' do
|
100
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-200-sync", :record => :none) do
|
101
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
102
|
+
|
103
|
+
@after_error_callback.should eq true
|
104
|
+
@response_output.seek 0
|
105
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
106
|
+
@message_output.seek 0
|
107
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
context "uses async connection" do
|
112
|
+
it 'works fine' do
|
113
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-200-sync", :record => :none) do
|
114
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
115
|
+
|
116
|
+
eventually do
|
117
|
+
@after_error_callback.should eq true
|
118
|
+
@response_output.seek 0
|
119
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
120
|
+
@message_output.seek 0
|
121
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
context "gets status non-200 in response" do
|
128
|
+
context "uses sync connection" do
|
129
|
+
it 'works fine' do
|
130
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-non-200-sync", :record => :none) do
|
131
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
132
|
+
|
133
|
+
@after_error_callback.should eq true
|
134
|
+
@response_output.seek 0
|
135
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
136
|
+
@message_output.seek 0
|
137
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
context "uses async connection" do
|
142
|
+
it 'works fine' do
|
143
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-non-200-sync", :record => :none) do
|
144
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
145
|
+
|
146
|
+
eventually do
|
147
|
+
@after_error_callback.should eq true
|
148
|
+
@response_output.seek 0
|
149
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
150
|
+
@message_output.seek 0
|
151
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
context "passess callback as parameter" do
|
160
|
+
context "gets valid json in response" do
|
161
|
+
context "gets status 200 in response" do
|
162
|
+
context "uses sync connection" do
|
163
|
+
it 'works fine' do
|
164
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-200-sync", :record => :none) do
|
165
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
166
|
+
|
167
|
+
@after_callback.should eq true
|
168
|
+
@response_output.seek 0
|
169
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
170
|
+
@message_output.seek 0
|
171
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
context "uses async connection" do
|
176
|
+
it 'works fine' do
|
177
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-200-async", :record => :none) do
|
178
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
179
|
+
|
180
|
+
eventually do
|
181
|
+
@after_callback.should eq true
|
182
|
+
@response_output.seek 0
|
183
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
184
|
+
@message_output.seek 0
|
185
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
context "gets status non-200 in response" do
|
192
|
+
context "uses sync connection" do
|
193
|
+
it 'works fine' do
|
194
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-non-200-sync", :record => :none) do
|
195
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
196
|
+
|
197
|
+
@after_error_callback.should eq true
|
198
|
+
@response_output.seek 0
|
199
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
200
|
+
@message_output.seek 0
|
201
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
context "uses async connection" do
|
206
|
+
it 'works fine' do
|
207
|
+
VCR.use_cassette("here_now_global-ssl-block-valid-non-200-sync", :record => :none) do
|
208
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
209
|
+
|
210
|
+
eventually do
|
211
|
+
@after_error_callback.should eq true
|
212
|
+
@response_output.seek 0
|
213
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
214
|
+
@message_output.seek 0
|
215
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
context "gets invalid json in response" do
|
223
|
+
context "gets status 200 in response" do
|
224
|
+
context "uses sync connection" do
|
225
|
+
it 'works fine' do
|
226
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-200-sync", :record => :none) do
|
227
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
228
|
+
|
229
|
+
@after_error_callback.should eq true
|
230
|
+
@response_output.seek 0
|
231
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
232
|
+
@message_output.seek 0
|
233
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
context "uses async connection" do
|
238
|
+
it 'works fine' do
|
239
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-200-sync", :record => :none) do
|
240
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
241
|
+
|
242
|
+
eventually do
|
243
|
+
@after_error_callback.should eq true
|
244
|
+
@response_output.seek 0
|
245
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
246
|
+
@message_output.seek 0
|
247
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
context "gets status non-200 in response" do
|
254
|
+
context "uses sync connection" do
|
255
|
+
it 'works fine' do
|
256
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-non-200-sync", :record => :none) do
|
257
|
+
@pn.here_now(:ssl => true, :http_sync => true, :channel => "demo", :callback => @callback)
|
258
|
+
|
259
|
+
@after_error_callback.should eq true
|
260
|
+
@response_output.seek 0
|
261
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
262
|
+
@message_output.seek 0
|
263
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
context "uses async connection" do
|
268
|
+
it 'works fine' do
|
269
|
+
VCR.use_cassette("here_now_global-ssl-block-invalid-non-200-sync", :record => :none) do
|
270
|
+
@pn.here_now(:ssl => true, :http_sync => false, :channel => "demo", :callback => @callback)
|
271
|
+
|
272
|
+
eventually do
|
273
|
+
@after_error_callback.should eq true
|
274
|
+
@response_output.seek 0
|
275
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
276
|
+
@message_output.seek 0
|
277
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
context "uses non-ssl" do
|
287
|
+
before(:each) { @ssl = false }
|
288
|
+
context "passess callback as block" do
|
289
|
+
context "gets valid json in response" do
|
290
|
+
context "gets status 200 in response" do
|
291
|
+
context "uses sync connection" do
|
292
|
+
it 'works fine' do
|
293
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-200-sync", :record => :none) do
|
294
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
295
|
+
|
296
|
+
@after_callback.should eq true
|
297
|
+
@response_output.seek 0
|
298
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
299
|
+
@message_output.seek 0
|
300
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
304
|
+
context "uses async connection" do
|
305
|
+
it 'works fine' do
|
306
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-200-sync", :record => :none) do
|
307
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
308
|
+
|
309
|
+
eventually do
|
310
|
+
@after_callback.should eq true
|
311
|
+
@response_output.seek 0
|
312
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
313
|
+
@message_output.seek 0
|
314
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|
318
|
+
end
|
319
|
+
end
|
320
|
+
context "gets status non-200 in response" do
|
321
|
+
context "uses sync connection" do
|
322
|
+
it 'works fine' do
|
323
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-non-200-sync", :record => :none) do
|
324
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
325
|
+
|
326
|
+
@after_error_callback.should eq true
|
327
|
+
@response_output.seek 0
|
328
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
329
|
+
@message_output.seek 0
|
330
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
331
|
+
end
|
332
|
+
end
|
333
|
+
end
|
334
|
+
context "uses async connection" do
|
335
|
+
it 'works fine' do
|
336
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-non-200-sync", :record => :none) do
|
337
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
338
|
+
|
339
|
+
eventually do
|
340
|
+
@after_error_callback.should eq true
|
341
|
+
@response_output.seek 0
|
342
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
343
|
+
@message_output.seek 0
|
344
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
context "gets invalid json in response" do
|
352
|
+
context "gets status 200 in response" do
|
353
|
+
context "uses sync connection" do
|
354
|
+
it 'works fine' do
|
355
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-200-sync", :record => :none) do
|
356
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
357
|
+
|
358
|
+
@after_error_callback.should eq true
|
359
|
+
@response_output.seek 0
|
360
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
361
|
+
@message_output.seek 0
|
362
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
366
|
+
context "uses async connection" do
|
367
|
+
it 'works fine' do
|
368
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-200-sync", :record => :none) do
|
369
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
370
|
+
|
371
|
+
eventually do
|
372
|
+
@after_error_callback.should eq true
|
373
|
+
@response_output.seek 0
|
374
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
375
|
+
@message_output.seek 0
|
376
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
377
|
+
end
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
381
|
+
end
|
382
|
+
context "gets status non-200 in response" do
|
383
|
+
context "uses sync connection" do
|
384
|
+
it 'works fine' do
|
385
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-non-200-sync", :record => :none) do
|
386
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
387
|
+
|
388
|
+
@after_error_callback.should eq true
|
389
|
+
@response_output.seek 0
|
390
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
391
|
+
@message_output.seek 0
|
392
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
393
|
+
end
|
394
|
+
end
|
395
|
+
end
|
396
|
+
context "uses async connection" do
|
397
|
+
it 'works fine' do
|
398
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-non-200-sync", :record => :none) do
|
399
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
400
|
+
|
401
|
+
eventually do
|
402
|
+
@after_error_callback.should eq true
|
403
|
+
@response_output.seek 0
|
404
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
405
|
+
@message_output.seek 0
|
406
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
407
|
+
end
|
408
|
+
end
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|
414
|
+
context "passess callback as parameter" do
|
415
|
+
context "gets valid json in response" do
|
416
|
+
context "gets status 200 in response" do
|
417
|
+
context "uses sync connection" do
|
418
|
+
it 'works fine' do
|
419
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-200-sync", :record => :none) do
|
420
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
421
|
+
|
422
|
+
@after_callback.should eq true
|
423
|
+
@response_output.seek 0
|
424
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
425
|
+
@message_output.seek 0
|
426
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
427
|
+
end
|
428
|
+
end
|
429
|
+
end
|
430
|
+
context "uses async connection" do
|
431
|
+
it 'works fine' do
|
432
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-200-sync", :record => :none) do
|
433
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
434
|
+
|
435
|
+
eventually do
|
436
|
+
@after_callback.should eq true
|
437
|
+
@response_output.seek 0
|
438
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
439
|
+
@message_output.seek 0
|
440
|
+
@message_output.read.should eq '{"status"=>200, "message"=>"OK", "service"=>"Presence", "uuids"=>[], "occupancy"=>0}'
|
441
|
+
end
|
442
|
+
end
|
443
|
+
end
|
444
|
+
end
|
445
|
+
end
|
446
|
+
context "gets status non-200 in response" do
|
447
|
+
context "uses sync connection" do
|
448
|
+
it 'works fine' do
|
449
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-non-200-sync", :record => :none) do
|
450
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
451
|
+
|
452
|
+
@after_error_callback.should eq true
|
453
|
+
@response_output.seek 0
|
454
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
455
|
+
@message_output.seek 0
|
456
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
457
|
+
end
|
458
|
+
end
|
459
|
+
end
|
460
|
+
context "uses async connection" do
|
461
|
+
it 'works fine' do
|
462
|
+
VCR.use_cassette("here_now_global-nonssl-block-valid-non-200-sync", :record => :none) do
|
463
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
464
|
+
|
465
|
+
eventually do
|
466
|
+
@after_error_callback.should eq true
|
467
|
+
@response_output.seek 0
|
468
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0}'
|
469
|
+
@message_output.seek 0
|
470
|
+
@message_output.read.should eq '[0,"Non 2xx server response."]'
|
471
|
+
end
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
475
|
+
end
|
476
|
+
end
|
477
|
+
context "gets invalid json in response" do
|
478
|
+
context "gets status 200 in response" do
|
479
|
+
context "uses sync connection" do
|
480
|
+
it 'works fine' do
|
481
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-200-sync", :record => :none) do
|
482
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
483
|
+
|
484
|
+
@after_error_callback.should eq true
|
485
|
+
@response_output.seek 0
|
486
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
487
|
+
@message_output.seek 0
|
488
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
489
|
+
end
|
490
|
+
end
|
491
|
+
end
|
492
|
+
context "uses async connection" do
|
493
|
+
it 'works fine' do
|
494
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-200-sync", :record => :none) do
|
495
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
496
|
+
|
497
|
+
eventually do
|
498
|
+
@after_error_callback.should eq true
|
499
|
+
@response_output.seek 0
|
500
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
501
|
+
@message_output.seek 0
|
502
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
503
|
+
end
|
504
|
+
end
|
505
|
+
end
|
506
|
+
end
|
507
|
+
end
|
508
|
+
context "gets status non-200 in response" do
|
509
|
+
context "uses sync connection" do
|
510
|
+
it 'works fine' do
|
511
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-non-200-sync", :record => :none) do
|
512
|
+
@pn.here_now(:http_sync => true, :channel => "demo", :callback => @callback)
|
513
|
+
|
514
|
+
@after_error_callback.should eq true
|
515
|
+
@response_output.seek 0
|
516
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
517
|
+
@message_output.seek 0
|
518
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
519
|
+
end
|
520
|
+
end
|
521
|
+
end
|
522
|
+
context "uses async connection" do
|
523
|
+
it 'works fine' do
|
524
|
+
VCR.use_cassette("here_now_global-nonssl-block-invalid-non-200-sync", :record => :none) do
|
525
|
+
@pn.here_now(:http_sync => false, :channel => "demo", :callback => @callback)
|
526
|
+
|
527
|
+
eventually do
|
528
|
+
@after_error_callback.should eq true
|
529
|
+
@response_output.seek 0
|
530
|
+
@response_output.read.should eq '{"status": 200, "message": "OK", "service": "Presence", "uuids": [], "occupancy": 0'
|
531
|
+
@message_output.seek 0
|
532
|
+
@message_output.read.should eq '[0,"Invalid JSON in response."]'
|
533
|
+
end
|
534
|
+
end
|
535
|
+
end
|
536
|
+
end
|
537
|
+
end
|
538
|
+
end
|
539
|
+
end
|
540
|
+
end
|
541
|
+
end
|