ably 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/.ruby-version.old +1 -0
  4. data/.travis.yml +0 -2
  5. data/Rakefile +22 -4
  6. data/SPEC.md +1676 -0
  7. data/ably.gemspec +1 -1
  8. data/lib/ably.rb +0 -8
  9. data/lib/ably/auth.rb +54 -46
  10. data/lib/ably/exceptions.rb +19 -5
  11. data/lib/ably/logger.rb +1 -1
  12. data/lib/ably/models/error_info.rb +1 -1
  13. data/lib/ably/models/idiomatic_ruby_wrapper.rb +11 -9
  14. data/lib/ably/models/message.rb +15 -12
  15. data/lib/ably/models/message_encoders/base.rb +6 -5
  16. data/lib/ably/models/message_encoders/base64.rb +1 -0
  17. data/lib/ably/models/message_encoders/cipher.rb +6 -3
  18. data/lib/ably/models/message_encoders/json.rb +1 -0
  19. data/lib/ably/models/message_encoders/utf8.rb +2 -9
  20. data/lib/ably/models/nil_logger.rb +20 -0
  21. data/lib/ably/models/paginated_resource.rb +5 -2
  22. data/lib/ably/models/presence_message.rb +21 -12
  23. data/lib/ably/models/protocol_message.rb +22 -6
  24. data/lib/ably/modules/ably.rb +11 -0
  25. data/lib/ably/modules/async_wrapper.rb +2 -0
  26. data/lib/ably/modules/conversions.rb +23 -3
  27. data/lib/ably/modules/encodeable.rb +2 -1
  28. data/lib/ably/modules/enum.rb +2 -0
  29. data/lib/ably/modules/event_emitter.rb +7 -1
  30. data/lib/ably/modules/event_machine_helpers.rb +2 -0
  31. data/lib/ably/modules/http_helpers.rb +2 -0
  32. data/lib/ably/modules/model_common.rb +12 -2
  33. data/lib/ably/modules/state_emitter.rb +76 -0
  34. data/lib/ably/modules/state_machine.rb +53 -0
  35. data/lib/ably/modules/statesman_monkey_patch.rb +33 -0
  36. data/lib/ably/modules/uses_state_machine.rb +74 -0
  37. data/lib/ably/realtime.rb +4 -2
  38. data/lib/ably/realtime/channel.rb +51 -58
  39. data/lib/ably/realtime/channel/channel_manager.rb +91 -0
  40. data/lib/ably/realtime/channel/channel_state_machine.rb +68 -0
  41. data/lib/ably/realtime/client.rb +70 -26
  42. data/lib/ably/realtime/client/incoming_message_dispatcher.rb +31 -13
  43. data/lib/ably/realtime/client/outgoing_message_dispatcher.rb +1 -1
  44. data/lib/ably/realtime/connection.rb +135 -92
  45. data/lib/ably/realtime/connection/connection_manager.rb +216 -33
  46. data/lib/ably/realtime/connection/connection_state_machine.rb +30 -73
  47. data/lib/ably/realtime/models/nil_channel.rb +10 -1
  48. data/lib/ably/realtime/presence.rb +336 -92
  49. data/lib/ably/rest.rb +2 -2
  50. data/lib/ably/rest/channel.rb +13 -4
  51. data/lib/ably/rest/client.rb +138 -38
  52. data/lib/ably/rest/middleware/logger.rb +24 -3
  53. data/lib/ably/rest/presence.rb +12 -7
  54. data/lib/ably/version.rb +1 -1
  55. data/spec/acceptance/realtime/channel_history_spec.rb +101 -85
  56. data/spec/acceptance/realtime/channel_spec.rb +461 -120
  57. data/spec/acceptance/realtime/client_spec.rb +119 -0
  58. data/spec/acceptance/realtime/connection_failures_spec.rb +499 -0
  59. data/spec/acceptance/realtime/connection_spec.rb +571 -97
  60. data/spec/acceptance/realtime/message_spec.rb +347 -333
  61. data/spec/acceptance/realtime/presence_history_spec.rb +35 -40
  62. data/spec/acceptance/realtime/presence_spec.rb +769 -239
  63. data/spec/acceptance/realtime/stats_spec.rb +14 -22
  64. data/spec/acceptance/realtime/time_spec.rb +16 -20
  65. data/spec/acceptance/rest/auth_spec.rb +425 -364
  66. data/spec/acceptance/rest/base_spec.rb +108 -176
  67. data/spec/acceptance/rest/channel_spec.rb +89 -89
  68. data/spec/acceptance/rest/channels_spec.rb +30 -32
  69. data/spec/acceptance/rest/client_spec.rb +273 -0
  70. data/spec/acceptance/rest/encoders_spec.rb +185 -0
  71. data/spec/acceptance/rest/message_spec.rb +186 -163
  72. data/spec/acceptance/rest/presence_spec.rb +150 -111
  73. data/spec/acceptance/rest/stats_spec.rb +45 -40
  74. data/spec/acceptance/rest/time_spec.rb +8 -10
  75. data/spec/rspec_config.rb +10 -1
  76. data/spec/shared/client_initializer_behaviour.rb +212 -0
  77. data/spec/{support/model_helper.rb → shared/model_behaviour.rb} +6 -6
  78. data/spec/{support/protocol_msgbus_helper.rb → shared/protocol_msgbus_behaviour.rb} +1 -1
  79. data/spec/spec_helper.rb +9 -0
  80. data/spec/support/api_helper.rb +11 -0
  81. data/spec/support/event_machine_helper.rb +101 -3
  82. data/spec/support/markdown_spec_formatter.rb +90 -0
  83. data/spec/support/private_api_formatter.rb +36 -0
  84. data/spec/support/protocol_helper.rb +32 -0
  85. data/spec/support/random_helper.rb +15 -0
  86. data/spec/support/test_app.rb +4 -0
  87. data/spec/unit/auth_spec.rb +68 -0
  88. data/spec/unit/logger_spec.rb +77 -66
  89. data/spec/unit/models/error_info_spec.rb +1 -1
  90. data/spec/unit/models/idiomatic_ruby_wrapper_spec.rb +2 -3
  91. data/spec/unit/models/message_encoders/base64_spec.rb +2 -2
  92. data/spec/unit/models/message_encoders/cipher_spec.rb +2 -2
  93. data/spec/unit/models/message_encoders/utf8_spec.rb +2 -46
  94. data/spec/unit/models/message_spec.rb +160 -15
  95. data/spec/unit/models/paginated_resource_spec.rb +29 -27
  96. data/spec/unit/models/presence_message_spec.rb +163 -20
  97. data/spec/unit/models/protocol_message_spec.rb +43 -8
  98. data/spec/unit/modules/async_wrapper_spec.rb +2 -3
  99. data/spec/unit/modules/conversions_spec.rb +1 -1
  100. data/spec/unit/modules/enum_spec.rb +2 -3
  101. data/spec/unit/modules/event_emitter_spec.rb +62 -5
  102. data/spec/unit/modules/state_emitter_spec.rb +283 -0
  103. data/spec/unit/realtime/channel_spec.rb +107 -2
  104. data/spec/unit/realtime/channels_spec.rb +1 -0
  105. data/spec/unit/realtime/client_spec.rb +8 -48
  106. data/spec/unit/realtime/connection_spec.rb +3 -3
  107. data/spec/unit/realtime/incoming_message_dispatcher_spec.rb +2 -2
  108. data/spec/unit/realtime/presence_spec.rb +13 -4
  109. data/spec/unit/realtime/realtime_spec.rb +0 -11
  110. data/spec/unit/realtime/websocket_transport_spec.rb +2 -2
  111. data/spec/unit/rest/channel_spec.rb +109 -0
  112. data/spec/unit/rest/channels_spec.rb +4 -3
  113. data/spec/unit/rest/client_spec.rb +30 -125
  114. data/spec/unit/rest/rest_spec.rb +10 -0
  115. data/spec/unit/util/crypto_spec.rb +10 -5
  116. data/spec/unit/util/pub_sub_spec.rb +5 -5
  117. metadata +44 -12
  118. data/spec/integration/modules/state_emitter_spec.rb +0 -80
  119. data/spec/integration/rest/auth.rb +0 -9
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Ably::Rest do
5
+ let(:options) { { api_key: 'app.key:secret' } }
6
+
7
+ specify 'constructor returns an Ably::Rest::Client' do
8
+ expect(Ably::Rest.new(options)).to be_instance_of(Ably::Rest::Client)
9
+ end
10
+ end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  require 'msgpack'
3
3
 
