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,1877 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe '#publish' do
|
4
|
+
before(:each) do
|
5
|
+
@envelopes = Array.new
|
6
|
+
@error_envelopes = Array.new
|
7
|
+
|
8
|
+
@callback = lambda do |envelope|
|
9
|
+
@envelopes << envelope
|
10
|
+
end
|
11
|
+
|
12
|
+
@error_callback = lambda do |envelope|
|
13
|
+
@error_envelopes << envelope
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'uses http' do
|
18
|
+
context 'with auth_key provided' do
|
19
|
+
context 'without encrypting message' do
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
@pubnub = Pubnub.new(
|
23
|
+
:max_retries => 0,
|
24
|
+
:subscribe_key => :demo,
|
25
|
+
:publish_key => :demo,
|
26
|
+
:auth_key => :demoish_authkey,
|
27
|
+
:secret_key => 'some_secret_key',
|
28
|
+
:error_callback => @error_callback,
|
29
|
+
:disable_persistent_connection => true
|
30
|
+
)
|
31
|
+
|
32
|
+
@pubnub.uuid = 'tester'
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'gets status 200 response' do
|
36
|
+
context 'with valid json' do
|
37
|
+
context 'its asynchronous' do
|
38
|
+
it 'publishes valid message' do
|
39
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-200-valid', :record => :none) do
|
40
|
+
|
41
|
+
@pubnub.publish(
|
42
|
+
:message => {:text => 'sometext'},
|
43
|
+
:channel => 'ruby_demo_channel',
|
44
|
+
:callback => @callback
|
45
|
+
)
|
46
|
+
|
47
|
+
eventually do
|
48
|
+
@envelopes.size.should eq 1
|
49
|
+
@envelopes.first.response_message.should eq 'Sent'
|
50
|
+
@envelopes.first.status.should eq 200
|
51
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
52
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
53
|
+
@envelopes.first.timetoken.blank?.should eq false
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'its synchronous' do
|
61
|
+
it 'publishes valid message' do
|
62
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-200-valid', :record => :none) do
|
63
|
+
|
64
|
+
@pubnub.publish(
|
65
|
+
:message => {:text => 'sometext'},
|
66
|
+
:channel => 'ruby_demo_channel',
|
67
|
+
:callback => @callback,
|
68
|
+
:http_sync => true
|
69
|
+
)
|
70
|
+
|
71
|
+
@envelopes.size.should eq 1
|
72
|
+
@envelopes.first.response_message.should eq 'Sent'
|
73
|
+
@envelopes.first.status.should eq 200
|
74
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
75
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
76
|
+
@envelopes.first.timetoken.blank?.should eq false
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'with invalid json' do
|
84
|
+
context 'its asynchronous' do
|
85
|
+
it 'handles invalid json gracefully' do
|
86
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-200-invalid', :record => :none) do
|
87
|
+
|
88
|
+
@pubnub.publish(
|
89
|
+
:message => {:text => 'sometext'},
|
90
|
+
:channel => 'ruby_demo_channel',
|
91
|
+
:callback => @callback
|
92
|
+
)
|
93
|
+
|
94
|
+
eventually do
|
95
|
+
@envelopes.size.should eq 0
|
96
|
+
@error_envelopes.size.should eq 1
|
97
|
+
@error_envelopes.first.response_message.should eq nil
|
98
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
99
|
+
@error_envelopes.first.status.should eq 200
|
100
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
101
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
102
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'its synchronous' do
|
110
|
+
it 'handles invalid json gracefully' do
|
111
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-200-invalid', :record => :none) do
|
112
|
+
|
113
|
+
@pubnub.publish(
|
114
|
+
:message => {:text => 'sometext'},
|
115
|
+
:channel => 'ruby_demo_channel',
|
116
|
+
:callback => @callback,
|
117
|
+
:http_sync => true
|
118
|
+
)
|
119
|
+
|
120
|
+
@envelopes.size.should eq 0
|
121
|
+
@error_envelopes.size.should eq 1
|
122
|
+
@error_envelopes.first.response_message.should eq nil
|
123
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
124
|
+
@error_envelopes.first.status.should eq 200
|
125
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
126
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
127
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
128
|
+
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context 'gets status non200 response' do
|
136
|
+
context 'with valid json' do
|
137
|
+
context 'its asynchronous' do
|
138
|
+
it 'handles non200 response gracefully' do
|
139
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-non200-valid', :record => :none) do
|
140
|
+
|
141
|
+
@pubnub.publish(
|
142
|
+
:message => {:text => 'sometext'},
|
143
|
+
:channel => 'ruby_demo_channel',
|
144
|
+
:callback => @callback
|
145
|
+
)
|
146
|
+
|
147
|
+
eventually do
|
148
|
+
@envelopes.size.should eq 0
|
149
|
+
@error_envelopes.size.should eq 1
|
150
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
151
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
152
|
+
@error_envelopes.first.status.should eq 500
|
153
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
154
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
155
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context 'its synchronous' do
|
163
|
+
it 'handles non200 response gracefully' do
|
164
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-non200-valid', :record => :none) do
|
165
|
+
|
166
|
+
@pubnub.publish(
|
167
|
+
:message => {:text => 'sometext'},
|
168
|
+
:channel => 'ruby_demo_channel',
|
169
|
+
:callback => @callback,
|
170
|
+
:http_sync => true
|
171
|
+
)
|
172
|
+
|
173
|
+
@envelopes.size.should eq 0
|
174
|
+
@error_envelopes.size.should eq 1
|
175
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
176
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
177
|
+
@error_envelopes.first.status.should eq 500
|
178
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
179
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
180
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
181
|
+
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'with invalid json' do
|
188
|
+
context 'its asynchronous' do
|
189
|
+
it 'handles invalid json and non200 response gracefully' do
|
190
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-non200-invalid', :record => :none) do
|
191
|
+
|
192
|
+
@pubnub.publish(
|
193
|
+
:message => {:text => 'sometext'},
|
194
|
+
:channel => 'ruby_demo_channel',
|
195
|
+
:callback => @callback
|
196
|
+
)
|
197
|
+
|
198
|
+
eventually do
|
199
|
+
@envelopes.size.should eq 0
|
200
|
+
@error_envelopes.size.should eq 1
|
201
|
+
@error_envelopes.first.response_message.should eq nil
|
202
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
203
|
+
@error_envelopes.first.status.should eq 500
|
204
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
205
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
206
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
207
|
+
end
|
208
|
+
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
context 'its synchronous' do
|
214
|
+
it 'handles invalid json and non200 response gracefully' do
|
215
|
+
VCR.use_cassette('new_ones/publish/publish-http-auth_key-non200-invalid', :record => :none) do
|
216
|
+
|
217
|
+
@pubnub.publish(
|
218
|
+
:message => {:text => 'sometext'},
|
219
|
+
:channel => 'ruby_demo_channel',
|
220
|
+
:callback => @callback,
|
221
|
+
:http_sync => true
|
222
|
+
)
|
223
|
+
|
224
|
+
@envelopes.size.should eq 0
|
225
|
+
@error_envelopes.size.should eq 1
|
226
|
+
@error_envelopes.first.response_message.should eq nil
|
227
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
228
|
+
@error_envelopes.first.status.should eq 500
|
229
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
230
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
231
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
232
|
+
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
context 'with encrypting message' do
|
241
|
+
|
242
|
+
before(:each) do
|
243
|
+
@pubnub = Pubnub.new(
|
244
|
+
:max_retries => 0,
|
245
|
+
:subscribe_key => :demo,
|
246
|
+
:publish_key => :demo,
|
247
|
+
:auth_key => :demoish_authkey,
|
248
|
+
:secret_key => 'some_secret_key',
|
249
|
+
:cipher_key => 'secret',
|
250
|
+
:error_callback => @error_callback,
|
251
|
+
:disable_persistent_connection => true
|
252
|
+
)
|
253
|
+
|
254
|
+
@pubnub.uuid = 'tester'
|
255
|
+
end
|
256
|
+
|
257
|
+
context 'gets status 200 response' do
|
258
|
+
context 'with valid json' do
|
259
|
+
context 'its asynchronous' do
|
260
|
+
it 'publishes valid message' do
|
261
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-200-valid', :record => :none) do
|
262
|
+
|
263
|
+
@pubnub.publish(
|
264
|
+
:message => {:text => 'sometext'},
|
265
|
+
:channel => 'ruby_demo_channel',
|
266
|
+
:callback => @callback
|
267
|
+
)
|
268
|
+
|
269
|
+
eventually do
|
270
|
+
@envelopes.size.should eq 1
|
271
|
+
@envelopes.first.response_message.should eq 'Sent'
|
272
|
+
@envelopes.first.status.should eq 200
|
273
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
274
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
275
|
+
@envelopes.first.timetoken.blank?.should eq false
|
276
|
+
end
|
277
|
+
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
context 'its synchronous' do
|
283
|
+
it 'publishes valid message' do
|
284
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-200-valid', :record => :none) do
|
285
|
+
|
286
|
+
@pubnub.publish(
|
287
|
+
:message => {:text => 'sometext'},
|
288
|
+
:channel => 'ruby_demo_channel',
|
289
|
+
:callback => @callback,
|
290
|
+
:http_sync => true
|
291
|
+
)
|
292
|
+
|
293
|
+
@envelopes.size.should eq 1
|
294
|
+
@envelopes.first.response_message.should eq 'Sent'
|
295
|
+
@envelopes.first.status.should eq 200
|
296
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
297
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
298
|
+
@envelopes.first.timetoken.blank?.should eq false
|
299
|
+
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
context 'with invalid json' do
|
306
|
+
context 'its asynchronous' do
|
307
|
+
it 'handles invalid json gracefully' do
|
308
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-200-invalid', :record => :none) do
|
309
|
+
|
310
|
+
@pubnub.publish(
|
311
|
+
:message => {:text => 'sometext'},
|
312
|
+
:channel => 'ruby_demo_channel',
|
313
|
+
:callback => @callback
|
314
|
+
)
|
315
|
+
|
316
|
+
eventually do
|
317
|
+
@envelopes.size.should eq 0
|
318
|
+
@error_envelopes.size.should eq 1
|
319
|
+
@error_envelopes.first.response_message.should eq nil
|
320
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
321
|
+
@error_envelopes.first.status.should eq 200
|
322
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
323
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
324
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
325
|
+
end
|
326
|
+
|
327
|
+
end
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
context 'its synchronous' do
|
332
|
+
it 'handles invalid json gracefully' do
|
333
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-200-invalid', :record => :none) do
|
334
|
+
|
335
|
+
@pubnub.publish(
|
336
|
+
:message => {:text => 'sometext'},
|
337
|
+
:channel => 'ruby_demo_channel',
|
338
|
+
:callback => @callback,
|
339
|
+
:http_sync => true
|
340
|
+
)
|
341
|
+
|
342
|
+
@envelopes.size.should eq 0
|
343
|
+
@error_envelopes.size.should eq 1
|
344
|
+
@error_envelopes.first.response_message.should eq nil
|
345
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
346
|
+
@error_envelopes.first.status.should eq 200
|
347
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
348
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
349
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
350
|
+
|
351
|
+
end
|
352
|
+
end
|
353
|
+
end
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
context 'gets status non200 response' do
|
358
|
+
context 'with valid json' do
|
359
|
+
context 'its asynchronous' do
|
360
|
+
it 'handles non200 response gracefully' do
|
361
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-non200-valid', :record => :none) do
|
362
|
+
|
363
|
+
@pubnub.publish(
|
364
|
+
:message => {:text => 'sometext'},
|
365
|
+
:channel => 'ruby_demo_channel',
|
366
|
+
:callback => @callback
|
367
|
+
)
|
368
|
+
|
369
|
+
eventually do
|
370
|
+
@envelopes.size.should eq 0
|
371
|
+
@error_envelopes.size.should eq 1
|
372
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
373
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
374
|
+
@error_envelopes.first.status.should eq 500
|
375
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
376
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
377
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
378
|
+
end
|
379
|
+
|
380
|
+
end
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
context 'its synchronous' do
|
385
|
+
it 'handles non200 response gracefully' do
|
386
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-non200-valid', :record => :none) do
|
387
|
+
|
388
|
+
@pubnub.publish(
|
389
|
+
:message => {:text => 'sometext'},
|
390
|
+
:channel => 'ruby_demo_channel',
|
391
|
+
:callback => @callback,
|
392
|
+
:http_sync => true
|
393
|
+
)
|
394
|
+
|
395
|
+
@envelopes.size.should eq 0
|
396
|
+
@error_envelopes.size.should eq 1
|
397
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
398
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
399
|
+
@error_envelopes.first.status.should eq 500
|
400
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
401
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
402
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
403
|
+
|
404
|
+
end
|
405
|
+
end
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
context 'with invalid json' do
|
410
|
+
context 'its asynchronous' do
|
411
|
+
it 'handles invalid json and non200 response gracefully' do
|
412
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-non200-invalid', :record => :none) do
|
413
|
+
|
414
|
+
@pubnub.publish(
|
415
|
+
:message => {:text => 'sometext'},
|
416
|
+
:channel => 'ruby_demo_channel',
|
417
|
+
:callback => @callback
|
418
|
+
)
|
419
|
+
|
420
|
+
eventually do
|
421
|
+
@envelopes.size.should eq 0
|
422
|
+
@error_envelopes.size.should eq 1
|
423
|
+
@error_envelopes.first.response_message.should eq nil
|
424
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
425
|
+
@error_envelopes.first.status.should eq 500
|
426
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
427
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
428
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
429
|
+
end
|
430
|
+
|
431
|
+
end
|
432
|
+
end
|
433
|
+
end
|
434
|
+
|
435
|
+
context 'its synchronous' do
|
436
|
+
it 'handles invalid json and non200 response gracefully' do
|
437
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-auth_key-non200-invalid', :record => :none) do
|
438
|
+
|
439
|
+
@pubnub.publish(
|
440
|
+
:message => {:text => 'sometext'},
|
441
|
+
:channel => 'ruby_demo_channel',
|
442
|
+
:callback => @callback,
|
443
|
+
:http_sync => true
|
444
|
+
)
|
445
|
+
|
446
|
+
@envelopes.size.should eq 0
|
447
|
+
@error_envelopes.size.should eq 1
|
448
|
+
@error_envelopes.first.response_message.should eq nil
|
449
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
450
|
+
@error_envelopes.first.status.should eq 500
|
451
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
452
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
453
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
454
|
+
|
455
|
+
end
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
end
|
460
|
+
end
|
461
|
+
end
|
462
|
+
|
463
|
+
context 'without auth_key provided' do
|
464
|
+
context 'without encrypting message' do
|
465
|
+
|
466
|
+
before(:each) do
|
467
|
+
@pubnub = Pubnub.new(
|
468
|
+
:max_retries => 0,
|
469
|
+
:subscribe_key => :demo,
|
470
|
+
:publish_key => :demo,
|
471
|
+
:secret_key => 'some_secret_key',
|
472
|
+
:error_callback => @error_callback,
|
473
|
+
:disable_persistent_connection => true
|
474
|
+
)
|
475
|
+
|
476
|
+
@pubnub.uuid = 'tester'
|
477
|
+
end
|
478
|
+
|
479
|
+
context 'gets status 200 response' do
|
480
|
+
context 'with valid json' do
|
481
|
+
context 'its asynchronous' do
|
482
|
+
it 'publishes valid message' do
|
483
|
+
VCR.use_cassette('new_ones/publish/publish-http-200-valid', :record => :none) do
|
484
|
+
|
485
|
+
@pubnub.publish(
|
486
|
+
:message => {:text => 'sometext'},
|
487
|
+
:channel => 'ruby_demo_channel',
|
488
|
+
:callback => @callback
|
489
|
+
)
|
490
|
+
|
491
|
+
eventually do
|
492
|
+
@envelopes.size.should eq 1
|
493
|
+
@envelopes.first.response_message.should eq 'Sent'
|
494
|
+
@envelopes.first.status.should eq 200
|
495
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
496
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
497
|
+
@envelopes.first.timetoken.blank?.should eq false
|
498
|
+
end
|
499
|
+
|
500
|
+
end
|
501
|
+
end
|
502
|
+
end
|
503
|
+
|
504
|
+
context 'its synchronous' do
|
505
|
+
it 'publishes valid message' do
|
506
|
+
VCR.use_cassette('new_ones/publish/publish-http-200-valid', :record => :none) do
|
507
|
+
|
508
|
+
@pubnub.publish(
|
509
|
+
:message => {:text => 'sometext'},
|
510
|
+
:channel => 'ruby_demo_channel',
|
511
|
+
:callback => @callback,
|
512
|
+
:http_sync => true
|
513
|
+
)
|
514
|
+
|
515
|
+
@envelopes.size.should eq 1
|
516
|
+
@envelopes.first.response_message.should eq 'Sent'
|
517
|
+
@envelopes.first.status.should eq 200
|
518
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
519
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
520
|
+
@envelopes.first.timetoken.blank?.should eq false
|
521
|
+
|
522
|
+
end
|
523
|
+
end
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
context 'with invalid json' do
|
528
|
+
context 'its asynchronous' do
|
529
|
+
it 'handles invalid json gracefully' do
|
530
|
+
VCR.use_cassette('new_ones/publish/publish-http-200-invalid', :record => :none) do
|
531
|
+
|
532
|
+
@pubnub.publish(
|
533
|
+
:message => {:text => 'sometext'},
|
534
|
+
:channel => 'ruby_demo_channel',
|
535
|
+
:callback => @callback
|
536
|
+
)
|
537
|
+
|
538
|
+
eventually do
|
539
|
+
@envelopes.size.should eq 0
|
540
|
+
@error_envelopes.size.should eq 1
|
541
|
+
@error_envelopes.first.response_message.should eq nil
|
542
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
543
|
+
@error_envelopes.first.status.should eq 200
|
544
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
545
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
546
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
547
|
+
end
|
548
|
+
|
549
|
+
end
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
553
|
+
context 'its synchronous' do
|
554
|
+
it 'handles invalid json gracefully' do
|
555
|
+
VCR.use_cassette('new_ones/publish/publish-http-200-invalid', :record => :none) do
|
556
|
+
|
557
|
+
@pubnub.publish(
|
558
|
+
:message => {:text => 'sometext'},
|
559
|
+
:channel => 'ruby_demo_channel',
|
560
|
+
:callback => @callback,
|
561
|
+
:http_sync => true
|
562
|
+
)
|
563
|
+
|
564
|
+
@envelopes.size.should eq 0
|
565
|
+
@error_envelopes.size.should eq 1
|
566
|
+
@error_envelopes.first.response_message.should eq nil
|
567
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
568
|
+
@error_envelopes.first.status.should eq 200
|
569
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
570
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
571
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
572
|
+
|
573
|
+
end
|
574
|
+
end
|
575
|
+
end
|
576
|
+
end
|
577
|
+
end
|
578
|
+
|
579
|
+
context 'gets status non200 response' do
|
580
|
+
context 'with valid json' do
|
581
|
+
context 'its asynchronous' do
|
582
|
+
it 'handles non200 response gracefully' do
|
583
|
+
VCR.use_cassette('new_ones/publish/publish-http-non200-valid', :record => :none) do
|
584
|
+
|
585
|
+
@pubnub.publish(
|
586
|
+
:message => {:text => 'sometext'},
|
587
|
+
:channel => 'ruby_demo_channel',
|
588
|
+
:callback => @callback
|
589
|
+
)
|
590
|
+
|
591
|
+
eventually do
|
592
|
+
@envelopes.size.should eq 0
|
593
|
+
@error_envelopes.size.should eq 1
|
594
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
595
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
596
|
+
@error_envelopes.first.status.should eq 500
|
597
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
598
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
599
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
600
|
+
end
|
601
|
+
|
602
|
+
end
|
603
|
+
end
|
604
|
+
end
|
605
|
+
|
606
|
+
context 'its synchronous' do
|
607
|
+
it 'handles non200 response gracefully' do
|
608
|
+
VCR.use_cassette('new_ones/publish/publish-http-non200-valid', :record => :none) do
|
609
|
+
|
610
|
+
@pubnub.publish(
|
611
|
+
:message => {:text => 'sometext'},
|
612
|
+
:channel => 'ruby_demo_channel',
|
613
|
+
:callback => @callback,
|
614
|
+
:http_sync => true
|
615
|
+
)
|
616
|
+
|
617
|
+
@envelopes.size.should eq 0
|
618
|
+
@error_envelopes.size.should eq 1
|
619
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
620
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
621
|
+
@error_envelopes.first.status.should eq 500
|
622
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
623
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
624
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
625
|
+
|
626
|
+
end
|
627
|
+
end
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
context 'with invalid json' do
|
632
|
+
context 'its asynchronous' do
|
633
|
+
it 'handles invalid json and non200 response gracefully' do
|
634
|
+
VCR.use_cassette('new_ones/publish/publish-http-non200-invalid', :record => :none) do
|
635
|
+
|
636
|
+
@pubnub.publish(
|
637
|
+
:message => {:text => 'sometext'},
|
638
|
+
:channel => 'ruby_demo_channel',
|
639
|
+
:callback => @callback
|
640
|
+
)
|
641
|
+
|
642
|
+
eventually do
|
643
|
+
@envelopes.size.should eq 0
|
644
|
+
@error_envelopes.size.should eq 1
|
645
|
+
@error_envelopes.first.response_message.should eq nil
|
646
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
647
|
+
@error_envelopes.first.status.should eq 500
|
648
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
649
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
650
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
651
|
+
end
|
652
|
+
|
653
|
+
end
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
657
|
+
context 'its synchronous' do
|
658
|
+
it 'handles invalid json and non200 response gracefully' do
|
659
|
+
VCR.use_cassette('new_ones/publish/publish-http-non200-invalid', :record => :none) do
|
660
|
+
|
661
|
+
@pubnub.publish(
|
662
|
+
:message => {:text => 'sometext'},
|
663
|
+
:channel => 'ruby_demo_channel',
|
664
|
+
:callback => @callback,
|
665
|
+
:http_sync => true
|
666
|
+
)
|
667
|
+
|
668
|
+
@envelopes.size.should eq 0
|
669
|
+
@error_envelopes.size.should eq 1
|
670
|
+
@error_envelopes.first.response_message.should eq nil
|
671
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
672
|
+
@error_envelopes.first.status.should eq 500
|
673
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
674
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
675
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
676
|
+
|
677
|
+
end
|
678
|
+
end
|
679
|
+
end
|
680
|
+
end
|
681
|
+
end
|
682
|
+
end
|
683
|
+
|
684
|
+
context 'with encrypting message' do
|
685
|
+
|
686
|
+
before(:each) do
|
687
|
+
@pubnub = Pubnub.new(
|
688
|
+
:max_retries => 0,
|
689
|
+
:subscribe_key => :demo,
|
690
|
+
:publish_key => :demo,
|
691
|
+
:secret_key => 'some_secret_key',
|
692
|
+
:cipher_key => 'secret',
|
693
|
+
:error_callback => @error_callback,
|
694
|
+
:disable_persistent_connection => true
|
695
|
+
)
|
696
|
+
|
697
|
+
@pubnub.uuid = 'tester'
|
698
|
+
end
|
699
|
+
|
700
|
+
context 'gets status 200 response' do
|
701
|
+
context 'with valid json' do
|
702
|
+
context 'its asynchronous' do
|
703
|
+
it 'publishes valid message' do
|
704
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-200-valid', :record => :none) do
|
705
|
+
|
706
|
+
@pubnub.publish(
|
707
|
+
:message => {:text => 'sometext'},
|
708
|
+
:channel => 'ruby_demo_channel',
|
709
|
+
:callback => @callback
|
710
|
+
)
|
711
|
+
|
712
|
+
eventually do
|
713
|
+
@envelopes.size.should eq 1
|
714
|
+
@envelopes.first.response_message.should eq 'Sent'
|
715
|
+
@envelopes.first.status.should eq 200
|
716
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
717
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
718
|
+
@envelopes.first.timetoken.blank?.should eq false
|
719
|
+
end
|
720
|
+
|
721
|
+
end
|
722
|
+
end
|
723
|
+
end
|
724
|
+
|
725
|
+
context 'its synchronous' do
|
726
|
+
it 'publishes valid message' do
|
727
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-200-valid', :record => :none) do
|
728
|
+
|
729
|
+
@pubnub.publish(
|
730
|
+
:message => {:text => 'sometext'},
|
731
|
+
:channel => 'ruby_demo_channel',
|
732
|
+
:callback => @callback,
|
733
|
+
:http_sync => true
|
734
|
+
)
|
735
|
+
|
736
|
+
@envelopes.size.should eq 1
|
737
|
+
@envelopes.first.response_message.should eq 'Sent'
|
738
|
+
@envelopes.first.status.should eq 200
|
739
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
740
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
741
|
+
@envelopes.first.timetoken.blank?.should eq false
|
742
|
+
|
743
|
+
end
|
744
|
+
end
|
745
|
+
end
|
746
|
+
end
|
747
|
+
|
748
|
+
context 'with invalid json' do
|
749
|
+
context 'its asynchronous' do
|
750
|
+
it 'handles invalid json gracefully' do
|
751
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-200-invalid', :record => :none) do
|
752
|
+
|
753
|
+
@pubnub.publish(
|
754
|
+
:message => {:text => 'sometext'},
|
755
|
+
:channel => 'ruby_demo_channel',
|
756
|
+
:callback => @callback
|
757
|
+
)
|
758
|
+
|
759
|
+
eventually do
|
760
|
+
@envelopes.size.should eq 0
|
761
|
+
@error_envelopes.size.should eq 1
|
762
|
+
@error_envelopes.first.response_message.should eq nil
|
763
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
764
|
+
@error_envelopes.first.status.should eq 200
|
765
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
766
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
767
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
768
|
+
end
|
769
|
+
|
770
|
+
end
|
771
|
+
end
|
772
|
+
end
|
773
|
+
|
774
|
+
context 'its synchronous' do
|
775
|
+
it 'handles invalid json gracefully' do
|
776
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-200-invalid', :record => :none) do
|
777
|
+
|
778
|
+
@pubnub.publish(
|
779
|
+
:message => {:text => 'sometext'},
|
780
|
+
:channel => 'ruby_demo_channel',
|
781
|
+
:callback => @callback,
|
782
|
+
:http_sync => true
|
783
|
+
)
|
784
|
+
|
785
|
+
@envelopes.size.should eq 0
|
786
|
+
@error_envelopes.size.should eq 1
|
787
|
+
@error_envelopes.first.response_message.should eq nil
|
788
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
789
|
+
@error_envelopes.first.status.should eq 200
|
790
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
791
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
792
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
793
|
+
|
794
|
+
end
|
795
|
+
end
|
796
|
+
end
|
797
|
+
end
|
798
|
+
end
|
799
|
+
|
800
|
+
context 'gets status non200 response' do
|
801
|
+
context 'with valid json' do
|
802
|
+
context 'its asynchronous' do
|
803
|
+
it 'handles non200 response gracefully' do
|
804
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-non200-valid', :record => :none) do
|
805
|
+
|
806
|
+
@pubnub.publish(
|
807
|
+
:message => {:text => 'sometext'},
|
808
|
+
:channel => 'ruby_demo_channel',
|
809
|
+
:callback => @callback
|
810
|
+
)
|
811
|
+
|
812
|
+
eventually do
|
813
|
+
@envelopes.size.should eq 0
|
814
|
+
@error_envelopes.size.should eq 1
|
815
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
816
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
817
|
+
@error_envelopes.first.status.should eq 500
|
818
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
819
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
820
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
821
|
+
end
|
822
|
+
|
823
|
+
end
|
824
|
+
end
|
825
|
+
end
|
826
|
+
|
827
|
+
context 'its synchronous' do
|
828
|
+
it 'handles non200 response gracefully' do
|
829
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-non200-valid', :record => :none) do
|
830
|
+
|
831
|
+
@pubnub.publish(
|
832
|
+
:message => {:text => 'sometext'},
|
833
|
+
:channel => 'ruby_demo_channel',
|
834
|
+
:callback => @callback,
|
835
|
+
:http_sync => true
|
836
|
+
)
|
837
|
+
|
838
|
+
@envelopes.size.should eq 0
|
839
|
+
@error_envelopes.size.should eq 1
|
840
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
841
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
842
|
+
@error_envelopes.first.status.should eq 500
|
843
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
844
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
845
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
846
|
+
|
847
|
+
end
|
848
|
+
end
|
849
|
+
end
|
850
|
+
end
|
851
|
+
|
852
|
+
context 'with invalid json' do
|
853
|
+
context 'its asynchronous' do
|
854
|
+
it 'handles invalid json and non200 response gracefully' do
|
855
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-non200-invalid', :record => :none) do
|
856
|
+
|
857
|
+
@pubnub.publish(
|
858
|
+
:message => {:text => 'sometext'},
|
859
|
+
:channel => 'ruby_demo_channel',
|
860
|
+
:callback => @callback
|
861
|
+
)
|
862
|
+
|
863
|
+
eventually do
|
864
|
+
@envelopes.size.should eq 0
|
865
|
+
@error_envelopes.size.should eq 1
|
866
|
+
@error_envelopes.first.response_message.should eq nil
|
867
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
868
|
+
@error_envelopes.first.status.should eq 500
|
869
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
870
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
871
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
872
|
+
end
|
873
|
+
|
874
|
+
end
|
875
|
+
end
|
876
|
+
end
|
877
|
+
|
878
|
+
context 'its synchronous' do
|
879
|
+
it 'handles invalid json and non200 response gracefully' do
|
880
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-http-non200-invalid', :record => :none) do
|
881
|
+
|
882
|
+
@pubnub.publish(
|
883
|
+
:message => {:text => 'sometext'},
|
884
|
+
:channel => 'ruby_demo_channel',
|
885
|
+
:callback => @callback,
|
886
|
+
:http_sync => true
|
887
|
+
)
|
888
|
+
|
889
|
+
@envelopes.size.should eq 0
|
890
|
+
@error_envelopes.size.should eq 1
|
891
|
+
@error_envelopes.first.response_message.should eq nil
|
892
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
893
|
+
@error_envelopes.first.status.should eq 500
|
894
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
895
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
896
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
897
|
+
|
898
|
+
end
|
899
|
+
end
|
900
|
+
end
|
901
|
+
end
|
902
|
+
end
|
903
|
+
end
|
904
|
+
end
|
905
|
+
end
|
906
|
+
|
907
|
+
context 'uses https' do
|
908
|
+
context 'with auth_key provided' do
|
909
|
+
context 'without encrypting message' do
|
910
|
+
|
911
|
+
before(:each) do
|
912
|
+
@pubnub = Pubnub.new(
|
913
|
+
:max_retries => 0,
|
914
|
+
:subscribe_key => :demo,
|
915
|
+
:publish_key => :demo,
|
916
|
+
:auth_key => :demoish_authkey,
|
917
|
+
:secret_key => 'some_secret_key',
|
918
|
+
:error_callback => @error_callback,
|
919
|
+
:ssl => true,
|
920
|
+
:disable_persistent_connection => true
|
921
|
+
)
|
922
|
+
|
923
|
+
@pubnub.uuid = 'tester'
|
924
|
+
end
|
925
|
+
|
926
|
+
context 'gets status 200 response' do
|
927
|
+
context 'with valid json' do
|
928
|
+
context 'its asynchronous' do
|
929
|
+
it 'publishes valid message' do
|
930
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-200-valid', :record => :none) do
|
931
|
+
|
932
|
+
@pubnub.publish(
|
933
|
+
:message => {:text => 'sometext'},
|
934
|
+
:channel => 'ruby_demo_channel',
|
935
|
+
:callback => @callback
|
936
|
+
)
|
937
|
+
|
938
|
+
eventually do
|
939
|
+
@envelopes.size.should eq 1
|
940
|
+
@envelopes.first.response_message.should eq 'Sent'
|
941
|
+
@envelopes.first.status.should eq 200
|
942
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
943
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
944
|
+
@envelopes.first.timetoken.blank?.should eq false
|
945
|
+
end
|
946
|
+
|
947
|
+
end
|
948
|
+
end
|
949
|
+
end
|
950
|
+
|
951
|
+
context 'its synchronous' do
|
952
|
+
it 'publishes valid message' do
|
953
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-200-valid', :record => :none) do
|
954
|
+
|
955
|
+
@pubnub.publish(
|
956
|
+
:message => {:text => 'sometext'},
|
957
|
+
:channel => 'ruby_demo_channel',
|
958
|
+
:callback => @callback,
|
959
|
+
:http_sync => true
|
960
|
+
)
|
961
|
+
|
962
|
+
@envelopes.size.should eq 1
|
963
|
+
@envelopes.first.response_message.should eq 'Sent'
|
964
|
+
@envelopes.first.status.should eq 200
|
965
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
966
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
967
|
+
@envelopes.first.timetoken.blank?.should eq false
|
968
|
+
|
969
|
+
end
|
970
|
+
end
|
971
|
+
end
|
972
|
+
end
|
973
|
+
|
974
|
+
context 'with invalid json' do
|
975
|
+
context 'its asynchronous' do
|
976
|
+
it 'handles invalid json gracefully' do
|
977
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-200-invalid', :record => :none) do
|
978
|
+
|
979
|
+
@pubnub.publish(
|
980
|
+
:message => {:text => 'sometext'},
|
981
|
+
:channel => 'ruby_demo_channel',
|
982
|
+
:callback => @callback
|
983
|
+
)
|
984
|
+
|
985
|
+
eventually do
|
986
|
+
@envelopes.size.should eq 0
|
987
|
+
@error_envelopes.size.should eq 1
|
988
|
+
@error_envelopes.first.response_message.should eq nil
|
989
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
990
|
+
@error_envelopes.first.status.should eq 200
|
991
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
992
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
993
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
994
|
+
end
|
995
|
+
|
996
|
+
end
|
997
|
+
end
|
998
|
+
end
|
999
|
+
|
1000
|
+
context 'its synchronous' do
|
1001
|
+
it 'handles invalid json gracefully' do
|
1002
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-200-invalid', :record => :none) do
|
1003
|
+
|
1004
|
+
@pubnub.publish(
|
1005
|
+
:message => {:text => 'sometext'},
|
1006
|
+
:channel => 'ruby_demo_channel',
|
1007
|
+
:callback => @callback,
|
1008
|
+
:http_sync => true
|
1009
|
+
)
|
1010
|
+
|
1011
|
+
@envelopes.size.should eq 0
|
1012
|
+
@error_envelopes.size.should eq 1
|
1013
|
+
@error_envelopes.first.response_message.should eq nil
|
1014
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1015
|
+
@error_envelopes.first.status.should eq 200
|
1016
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1017
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1018
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1019
|
+
|
1020
|
+
end
|
1021
|
+
end
|
1022
|
+
end
|
1023
|
+
end
|
1024
|
+
end
|
1025
|
+
|
1026
|
+
context 'gets status non200 response' do
|
1027
|
+
context 'with valid json' do
|
1028
|
+
context 'its asynchronous' do
|
1029
|
+
it 'handles non200 response gracefully' do
|
1030
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-non200-valid', :record => :none) do
|
1031
|
+
|
1032
|
+
@pubnub.publish(
|
1033
|
+
:message => {:text => 'sometext'},
|
1034
|
+
:channel => 'ruby_demo_channel',
|
1035
|
+
:callback => @callback
|
1036
|
+
)
|
1037
|
+
|
1038
|
+
eventually do
|
1039
|
+
@envelopes.size.should eq 0
|
1040
|
+
@error_envelopes.size.should eq 1
|
1041
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1042
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
1043
|
+
@error_envelopes.first.status.should eq 500
|
1044
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1045
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1046
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1047
|
+
end
|
1048
|
+
|
1049
|
+
end
|
1050
|
+
end
|
1051
|
+
end
|
1052
|
+
|
1053
|
+
context 'its synchronous' do
|
1054
|
+
it 'handles non200 response gracefully' do
|
1055
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-non200-valid', :record => :none) do
|
1056
|
+
|
1057
|
+
@pubnub.publish(
|
1058
|
+
:message => {:text => 'sometext'},
|
1059
|
+
:channel => 'ruby_demo_channel',
|
1060
|
+
:callback => @callback,
|
1061
|
+
:http_sync => true
|
1062
|
+
)
|
1063
|
+
|
1064
|
+
@envelopes.size.should eq 0
|
1065
|
+
@error_envelopes.size.should eq 1
|
1066
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1067
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
1068
|
+
@error_envelopes.first.status.should eq 500
|
1069
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1070
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1071
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1072
|
+
|
1073
|
+
end
|
1074
|
+
end
|
1075
|
+
end
|
1076
|
+
end
|
1077
|
+
|
1078
|
+
context 'with invalid json' do
|
1079
|
+
context 'its asynchronous' do
|
1080
|
+
it 'handles invalid json and non200 response gracefully' do
|
1081
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-non200-invalid', :record => :none) do
|
1082
|
+
|
1083
|
+
@pubnub.publish(
|
1084
|
+
:message => {:text => 'sometext'},
|
1085
|
+
:channel => 'ruby_demo_channel',
|
1086
|
+
:callback => @callback
|
1087
|
+
)
|
1088
|
+
|
1089
|
+
eventually do
|
1090
|
+
@envelopes.size.should eq 0
|
1091
|
+
@error_envelopes.size.should eq 1
|
1092
|
+
@error_envelopes.first.response_message.should eq nil
|
1093
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1094
|
+
@error_envelopes.first.status.should eq 500
|
1095
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1096
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1097
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1098
|
+
end
|
1099
|
+
|
1100
|
+
end
|
1101
|
+
end
|
1102
|
+
end
|
1103
|
+
|
1104
|
+
context 'its synchronous' do
|
1105
|
+
it 'handles invalid json and non200 response gracefully' do
|
1106
|
+
VCR.use_cassette('new_ones/publish/publish-https-auth_key-non200-invalid', :record => :none) do
|
1107
|
+
|
1108
|
+
@pubnub.publish(
|
1109
|
+
:message => {:text => 'sometext'},
|
1110
|
+
:channel => 'ruby_demo_channel',
|
1111
|
+
:callback => @callback,
|
1112
|
+
:http_sync => true
|
1113
|
+
)
|
1114
|
+
|
1115
|
+
@envelopes.size.should eq 0
|
1116
|
+
@error_envelopes.size.should eq 1
|
1117
|
+
@error_envelopes.first.response_message.should eq nil
|
1118
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1119
|
+
@error_envelopes.first.status.should eq 500
|
1120
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1121
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1122
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1123
|
+
|
1124
|
+
end
|
1125
|
+
end
|
1126
|
+
end
|
1127
|
+
end
|
1128
|
+
end
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
context 'with encrypting message' do
|
1132
|
+
|
1133
|
+
before(:each) do
|
1134
|
+
@pubnub = Pubnub.new(
|
1135
|
+
:max_retries => 0,
|
1136
|
+
:subscribe_key => :demo,
|
1137
|
+
:publish_key => :demo,
|
1138
|
+
:auth_key => :demoish_authkey,
|
1139
|
+
:secret_key => 'some_secret_key',
|
1140
|
+
:cipher_key => 'secret',
|
1141
|
+
:error_callback => @error_callback,
|
1142
|
+
:ssl => true,
|
1143
|
+
:disable_persistent_connection => true
|
1144
|
+
)
|
1145
|
+
|
1146
|
+
@pubnub.uuid = 'tester'
|
1147
|
+
end
|
1148
|
+
|
1149
|
+
context 'gets status 200 response' do
|
1150
|
+
context 'with valid json' do
|
1151
|
+
context 'its asynchronous' do
|
1152
|
+
it 'publishes valid message' do
|
1153
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-200-valid', :record => :none) do
|
1154
|
+
|
1155
|
+
@pubnub.publish(
|
1156
|
+
:message => {:text => 'sometext'},
|
1157
|
+
:channel => 'ruby_demo_channel',
|
1158
|
+
:callback => @callback
|
1159
|
+
)
|
1160
|
+
|
1161
|
+
eventually do
|
1162
|
+
@envelopes.size.should eq 1
|
1163
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1164
|
+
@envelopes.first.status.should eq 200
|
1165
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1166
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
1167
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1168
|
+
end
|
1169
|
+
|
1170
|
+
end
|
1171
|
+
end
|
1172
|
+
end
|
1173
|
+
|
1174
|
+
context 'its synchronous' do
|
1175
|
+
it 'publishes valid message' do
|
1176
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-200-valid', :record => :none) do
|
1177
|
+
|
1178
|
+
@pubnub.publish(
|
1179
|
+
:message => {:text => 'sometext'},
|
1180
|
+
:channel => 'ruby_demo_channel',
|
1181
|
+
:callback => @callback,
|
1182
|
+
:http_sync => true
|
1183
|
+
)
|
1184
|
+
|
1185
|
+
@envelopes.size.should eq 1
|
1186
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1187
|
+
@envelopes.first.status.should eq 200
|
1188
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1189
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
1190
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1191
|
+
|
1192
|
+
end
|
1193
|
+
end
|
1194
|
+
end
|
1195
|
+
end
|
1196
|
+
|
1197
|
+
context 'with invalid json' do
|
1198
|
+
context 'its asynchronous' do
|
1199
|
+
it 'handles invalid json gracefully' do
|
1200
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-200-invalid', :record => :none) do
|
1201
|
+
|
1202
|
+
@pubnub.publish(
|
1203
|
+
:message => {:text => 'sometext'},
|
1204
|
+
:channel => 'ruby_demo_channel',
|
1205
|
+
:callback => @callback
|
1206
|
+
)
|
1207
|
+
|
1208
|
+
eventually do
|
1209
|
+
@envelopes.size.should eq 0
|
1210
|
+
@error_envelopes.size.should eq 1
|
1211
|
+
@error_envelopes.first.response_message.should eq nil
|
1212
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1213
|
+
@error_envelopes.first.status.should eq 200
|
1214
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1215
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1216
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1217
|
+
end
|
1218
|
+
|
1219
|
+
end
|
1220
|
+
end
|
1221
|
+
end
|
1222
|
+
|
1223
|
+
context 'its synchronous' do
|
1224
|
+
it 'handles invalid json gracefully' do
|
1225
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-200-invalid', :record => :none) do
|
1226
|
+
|
1227
|
+
@pubnub.publish(
|
1228
|
+
:message => {:text => 'sometext'},
|
1229
|
+
:channel => 'ruby_demo_channel',
|
1230
|
+
:callback => @callback,
|
1231
|
+
:http_sync => true
|
1232
|
+
)
|
1233
|
+
|
1234
|
+
@envelopes.size.should eq 0
|
1235
|
+
@error_envelopes.size.should eq 1
|
1236
|
+
@error_envelopes.first.response_message.should eq nil
|
1237
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1238
|
+
@error_envelopes.first.status.should eq 200
|
1239
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1240
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1241
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1242
|
+
|
1243
|
+
end
|
1244
|
+
end
|
1245
|
+
end
|
1246
|
+
end
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
context 'gets status non200 response' do
|
1250
|
+
context 'with valid json' do
|
1251
|
+
context 'its asynchronous' do
|
1252
|
+
it 'handles non200 response gracefully' do
|
1253
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-non200-valid', :record => :none) do
|
1254
|
+
|
1255
|
+
@pubnub.publish(
|
1256
|
+
:message => {:text => 'sometext'},
|
1257
|
+
:channel => 'ruby_demo_channel',
|
1258
|
+
:callback => @callback
|
1259
|
+
)
|
1260
|
+
|
1261
|
+
eventually do
|
1262
|
+
@envelopes.size.should eq 0
|
1263
|
+
@error_envelopes.size.should eq 1
|
1264
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1265
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
1266
|
+
@error_envelopes.first.status.should eq 500
|
1267
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1268
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1269
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1270
|
+
end
|
1271
|
+
|
1272
|
+
end
|
1273
|
+
end
|
1274
|
+
end
|
1275
|
+
|
1276
|
+
context 'its synchronous' do
|
1277
|
+
it 'handles non200 response gracefully' do
|
1278
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-non200-valid', :record => :none) do
|
1279
|
+
|
1280
|
+
@pubnub.publish(
|
1281
|
+
:message => {:text => 'sometext'},
|
1282
|
+
:channel => 'ruby_demo_channel',
|
1283
|
+
:callback => @callback,
|
1284
|
+
:http_sync => true
|
1285
|
+
)
|
1286
|
+
|
1287
|
+
@envelopes.size.should eq 0
|
1288
|
+
@error_envelopes.size.should eq 1
|
1289
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1290
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
1291
|
+
@error_envelopes.first.status.should eq 500
|
1292
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1293
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1294
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1295
|
+
|
1296
|
+
end
|
1297
|
+
end
|
1298
|
+
end
|
1299
|
+
end
|
1300
|
+
|
1301
|
+
context 'with invalid json' do
|
1302
|
+
context 'its asynchronous' do
|
1303
|
+
it 'handles invalid json and non200 response gracefully' do
|
1304
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-non200-invalid', :record => :none) do
|
1305
|
+
|
1306
|
+
@pubnub.publish(
|
1307
|
+
:message => {:text => 'sometext'},
|
1308
|
+
:channel => 'ruby_demo_channel',
|
1309
|
+
:callback => @callback
|
1310
|
+
)
|
1311
|
+
|
1312
|
+
eventually do
|
1313
|
+
@envelopes.size.should eq 0
|
1314
|
+
@error_envelopes.size.should eq 1
|
1315
|
+
@error_envelopes.first.response_message.should eq nil
|
1316
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1317
|
+
@error_envelopes.first.status.should eq 500
|
1318
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1319
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1320
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1321
|
+
end
|
1322
|
+
|
1323
|
+
end
|
1324
|
+
end
|
1325
|
+
end
|
1326
|
+
|
1327
|
+
context 'its synchronous' do
|
1328
|
+
it 'handles invalid json and non200 response gracefully' do
|
1329
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-auth_key-non200-invalid', :record => :none) do
|
1330
|
+
|
1331
|
+
@pubnub.publish(
|
1332
|
+
:message => {:text => 'sometext'},
|
1333
|
+
:channel => 'ruby_demo_channel',
|
1334
|
+
:callback => @callback,
|
1335
|
+
:http_sync => true
|
1336
|
+
)
|
1337
|
+
|
1338
|
+
@envelopes.size.should eq 0
|
1339
|
+
@error_envelopes.size.should eq 1
|
1340
|
+
@error_envelopes.first.response_message.should eq nil
|
1341
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1342
|
+
@error_envelopes.first.status.should eq 500
|
1343
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1344
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1345
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1346
|
+
|
1347
|
+
end
|
1348
|
+
end
|
1349
|
+
end
|
1350
|
+
end
|
1351
|
+
end
|
1352
|
+
end
|
1353
|
+
end
|
1354
|
+
|
1355
|
+
context 'without auth_key provided' do
|
1356
|
+
context 'without encrypting message' do
|
1357
|
+
|
1358
|
+
before(:each) do
|
1359
|
+
@pubnub = Pubnub.new(
|
1360
|
+
:max_retries => 0,
|
1361
|
+
:subscribe_key => :demo,
|
1362
|
+
:publish_key => :demo,
|
1363
|
+
:secret_key => 'some_secret_key',
|
1364
|
+
:error_callback => @error_callback,
|
1365
|
+
:ssl => true,
|
1366
|
+
:disable_persistent_connection => true
|
1367
|
+
)
|
1368
|
+
|
1369
|
+
@pubnub.uuid = 'tester'
|
1370
|
+
end
|
1371
|
+
|
1372
|
+
context 'gets status 200 response' do
|
1373
|
+
context 'with valid json' do
|
1374
|
+
context 'its asynchronous' do
|
1375
|
+
it 'publishes valid message' do
|
1376
|
+
VCR.use_cassette('new_ones/publish/publish-https-200-valid', :record => :none) do
|
1377
|
+
|
1378
|
+
@pubnub.publish(
|
1379
|
+
:message => {:text => 'sometext'},
|
1380
|
+
:channel => 'ruby_demo_channel',
|
1381
|
+
:callback => @callback
|
1382
|
+
)
|
1383
|
+
|
1384
|
+
eventually do
|
1385
|
+
@envelopes.size.should eq 1
|
1386
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1387
|
+
@envelopes.first.status.should eq 200
|
1388
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1389
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
1390
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1391
|
+
end
|
1392
|
+
|
1393
|
+
end
|
1394
|
+
end
|
1395
|
+
end
|
1396
|
+
|
1397
|
+
context 'its synchronous' do
|
1398
|
+
it 'publishes valid message' do
|
1399
|
+
VCR.use_cassette('new_ones/publish/publish-https-200-valid', :record => :none) do
|
1400
|
+
|
1401
|
+
@pubnub.publish(
|
1402
|
+
:message => {:text => 'sometext'},
|
1403
|
+
:channel => 'ruby_demo_channel',
|
1404
|
+
:callback => @callback,
|
1405
|
+
:http_sync => true
|
1406
|
+
)
|
1407
|
+
|
1408
|
+
@envelopes.size.should eq 1
|
1409
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1410
|
+
@envelopes.first.status.should eq 200
|
1411
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1412
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
1413
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1414
|
+
|
1415
|
+
end
|
1416
|
+
end
|
1417
|
+
end
|
1418
|
+
end
|
1419
|
+
|
1420
|
+
context 'with invalid json' do
|
1421
|
+
context 'its asynchronous' do
|
1422
|
+
it 'handles invalid json gracefully' do
|
1423
|
+
VCR.use_cassette('new_ones/publish/publish-https-200-invalid', :record => :none) do
|
1424
|
+
|
1425
|
+
@pubnub.publish(
|
1426
|
+
:message => {:text => 'sometext'},
|
1427
|
+
:channel => 'ruby_demo_channel',
|
1428
|
+
:callback => @callback
|
1429
|
+
)
|
1430
|
+
|
1431
|
+
eventually do
|
1432
|
+
@envelopes.size.should eq 0
|
1433
|
+
@error_envelopes.size.should eq 1
|
1434
|
+
@error_envelopes.first.response_message.should eq nil
|
1435
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1436
|
+
@error_envelopes.first.status.should eq 200
|
1437
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1438
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1439
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1440
|
+
end
|
1441
|
+
|
1442
|
+
end
|
1443
|
+
end
|
1444
|
+
end
|
1445
|
+
|
1446
|
+
context 'its synchronous' do
|
1447
|
+
it 'handles invalid json gracefully' do
|
1448
|
+
VCR.use_cassette('new_ones/publish/publish-https-200-invalid', :record => :none) do
|
1449
|
+
|
1450
|
+
@pubnub.publish(
|
1451
|
+
:message => {:text => 'sometext'},
|
1452
|
+
:channel => 'ruby_demo_channel',
|
1453
|
+
:callback => @callback,
|
1454
|
+
:http_sync => true
|
1455
|
+
)
|
1456
|
+
|
1457
|
+
@envelopes.size.should eq 0
|
1458
|
+
@error_envelopes.size.should eq 1
|
1459
|
+
@error_envelopes.first.response_message.should eq nil
|
1460
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1461
|
+
@error_envelopes.first.status.should eq 200
|
1462
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1463
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1464
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1465
|
+
|
1466
|
+
end
|
1467
|
+
end
|
1468
|
+
end
|
1469
|
+
end
|
1470
|
+
end
|
1471
|
+
|
1472
|
+
context 'gets status non200 response' do
|
1473
|
+
context 'with valid json' do
|
1474
|
+
context 'its asynchronous' do
|
1475
|
+
it 'handles non200 response gracefully' do
|
1476
|
+
VCR.use_cassette('new_ones/publish/publish-https-non200-valid', :record => :none) do
|
1477
|
+
|
1478
|
+
@pubnub.publish(
|
1479
|
+
:message => {:text => 'sometext'},
|
1480
|
+
:channel => 'ruby_demo_channel',
|
1481
|
+
:callback => @callback
|
1482
|
+
)
|
1483
|
+
|
1484
|
+
eventually do
|
1485
|
+
@envelopes.size.should eq 0
|
1486
|
+
@error_envelopes.size.should eq 1
|
1487
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1488
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
1489
|
+
@error_envelopes.first.status.should eq 500
|
1490
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1491
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1492
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1493
|
+
end
|
1494
|
+
|
1495
|
+
end
|
1496
|
+
end
|
1497
|
+
end
|
1498
|
+
|
1499
|
+
context 'its synchronous' do
|
1500
|
+
it 'handles non200 response gracefully' do
|
1501
|
+
VCR.use_cassette('new_ones/publish/publish-https-non200-valid', :record => :none) do
|
1502
|
+
|
1503
|
+
@pubnub.publish(
|
1504
|
+
:message => {:text => 'sometext'},
|
1505
|
+
:channel => 'ruby_demo_channel',
|
1506
|
+
:callback => @callback,
|
1507
|
+
:http_sync => true
|
1508
|
+
)
|
1509
|
+
|
1510
|
+
@envelopes.size.should eq 0
|
1511
|
+
@error_envelopes.size.should eq 1
|
1512
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1513
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"]')
|
1514
|
+
@error_envelopes.first.status.should eq 500
|
1515
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1516
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1517
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1518
|
+
|
1519
|
+
end
|
1520
|
+
end
|
1521
|
+
end
|
1522
|
+
end
|
1523
|
+
|
1524
|
+
context 'with invalid json' do
|
1525
|
+
context 'its asynchronous' do
|
1526
|
+
it 'handles invalid json and non200 response gracefully' do
|
1527
|
+
VCR.use_cassette('new_ones/publish/publish-https-non200-invalid', :record => :none) do
|
1528
|
+
|
1529
|
+
@pubnub.publish(
|
1530
|
+
:message => {:text => 'sometext'},
|
1531
|
+
:channel => 'ruby_demo_channel',
|
1532
|
+
:callback => @callback
|
1533
|
+
)
|
1534
|
+
|
1535
|
+
eventually do
|
1536
|
+
@envelopes.size.should eq 0
|
1537
|
+
@error_envelopes.size.should eq 1
|
1538
|
+
@error_envelopes.first.response_message.should eq nil
|
1539
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1540
|
+
@error_envelopes.first.status.should eq 500
|
1541
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1542
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1543
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1544
|
+
end
|
1545
|
+
|
1546
|
+
end
|
1547
|
+
end
|
1548
|
+
end
|
1549
|
+
|
1550
|
+
context 'its synchronous' do
|
1551
|
+
it 'handles invalid json and non200 response gracefully' do
|
1552
|
+
VCR.use_cassette('new_ones/publish/publish-https-non200-invalid', :record => :none) do
|
1553
|
+
|
1554
|
+
@pubnub.publish(
|
1555
|
+
:message => {:text => 'sometext'},
|
1556
|
+
:channel => 'ruby_demo_channel',
|
1557
|
+
:callback => @callback,
|
1558
|
+
:http_sync => true
|
1559
|
+
)
|
1560
|
+
|
1561
|
+
@envelopes.size.should eq 0
|
1562
|
+
@error_envelopes.size.should eq 1
|
1563
|
+
@error_envelopes.first.response_message.should eq nil
|
1564
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13936818988607190"')
|
1565
|
+
@error_envelopes.first.status.should eq 500
|
1566
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1567
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1568
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1569
|
+
|
1570
|
+
end
|
1571
|
+
end
|
1572
|
+
end
|
1573
|
+
end
|
1574
|
+
end
|
1575
|
+
end
|
1576
|
+
|
1577
|
+
context 'with encrypting message' do
|
1578
|
+
|
1579
|
+
before(:each) do
|
1580
|
+
@pubnub = Pubnub.new(
|
1581
|
+
:max_retries => 0,
|
1582
|
+
:subscribe_key => :demo,
|
1583
|
+
:publish_key => :demo,
|
1584
|
+
:secret_key => 'some_secret_key',
|
1585
|
+
:cipher_key => 'secret',
|
1586
|
+
:error_callback => @error_callback,
|
1587
|
+
:ssl => true,
|
1588
|
+
:disable_persistent_connection => true
|
1589
|
+
)
|
1590
|
+
|
1591
|
+
@pubnub.uuid = 'tester'
|
1592
|
+
end
|
1593
|
+
|
1594
|
+
context 'gets status 200 response' do
|
1595
|
+
context 'with valid json' do
|
1596
|
+
context 'its asynchronous' do
|
1597
|
+
it 'publishes valid message' do
|
1598
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-200-valid', :record => :none) do
|
1599
|
+
|
1600
|
+
@pubnub.publish(
|
1601
|
+
:message => {:text => 'sometext'},
|
1602
|
+
:channel => 'ruby_demo_channel',
|
1603
|
+
:callback => @callback
|
1604
|
+
)
|
1605
|
+
|
1606
|
+
eventually do
|
1607
|
+
@envelopes.size.should eq 1
|
1608
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1609
|
+
@envelopes.first.status.should eq 200
|
1610
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1611
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
1612
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1613
|
+
end
|
1614
|
+
|
1615
|
+
end
|
1616
|
+
end
|
1617
|
+
end
|
1618
|
+
|
1619
|
+
context 'its synchronous' do
|
1620
|
+
it 'publishes valid message' do
|
1621
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-200-valid', :record => :none) do
|
1622
|
+
|
1623
|
+
@pubnub.publish(
|
1624
|
+
:message => {:text => 'sometext'},
|
1625
|
+
:channel => 'ruby_demo_channel',
|
1626
|
+
:callback => @callback,
|
1627
|
+
:http_sync => true
|
1628
|
+
)
|
1629
|
+
|
1630
|
+
@envelopes.size.should eq 1
|
1631
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1632
|
+
@envelopes.first.status.should eq 200
|
1633
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1634
|
+
@envelopes.first.message.should eq({:text => 'sometext'})
|
1635
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1636
|
+
|
1637
|
+
end
|
1638
|
+
end
|
1639
|
+
end
|
1640
|
+
end
|
1641
|
+
|
1642
|
+
context 'with invalid json' do
|
1643
|
+
context 'its asynchronous' do
|
1644
|
+
it 'handles invalid json gracefully' do
|
1645
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-200-invalid', :record => :none) do
|
1646
|
+
|
1647
|
+
@pubnub.publish(
|
1648
|
+
:message => {:text => 'sometext'},
|
1649
|
+
:channel => 'ruby_demo_channel',
|
1650
|
+
:callback => @callback
|
1651
|
+
)
|
1652
|
+
|
1653
|
+
eventually do
|
1654
|
+
@envelopes.size.should eq 0
|
1655
|
+
@error_envelopes.size.should eq 1
|
1656
|
+
@error_envelopes.first.response_message.should eq nil
|
1657
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1658
|
+
@error_envelopes.first.status.should eq 200
|
1659
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1660
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1661
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1662
|
+
end
|
1663
|
+
|
1664
|
+
end
|
1665
|
+
end
|
1666
|
+
end
|
1667
|
+
|
1668
|
+
context 'its synchronous' do
|
1669
|
+
it 'handles invalid json gracefully' do
|
1670
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-200-invalid', :record => :none) do
|
1671
|
+
|
1672
|
+
@pubnub.publish(
|
1673
|
+
:message => {:text => 'sometext'},
|
1674
|
+
:channel => 'ruby_demo_channel',
|
1675
|
+
:callback => @callback,
|
1676
|
+
:http_sync => true
|
1677
|
+
)
|
1678
|
+
|
1679
|
+
@envelopes.size.should eq 0
|
1680
|
+
@error_envelopes.size.should eq 1
|
1681
|
+
@error_envelopes.first.response_message.should eq nil
|
1682
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1683
|
+
@error_envelopes.first.status.should eq 200
|
1684
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1685
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1686
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1687
|
+
|
1688
|
+
end
|
1689
|
+
end
|
1690
|
+
end
|
1691
|
+
end
|
1692
|
+
end
|
1693
|
+
|
1694
|
+
context 'gets status non200 response' do
|
1695
|
+
context 'with valid json' do
|
1696
|
+
context 'its asynchronous' do
|
1697
|
+
it 'handles non200 response gracefully' do
|
1698
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-non200-valid', :record => :none) do
|
1699
|
+
|
1700
|
+
@pubnub.publish(
|
1701
|
+
:message => {:text => 'sometext'},
|
1702
|
+
:channel => 'ruby_demo_channel',
|
1703
|
+
:callback => @callback
|
1704
|
+
)
|
1705
|
+
|
1706
|
+
eventually do
|
1707
|
+
@envelopes.size.should eq 0
|
1708
|
+
@error_envelopes.size.should eq 1
|
1709
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1710
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
1711
|
+
@error_envelopes.first.status.should eq 500
|
1712
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1713
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1714
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1715
|
+
end
|
1716
|
+
|
1717
|
+
end
|
1718
|
+
end
|
1719
|
+
end
|
1720
|
+
|
1721
|
+
context 'its synchronous' do
|
1722
|
+
it 'handles non200 response gracefully' do
|
1723
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-non200-valid', :record => :none) do
|
1724
|
+
|
1725
|
+
@pubnub.publish(
|
1726
|
+
:message => {:text => 'sometext'},
|
1727
|
+
:channel => 'ruby_demo_channel',
|
1728
|
+
:callback => @callback,
|
1729
|
+
:http_sync => true
|
1730
|
+
)
|
1731
|
+
|
1732
|
+
@envelopes.size.should eq 0
|
1733
|
+
@error_envelopes.size.should eq 1
|
1734
|
+
@error_envelopes.first.response_message.should eq 'Sent'
|
1735
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"]')
|
1736
|
+
@error_envelopes.first.status.should eq 500
|
1737
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1738
|
+
@error_envelopes.first.message.should eq('[0,"Non 2xx server response."]')
|
1739
|
+
@error_envelopes.first.timetoken.blank?.should eq false
|
1740
|
+
|
1741
|
+
end
|
1742
|
+
end
|
1743
|
+
end
|
1744
|
+
end
|
1745
|
+
|
1746
|
+
context 'with invalid json' do
|
1747
|
+
context 'its asynchronous' do
|
1748
|
+
it 'handles invalid json and non200 response gracefully' do
|
1749
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-non200-invalid', :record => :none) do
|
1750
|
+
|
1751
|
+
@pubnub.publish(
|
1752
|
+
:message => {:text => 'sometext'},
|
1753
|
+
:channel => 'ruby_demo_channel',
|
1754
|
+
:callback => @callback
|
1755
|
+
)
|
1756
|
+
|
1757
|
+
eventually do
|
1758
|
+
@envelopes.size.should eq 0
|
1759
|
+
@error_envelopes.size.should eq 1
|
1760
|
+
@error_envelopes.first.response_message.should eq nil
|
1761
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1762
|
+
@error_envelopes.first.status.should eq 500
|
1763
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1764
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1765
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1766
|
+
end
|
1767
|
+
|
1768
|
+
end
|
1769
|
+
end
|
1770
|
+
end
|
1771
|
+
|
1772
|
+
context 'its synchronous' do
|
1773
|
+
it 'handles invalid json and non200 response gracefully' do
|
1774
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-https-non200-invalid', :record => :none) do
|
1775
|
+
|
1776
|
+
@pubnub.publish(
|
1777
|
+
:message => {:text => 'sometext'},
|
1778
|
+
:channel => 'ruby_demo_channel',
|
1779
|
+
:callback => @callback,
|
1780
|
+
:http_sync => true
|
1781
|
+
)
|
1782
|
+
|
1783
|
+
@envelopes.size.should eq 0
|
1784
|
+
@error_envelopes.size.should eq 1
|
1785
|
+
@error_envelopes.first.response_message.should eq nil
|
1786
|
+
@error_envelopes.first.response.should eq('[1,"Sent","13937904716672898"')
|
1787
|
+
@error_envelopes.first.status.should eq 500
|
1788
|
+
@error_envelopes.first.channel.should eq('ruby_demo_channel')
|
1789
|
+
@error_envelopes.first.message.should eq('[0,"Invalid JSON in response."]')
|
1790
|
+
@error_envelopes.first.timetoken.blank?.should eq true
|
1791
|
+
|
1792
|
+
end
|
1793
|
+
end
|
1794
|
+
end
|
1795
|
+
end
|
1796
|
+
end
|
1797
|
+
end
|
1798
|
+
end
|
1799
|
+
end
|
1800
|
+
|
1801
|
+
context 'when gets message as' do
|
1802
|
+
context 'array of hashes' do
|
1803
|
+
context 'and its plain' do
|
1804
|
+
it 'publishes it correctly' do
|
1805
|
+
@pubnub = Pubnub.new(
|
1806
|
+
:max_retries => 0,
|
1807
|
+
:subscribe_key => :demo,
|
1808
|
+
:publish_key => :demo,
|
1809
|
+
:secret_key => 'some_secret_key',
|
1810
|
+
:error_callback => @error_callback,
|
1811
|
+
:disable_persistent_connection => true
|
1812
|
+
)
|
1813
|
+
|
1814
|
+
@pubnub.uuid = 'tester'
|
1815
|
+
|
1816
|
+
msg = [{:a => 1}, {:b => 2}, :c => [1,2,3]]
|
1817
|
+
|
1818
|
+
VCR.use_cassette('new_ones/publish/publish-plain-array-of-hashes', :record => :none) do
|
1819
|
+
|
1820
|
+
@pubnub.publish(
|
1821
|
+
:message => msg,
|
1822
|
+
:channel => 'ruby_demo_channel',
|
1823
|
+
:callback => @callback
|
1824
|
+
)
|
1825
|
+
|
1826
|
+
eventually do
|
1827
|
+
@envelopes.size.should eq 1
|
1828
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1829
|
+
@envelopes.first.status.should eq 200
|
1830
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1831
|
+
@envelopes.first.message.should eq(msg)
|
1832
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1833
|
+
end
|
1834
|
+
end
|
1835
|
+
|
1836
|
+
end
|
1837
|
+
end
|
1838
|
+
|
1839
|
+
context 'and its encrypted' do
|
1840
|
+
it 'publishes it correctly' do
|
1841
|
+
@pubnub = Pubnub.new(
|
1842
|
+
:max_retries => 0,
|
1843
|
+
:subscribe_key => :demo,
|
1844
|
+
:publish_key => :demo,
|
1845
|
+
:secret_key => 'some_secret_key',
|
1846
|
+
:cipher_key => 'secret',
|
1847
|
+
:error_callback => @error_callback,
|
1848
|
+
:ssl => true,
|
1849
|
+
:disable_persistent_connection => true
|
1850
|
+
)
|
1851
|
+
|
1852
|
+
@pubnub.uuid = 'tester'
|
1853
|
+
|
1854
|
+
msg = [{:a => 1}, {:b => 2}, :c => [1,2,3]]
|
1855
|
+
|
1856
|
+
VCR.use_cassette('new_ones/publish/publish-encrypted-array-of-hashes', :record => :none) do
|
1857
|
+
|
1858
|
+
@pubnub.publish(
|
1859
|
+
:message => msg,
|
1860
|
+
:channel => 'ruby_demo_channel',
|
1861
|
+
:callback => @callback
|
1862
|
+
)
|
1863
|
+
|
1864
|
+
eventually do
|
1865
|
+
@envelopes.size.should eq 1
|
1866
|
+
@envelopes.first.response_message.should eq 'Sent'
|
1867
|
+
@envelopes.first.status.should eq 200
|
1868
|
+
@envelopes.first.channel.should eq 'ruby_demo_channel'
|
1869
|
+
@envelopes.first.message.should eq(msg)
|
1870
|
+
@envelopes.first.timetoken.blank?.should eq false
|
1871
|
+
end
|
1872
|
+
end
|
1873
|
+
end
|
1874
|
+
end
|
1875
|
+
end
|
1876
|
+
end
|
1877
|
+
end
|