ably 1.1.4.rc → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/check.yml +41 -0
  3. data/CHANGELOG.md +85 -0
  4. data/COPYRIGHT +1 -0
  5. data/LICENSE +173 -10
  6. data/MAINTAINERS.md +1 -0
  7. data/README.md +24 -18
  8. data/SPEC.md +1020 -922
  9. data/ably.gemspec +13 -8
  10. data/lib/ably.rb +1 -0
  11. data/lib/ably/agent.rb +3 -0
  12. data/lib/ably/auth.rb +12 -2
  13. data/lib/ably/exceptions.rb +6 -0
  14. data/lib/ably/models/connection_details.rb +2 -0
  15. data/lib/ably/models/message.rb +14 -0
  16. data/lib/ably/models/presence_message.rb +14 -0
  17. data/lib/ably/models/protocol_message.rb +8 -0
  18. data/lib/ably/modules/ably.rb +11 -1
  19. data/lib/ably/realtime/channel.rb +7 -11
  20. data/lib/ably/realtime/channel/channel_manager.rb +3 -3
  21. data/lib/ably/realtime/channel/channel_properties.rb +24 -0
  22. data/lib/ably/realtime/channel/publisher.rb +5 -0
  23. data/lib/ably/realtime/client.rb +9 -0
  24. data/lib/ably/realtime/client/incoming_message_dispatcher.rb +14 -6
  25. data/lib/ably/realtime/connection.rb +9 -5
  26. data/lib/ably/realtime/connection/websocket_transport.rb +67 -1
  27. data/lib/ably/realtime/presence.rb +0 -14
  28. data/lib/ably/rest/channel.rb +10 -3
  29. data/lib/ably/rest/client.rb +22 -21
  30. data/lib/ably/version.rb +1 -13
  31. data/spec/acceptance/realtime/auth_spec.rb +1 -1
  32. data/spec/acceptance/realtime/channel_history_spec.rb +25 -0
  33. data/spec/acceptance/realtime/channel_spec.rb +24 -0
  34. data/spec/acceptance/realtime/client_spec.rb +72 -16
  35. data/spec/acceptance/realtime/connection_failures_spec.rb +29 -12
  36. data/spec/acceptance/realtime/connection_spec.rb +31 -33
  37. data/spec/acceptance/realtime/presence_history_spec.rb +3 -59
  38. data/spec/acceptance/realtime/presence_spec.rb +66 -157
  39. data/spec/acceptance/realtime/push_admin_spec.rb +3 -19
  40. data/spec/acceptance/rest/auth_spec.rb +6 -75
  41. data/spec/acceptance/rest/base_spec.rb +8 -4
  42. data/spec/acceptance/rest/channel_spec.rb +13 -0
  43. data/spec/acceptance/rest/client_spec.rb +144 -45
  44. data/spec/acceptance/rest/push_admin_spec.rb +3 -19
  45. data/spec/shared/client_initializer_behaviour.rb +131 -8
  46. data/spec/shared/model_behaviour.rb +1 -1
  47. data/spec/spec_helper.rb +12 -2
  48. data/spec/support/serialization_helper.rb +21 -0
  49. data/spec/unit/models/message_spec.rb +59 -0
  50. data/spec/unit/models/presence_message_spec.rb +49 -0
  51. data/spec/unit/models/protocol_message_spec.rb +48 -0
  52. data/spec/unit/realtime/channel_spec.rb +1 -1
  53. data/spec/unit/realtime/client_spec.rb +19 -6
  54. data/spec/unit/realtime/incoming_message_dispatcher_spec.rb +38 -0
  55. data/spec/unit/rest/channel_spec.rb +10 -0
  56. data/spec/unit/rest/client_spec.rb +20 -0
  57. metadata +52 -32
  58. data/.travis.yml +0 -18
@@ -32,5 +32,43 @@ describe Ably::Realtime::Client::IncomingMessageDispatcher, :api_private do
32
32
  expect(subject).to receive_message_chain(:logger, :warn)
33
33
  msgbus.publish :protocol_message, Ably::Models::ProtocolMessage.new(:action => :attached, channel: 'unknown')
34
34
  end