4
4
  describe Ably::Util::Crypto do
5
- let(:seret_key) { SecureRandom.hex }
5
+ let(:seret_key) { random_str }
6
6
  let(:cipher_options) { { key: seret_key } }
7
7
  subject { Ably::Util::Crypto.new(cipher_options) }
8
8
 
@@ -22,10 +22,15 @@ describe Ably::Util::Crypto do
22
22
  end
23
23
 
24
24
  context 'encrypts & decrypt' do
25
- let(:string) { SecureRandom.hex }
26
- let(:byte_array) { SecureRandom.hex.to_msgpack.unpack('C*') }
25
+ let(:string) { random_str }
26
+ let(:byte_array) { random_str.to_msgpack.unpack('C*') }
27
27
 
28
- specify 'a string' do
28
+ specify '#encrypt encrypts a string' do
29
+ encrypted = subject.encrypt(string)
30
+ expect(subject.decrypt(encrypted)).to eql(string)
31
+ end
32
+
33
+ specify '#decrypt decrypts a string' do
29
34
  encrypted = subject.encrypt(string)
30
35
  expect(subject.decrypt(encrypted)).to eql(string)
31
36
  end
@@ -34,7 +39,7 @@ describe Ably::Util::Crypto do
34
39
  context 'encrypting an empty string' do
