ably 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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