35
+
36
+ context 'TO3l8' do
37
+ context 'on action presence' do
38
+ let(:presence) { 101.times.map { { data: 'x' * 655 } } }
39
+
40
+ let(:protocol_message) do
41
+ Ably::Models::ProtocolMessage.new(action: :presence, channel: 'default', presence: presence, connection_serial: 123123123)
42
+ end
43
+
44
+ it 'should raise a protocol error when message size exceeded 65536 bytes' do
45
+ allow(connection).to receive(:serial).and_return(12312312)
46
+ allow(subject).to receive(:update_connection_recovery_info)
47
+ allow(subject).to receive_message_chain(:logger, :debug)
48
+ allow(subject).to receive_message_chain(:logger, :warn)
49
+ expect(subject).to receive_message_chain(:logger, :fatal)
50
+
51
+ msgbus.publish :protocol_message, protocol_message
52
+ end
53
+ end
54
+
55
+ context 'on action message' do
56
+ let(:messages) { 101.times.map { { data: 'x' * 655 } } }
57
+
58
+ let(:protocol_message) do
59
+ Ably::Models::ProtocolMessage.new(action: :message, channel: 'default', messages: messages, connection_serial: 123123123)
60
+ end
61
+
62
+ it 'should raise a protocol error when message size exceeded 65536 bytes' do
63
+ allow(connection).to receive(:serial).and_return(12312312)
64
+ allow(subject).to receive(:update_connection_recovery_info)
65
+ allow(subject).to receive_message_chain(:logger, :debug)
66
+ allow(subject).to receive_message_chain(:logger, :warn)
67
+ expect(subject).to receive_message_chain(:logger, :fatal)
68
+
69
+ msgbus.publish :protocol_message, protocol_message
70
+ end
71
+ end
72
+ end
35
73
  end
36
74
  end
@@ -14,6 +14,10 @@ describe Ably::Rest::Channel do
14
14
 
15
15
  subject { Ably::Rest::Channel.new(client, channel_name) }
16
16
 
17
+ it 'should return Ably::Rest::Channel::MAX_MESSAGE_SIZE equal 65536 (TO3l8)' do
18
+ expect(Ably::Rest::Channel::MAX_MESSAGE_SIZE).to eq(65536)
19
+ end
20
+
17
21
  describe '#initializer' do
18
22
  let(:channel_name) { random_str.encode(encoding) }
19
23
 
@@ -126,5 +130,11 @@ describe Ably::Rest::Channel do
126
130
  expect { subject.publish(encoded_value, 'data') }.to raise_error ArgumentError, /must be a String/
127
131
  end
128
132
  end
133
+
134
+ context 'max message size exceeded' do
135
+ it 'should raise Ably::Exceptions::MaxMessageSizeExceeded' do
136
+ expect { subject.publish('x' * 65537, 'data') }.to raise_error Ably::Exceptions::MaxMessageSizeExceeded
137
+ end
138
+ end
129
139
  end
130
140
  end
@@ -38,6 +38,26 @@ describe Ably::Rest::Client do
38
38
  end
39
39
  end
40
40
 
41
+ context 'use agent' do
42
+ context 'set agent to non-default value' do
43
+ context 'default agent' do
44
+ let(:client_options) { { key: 'appid.keyuid:keysecret' } }
45
+
46
+ it 'should return default ably agent' do
47
+ expect(subject.agent).to eq(Ably::AGENT)
48
+ end
49
+ end
50
+
51
+ context 'custom agent' do
52
+ let(:client_options) { { key: 'appid.keyuid:keysecret', agent: 'example-gem/1.1.4 ably-ruby/1.1.5 ruby/3.0.0' } }
53
+
54
+ it 'should overwrite client.agent' do
55
+ expect(subject.agent).to eq('example-gem/1.1.4 ably-ruby/1.1.5 ruby/3.0.0')
56
+ end
57
+ end
58
+ end
59
+ end
60
+
41
61
  context ':use_token_auth' do
42
62
  context 'set to false' do
43
63
  context 'with a key and :tls => false' do
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ably
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4.rc
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lewis Marshall
8
8
  - Matthew O'Riordan
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-12-16 00:00:00.000000000 Z
12
+ date: 2021-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 1.0.0
48
+ version: '8.0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 1.0.0
55
+ version: '8.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: faraday
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -171,14 +171,14 @@ dependencies:
171
171
  requirements:
172
172
  - - "~>"