35
40
  let(:empty_string) { '' }
36
41
 
37
- it 'raises an ErgumentError' do
42
+ it 'raises an ArgumentError' do
38
43
  expect { subject.encrypt(empty_string) }.to raise_error ArgumentError, /data must not be empty/
39
44
  end
40
45
  end
@@ -8,7 +8,7 @@ describe Ably::Util::PubSub do
8
8
  subject { Ably::Util::PubSub.new(options) }
9
9
 
10
10
  context 'event fan out' do
11
- specify 'allows publishing to more than on subscriber' do
11
+ specify '#publish allows publishing to more than on subscriber' do
12
12
  expect(obj).to receive(:received_message).with(msg).twice
13
13
  2.times do
14
14
  subject.subscribe(:message) { |msg| obj.received_message msg }
@@ -16,7 +16,7 @@ describe Ably::Util::PubSub do
16
16
  subject.publish :message, msg
17
17
  end
18
18
 
19
- it 'sends only messages to matching event names' do
19
+ it '#publish sends only messages to #subscribe callbacks matching event names' do
20
20
  expect(obj).to receive(:received_message).with(msg).once
21
21
  subject.subscribe(:valid) { |msg| obj.received_message msg }
22
22
  subject.publish :valid, msg
@@ -24,7 +24,7 @@ describe Ably::Util::PubSub do
24
24
  subject.publish 'valid', msg
25
25
  end
26
26
 
27
- context 'with coercion' do
27
+ context 'with coercion', api_private: true do
28
28
  let(:options) do
29
29
  { coerce_into: Proc.new { |event| String(event) } }
30
30
  end
@@ -48,7 +48,7 @@ describe Ably::Util::PubSub do
48
48
  end
49
49
  end
50
50
 
51
- context 'without coercion' do
51
+ context 'without coercion', api_private: true do
52
52
  it 'only matches event names on type matches' do
53
53
  expect(obj).to_not receive(:received_message).with(msg)
54
54
  subject.subscribe('valid') { |msg| obj.received_message msg }
@@ -57,7 +57,7 @@ describe Ably::Util::PubSub do
57
57
  end
58
58
  end
59
59
 
60
- context '#off' do
60
+ context '#unsubscribe' do
61
61
  let(:callback) { Proc.new { |msg| obj.received_message msg } }
62
62
 
63
63
  before do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ably
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lewis Marshall
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-10 00:00:00.000000000 Z
12
+ date: 2015-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
@@ -143,14 +143,14 @@ dependencies:
143
143
  requirements:
144
144
  - - "~>"
145
145
  - !ruby/object:Gem::Version
146
- version: '3.0'
146
+ version: 3.1.0
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: '3.0'
153
+ version: 3.1.0
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: yard
156
156
  requirement: !ruby/object:Gem::Requirement
@@ -188,11 +188,14 @@ extensions: []
188
188
  extra_rdoc_files: []
189
189
  files:
190
190
  - ".gitignore"
191
+ - ".rspec"
192
+ - ".ruby-version.old"
191
193
  - ".travis.yml"
192
194
  - Gemfile
193
195
  - LICENSE.txt
194
196
  - README.md
195
197
  - Rakefile
198
+ - SPEC.md
196
199
  - ably.gemspec
197
200
  - lib/ably.rb
198
201
  - lib/ably/auth.rb
@@ -206,10 +209,12 @@ files:
206
209
  - lib/ably/models/message_encoders/cipher.rb
207
210
  - lib/ably/models/message_encoders/json.rb
208
211
  - lib/ably/models/message_encoders/utf8.rb
212
+ - lib/ably/models/nil_logger.rb
209
213
  - lib/ably/models/paginated_resource.rb
210
214
  - lib/ably/models/presence_message.rb
211
215
  - lib/ably/models/protocol_message.rb
212
216
  - lib/ably/models/token.rb
217
+ - lib/ably/modules/ably.rb
213
218
  - lib/ably/modules/async_wrapper.rb
214
219
  - lib/ably/modules/channels_collection.rb
215
220
  - lib/ably/modules/conversions.rb
@@ -221,8 +226,13 @@ files:
221
226
  - lib/ably/modules/message_pack.rb
222
227
  - lib/ably/modules/model_common.rb
223
228
  - lib/ably/modules/state_emitter.rb
229
+ - lib/ably/modules/state_machine.rb
230
+ - lib/ably/modules/statesman_monkey_patch.rb
231
+ - lib/ably/modules/uses_state_machine.rb
224
232
  - lib/ably/realtime.rb
225
233
  - lib/ably/realtime/channel.rb
234
+ - lib/ably/realtime/channel/channel_manager.rb
235
+ - lib/ably/realtime/channel/channel_state_machine.rb
226
236
  - lib/ably/realtime/channels.rb
227
237
  - lib/ably/realtime/client.rb
228
238
  - lib/ably/realtime/client/incoming_message_dispatcher.rb
@@ -250,6 +260,8 @@ files:
250
260
  - lib/ably/version.rb
251
261
  - spec/acceptance/realtime/channel_history_spec.rb
252
262
  - spec/acceptance/realtime/channel_spec.rb
263
+ - spec/acceptance/realtime/client_spec.rb
264
+ - spec/acceptance/realtime/connection_failures_spec.rb
253
265
  - spec/acceptance/realtime/connection_spec.rb
254
266
  - spec/acceptance/realtime/message_spec.rb
255
267
  - spec/acceptance/realtime/presence_history_spec.rb
@@ -260,21 +272,27 @@ files:
260
272
  - spec/acceptance/rest/base_spec.rb
261
273
  - spec/acceptance/rest/channel_spec.rb
262
274
  - spec/acceptance/rest/channels_spec.rb
275
+ - spec/acceptance/rest/client_spec.rb
276
+ - spec/acceptance/rest/encoders_spec.rb
263
277
  - spec/acceptance/rest/message_spec.rb
264
278
  - spec/acceptance/rest/presence_spec.rb
265
279
  - spec/acceptance/rest/stats_spec.rb
266
280
  - spec/acceptance/rest/time_spec.rb
267
- - spec/integration/modules/state_emitter_spec.rb
268
- - spec/integration/rest/auth.rb
269
281
  - spec/resources/crypto-data-128.json
270
282
  - spec/resources/crypto-data-256.json
271
283
  - spec/rspec_config.rb
284
+ - spec/shared/client_initializer_behaviour.rb
285
+ - spec/shared/model_behaviour.rb
286
+ - spec/shared/protocol_msgbus_behaviour.rb
272
287
  - spec/spec_helper.rb