173
173
  - !ruby/object:Gem::Version
174
- version: 3.10.0
174
+ version: 3.3.0
175
175
  type: :development
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
179
  - - "~>"
180
180
  - !ruby/object:Gem::Version
181
- version: 3.10.0
181
+ version: 3.3.0
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: rspec-retry
184
184
  requirement: !ruby/object:Gem::Requirement
@@ -223,88 +223,102 @@ dependencies:
223
223
  version: '1.0'
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: bundler
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: 1.3.0
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: 1.3.0
238
+ - !ruby/object:Gem::Dependency
239
+ name: webmock
226
240
  requirement: !ruby/object:Gem::Requirement
227
241
  requirements:
228
242
  - - "~>"
229
243
  - !ruby/object:Gem::Version
230
- version: 2.2.1
244
+ version: '3.11'
231
245
  type: :development
232
246
  prerelease: false
233
247
  version_requirements: !ruby/object:Gem::Requirement
234
248
  requirements:
235
249
  - - "~>"
236
250
  - !ruby/object:Gem::Version
237
- version: 2.2.1
251
+ version: '3.11'
238
252
  - !ruby/object:Gem::Dependency
239
- name: webmock
253
+ name: simplecov
240
254
  requirement: !ruby/object:Gem::Requirement
241
255
  requirements:
242
256
  - - "~>"
243
257
  - !ruby/object:Gem::Version
244
- version: '2.2'
258
+ version: 0.21.2
245
259
  type: :development
246
260
  prerelease: false
247
261
  version_requirements: !ruby/object:Gem::Requirement
248
262
  requirements:
249
263
  - - "~>"
250
264
  - !ruby/object:Gem::Version
251
- version: '2.2'
265
+ version: 0.21.2
252
266
  - !ruby/object:Gem::Dependency
253
- name: coveralls
267
+ name: simplecov-lcov
254
268
  requirement: !ruby/object:Gem::Requirement
255
269
  requirements:
256
- - - ">="
270
+ - - "~>"
257
271
  - !ruby/object:Gem::Version
258
- version: '0'
272
+ version: 0.8.0
259
273
  type: :development
260
274
  prerelease: false
261
275
  version_requirements: !ruby/object:Gem::Requirement
262
276
  requirements:
263
- - - ">="
277
+ - - "~>"
264
278
  - !ruby/object:Gem::Version
265
- version: '0'
279
+ version: 0.8.0
266
280
  - !ruby/object:Gem::Dependency
267
281
  name: parallel_tests
268
282
  requirement: !ruby/object:Gem::Requirement
269
283
  requirements:
270
284
  - - "~>"
271
285
  - !ruby/object:Gem::Version
272
- version: '2.22'
286
+ version: '3.7'
273
287
  type: :development
274
288
  prerelease: false
275
289
  version_requirements: !ruby/object:Gem::Requirement
276
290
  requirements:
277
291
  - - "~>"
278
292
  - !ruby/object:Gem::Version
279
- version: '2.22'
293
+ version: '3.7'
280
294
  - !ruby/object:Gem::Dependency
281
295
  name: pry
282
296
  requirement: !ruby/object:Gem::Requirement
283
297
  requirements:
284
- - - ">="
298
+ - - "~>"
285
299
  - !ruby/object:Gem::Version
286
- version: '0'
300
+ version: 0.14.1
287
301
  type: :development
288
302
  prerelease: false
289
303
  version_requirements: !ruby/object:Gem::Requirement
290
304
  requirements:
291
- - - ">="
305
+ - - "~>"
292
306
  - !ruby/object:Gem::Version
293
- version: '0'
307
+ version: 0.14.1
294
308
  - !ruby/object:Gem::Dependency
295
309
  name: pry-byebug
296
310
  requirement: !ruby/object:Gem::Requirement
297
311
  requirements:
298
- - - ">="
312
+ - - "~>"
299
313
  - !ruby/object:Gem::Version
300
- version: '0'
314
+ version: 3.8.0
301
315
  type: :development
302
316
  prerelease: false
303
317
  version_requirements: !ruby/object:Gem::Requirement
304
318
  requirements:
305
- - - ">="
319
+ - - "~>"
306
320
  - !ruby/object:Gem::Version
307
- version: '0'
321
+ version: 3.8.0
308
322
  description: A Ruby client library for ably.io realtime messaging