273
288
  - spec/support/api_helper.rb
274
289
  - spec/support/event_machine_helper.rb
275
- - spec/support/model_helper.rb
276
- - spec/support/protocol_msgbus_helper.rb
290
+ - spec/support/markdown_spec_formatter.rb
291
+ - spec/support/private_api_formatter.rb
292
+ - spec/support/protocol_helper.rb
293
+ - spec/support/random_helper.rb
277
294
  - spec/support/test_app.rb
295
+ - spec/unit/auth_spec.rb
278
296
  - spec/unit/logger_spec.rb
279
297
  - spec/unit/models/error_info_spec.rb
280
298
  - spec/unit/models/idiomatic_ruby_wrapper_spec.rb
@@ -291,6 +309,7 @@ files:
291
309
  - spec/unit/modules/conversions_spec.rb
292
310
  - spec/unit/modules/enum_spec.rb
293
311
  - spec/unit/modules/event_emitter_spec.rb
312
+ - spec/unit/modules/state_emitter_spec.rb
294
313
  - spec/unit/realtime/channel_spec.rb
295
314
  - spec/unit/realtime/channels_spec.rb
296
315
  - spec/unit/realtime/client_spec.rb
@@ -299,8 +318,10 @@ files:
299
318
  - spec/unit/realtime/presence_spec.rb
300
319
  - spec/unit/realtime/realtime_spec.rb
301
320
  - spec/unit/realtime/websocket_transport_spec.rb
321
+ - spec/unit/rest/channel_spec.rb
302
322
  - spec/unit/rest/channels_spec.rb
303
323
  - spec/unit/rest/client_spec.rb
324
+ - spec/unit/rest/rest_spec.rb
304
325
  - spec/unit/util/crypto_spec.rb
305
326
  - spec/unit/util/pub_sub_spec.rb
306
327
  homepage: http://github.com/ably/ably-ruby
@@ -330,6 +351,8 @@ summary: A Ruby client library for ably.io, the real-time messaging service
330
351
  test_files:
331
352
  - spec/acceptance/realtime/channel_history_spec.rb
332
353
  - spec/acceptance/realtime/channel_spec.rb
354
+ - spec/acceptance/realtime/client_spec.rb
355
+ - spec/acceptance/realtime/connection_failures_spec.rb
333
356
  - spec/acceptance/realtime/connection_spec.rb
334
357
  - spec/acceptance/realtime/message_spec.rb
335
358
  - spec/acceptance/realtime/presence_history_spec.rb
@@ -340,21 +363,27 @@ test_files:
340
363
  - spec/acceptance/rest/base_spec.rb
341
364
  - spec/acceptance/rest/channel_spec.rb
342
365
  - spec/acceptance/rest/channels_spec.rb
366
+ - spec/acceptance/rest/client_spec.rb
367
+ - spec/acceptance/rest/encoders_spec.rb
343
368
  - spec/acceptance/rest/message_spec.rb
344
369
  - spec/acceptance/rest/presence_spec.rb
345
370
  - spec/acceptance/rest/stats_spec.rb
346
371
  - spec/acceptance/rest/time_spec.rb
347
- - spec/integration/modules/state_emitter_spec.rb
348
- - spec/integration/rest/auth.rb
349
372
  - spec/resources/crypto-data-128.json
350
373
  - spec/resources/crypto-data-256.json
351
374
  - spec/rspec_config.rb
375
+ - spec/shared/client_initializer_behaviour.rb
376
+ - spec/shared/model_behaviour.rb
377
+ - spec/shared/protocol_msgbus_behaviour.rb
352
378
  - spec/spec_helper.rb
353
379
  - spec/support/api_helper.rb
354
380
  - spec/support/event_machine_helper.rb
355
- - spec/support/model_helper.rb
356
- - spec/support/protocol_msgbus_helper.rb
381
+ - spec/support/markdown_spec_formatter.rb
382
+ - spec/support/private_api_formatter.rb
383
+ - spec/support/protocol_helper.rb
384
+ - spec/support/random_helper.rb
357
385
  - spec/support/test_app.rb
386
+ - spec/unit/auth_spec.rb
358
387
  - spec/unit/logger_spec.rb