309
323
  email:
310
324
  - lewis@lmars.net
@@ -314,18 +328,21 @@ extensions: []
314
328
  extra_rdoc_files: []
315
329
  files:
316
330
  - ".editorconfig"
331
+ - ".github/workflows/check.yml"
317
332
  - ".gitignore"
318
333
  - ".gitmodules"
319
334
  - ".rspec"
320
- - ".travis.yml"
321
335
  - CHANGELOG.md
336
+ - COPYRIGHT
322
337
  - Gemfile
323
338
  - LICENSE
339
+ - MAINTAINERS.md
324
340
  - README.md
325
341
  - Rakefile
326
342
  - SPEC.md
327
343
  - ably.gemspec
328
344
  - lib/ably.rb
345
+ - lib/ably/agent.rb
329
346
  - lib/ably/auth.rb
330
347
  - lib/ably/exceptions.rb
331
348
  - lib/ably/logger.rb
@@ -377,6 +394,7 @@ files:
377
394
  - lib/ably/realtime/auth.rb
378
395
  - lib/ably/realtime/channel.rb
379
396
  - lib/ably/realtime/channel/channel_manager.rb
397
+ - lib/ably/realtime/channel/channel_properties.rb
380
398
  - lib/ably/realtime/channel/channel_state_machine.rb
381
399
  - lib/ably/realtime/channel/publisher.rb
382
400
  - lib/ably/realtime/channel/push_channel.rb
@@ -460,6 +478,7 @@ files:
460
478
  - spec/support/protocol_helper.rb
461
479
  - spec/support/random_helper.rb
462
480
  - spec/support/rest_testapp_before_retry.rb
481
+ - spec/support/serialization_helper.rb
463
482
  - spec/support/test_app.rb
464
483
  - spec/support/test_logger_helper.rb
465
484
  - spec/unit/auth_spec.rb
@@ -512,7 +531,7 @@ homepage: http://github.com/ably/ably-ruby
512
531
  licenses:
513
532
  - Apache-2.0
514
533
  metadata: {}
515
- post_install_message:
534
+ post_install_message:
516
535
  rdoc_options: []
517
536
  require_paths:
518
537
  - lib
@@ -523,12 +542,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
523
542
  version: '0'
524
543
  required_rubygems_version: !ruby/object:Gem::Requirement
525
544
  requirements:
526
- - - ">"
545
+ - - ">="
527
546
  - !ruby/object:Gem::Version
528
- version: 1.3.1
547
+ version: '0'
529
548
  requirements: []
530
549
  rubygems_version: 3.0.3
531
- signing_key:
550
+ signing_key:
532
551
  specification_version: 4
533
552
  summary: A Ruby client library for ably.io realtime messaging implemented using EventMachine
534
553
  test_files:
@@ -574,6 +593,7 @@ test_files:
574
593
  - spec/support/protocol_helper.rb
575
594
  - spec/support/random_helper.rb
576
595
  - spec/support/rest_testapp_before_retry.rb
596
+ - spec/support/serialization_helper.rb
577
597
  - spec/support/test_app.rb
578
598
  - spec/support/test_logger_helper.rb
579
599
  - spec/unit/auth_spec.rb
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- env:
2
- - RSPEC_RETRY=true PARALLEL_TEST_PROCESSORS=2 PROTOCOL=json
3
- - RSPEC_RETRY=true PARALLEL_TEST_PROCESSORS=2 PROTOCOL=msgpack
4
- language: ruby
5
- rvm:
6
- - 1.9.3
7
- - 2.1.10
8
- - 2.2.10
9
- - 2.3.8
10
- - 2.5.5
11
- - 2.6.0
12
- - 2.6.1
13
- - 2.6.2
14
- - 2.6.3
15
- script: spec/run_parallel_tests
16
- notifications:
17
- slack:
18
- secure: Xe8MwDcV2C8XLGk6O6Co31LpQiRSxsmS7Toy5vM7rHds5fnVRBNn5iX6Q5mXMdLOlnsMhjKLt7zl4fsBOZv+siQ+Us0omZSIYpXCYSCIj8nofReF0Lj8M4oa6lFSL5OuygO7PH+wLKTRxQURGZ6Pi1nHU+RE5izRmsewQHkhtY0=