359
388
  - spec/unit/models/error_info_spec.rb
360
389
  - spec/unit/models/idiomatic_ruby_wrapper_spec.rb
@@ -371,6 +400,7 @@ test_files:
371
400
  - spec/unit/modules/conversions_spec.rb
372
401
  - spec/unit/modules/enum_spec.rb
373
402
  - spec/unit/modules/event_emitter_spec.rb
403
+ - spec/unit/modules/state_emitter_spec.rb
374
404
  - spec/unit/realtime/channel_spec.rb
375
405
  - spec/unit/realtime/channels_spec.rb
376
406
  - spec/unit/realtime/client_spec.rb
@@ -379,8 +409,10 @@ test_files:
379
409
  - spec/unit/realtime/presence_spec.rb
380
410
  - spec/unit/realtime/realtime_spec.rb
381
411
  - spec/unit/realtime/websocket_transport_spec.rb
412
+ - spec/unit/rest/channel_spec.rb
382
413
  - spec/unit/rest/channels_spec.rb
383
414
  - spec/unit/rest/client_spec.rb
415
+ - spec/unit/rest/rest_spec.rb
384
416
  - spec/unit/util/crypto_spec.rb
385
417
  - spec/unit/util/pub_sub_spec.rb
386
418
  has_rdoc:
@@ -1,80 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Ably::Modules::StateEmitter do
4
- class ExampleStateWithEventEmitter
5
- include Ably::Modules::EventEmitter
6
- extend Ably::Modules::Enum
7
-
8
- STATE = ruby_enum('STATE',
9
- :initializing,
10
- :connecting,
11
- :connected,
12
- :disconnected
13
- )
14
- include Ably::Modules::StateEmitter
15
-
16
- def initialize
17
- @state = :initializing
18
- end
19
- end
20
-
21
- let(:initial_state) { :initializing }
22
-
23
- subject { ExampleStateWithEventEmitter.new }
24
-
25
- specify '#state returns current state' do
26
- expect(subject.state).to eq(:initializing)
27
- end
28
-
29
- specify '#state= sets current state' do
30
- expect { subject.state = :connecting }.to change { subject.state }.to(:connecting)
31
- end
32
-
33
- specify '#change_state sets current state' do
34
- expect { subject.change_state :connecting }.to change { subject.state }.to(:connecting)
35
- end
36
-
37
- context '#change_state with arguments' do
38
- let(:args) { [5,3,1] }
39
- let(:callback_status) { { called: false } }
40
-
41
- it 'passes the arguments through to the triggered callback' do
42
- subject.on(:connecting) do |*callback_args|
43
- expect(callback_args).to eql(args)
44
- callback_status[:called] = true
45
- end
46
- expect { subject.change_state :connecting, *args }.to change { subject.state }.to(:connecting)
47
- expect(callback_status).to eql(called: true)
48
- end
49
- end
50
-
51
- context '#state?' do
52
- it 'returns true if state matches' do
53
- expect(subject.state?(initial_state)).to eql(true)
54
- end
55
-
56
- it 'returns false if state does not match' do
57
- expect(subject.state?(:connecting)).to eql(false)
58
- end
59
-
60
- context 'and convenience predicates for states' do
61
- it 'returns true if state matches' do
62
- expect(subject.initializing?).to eql(true)
63
- end
64
-
65
- it 'returns false if state does not match' do
66
- expect(subject.connecting?).to eql(false)
67
- end
68
- end
69
- end
70
-
71
- context '#state STATE coercion' do
72
- it 'allows valid STATE values' do
73
- expect { subject.state = :connected }.to_not raise_error
74
- end
75
-
76
- it 'prevents invalid STATE values' do
77
- expect { subject.state = :invalid }.to raise_error KeyError
78
- end
79
- end
80
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Ably::Auth do
4
- let(:client) { Ably::Rest::Client.new(key_id: 'id', key_secret: 'secret') }
5
-
6
- it 'has immutable options' do
7
- expect { client.auth.options['key_id'] = 'new_id' }.to raise_error RuntimeError, /can't modify frozen Hash/
8
- end
9
- end