ably 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -1
  3. data/ably.gemspec +4 -3
  4. data/lib/ably/auth.rb +4 -4
  5. data/lib/ably/logger.rb +1 -1
  6. data/lib/ably/models/idiomatic_ruby_wrapper.rb +8 -8
  7. data/lib/ably/models/message.rb +6 -4
  8. data/lib/ably/models/presence_message.rb +6 -4
  9. data/lib/ably/modules/async_wrapper.rb +2 -2
  10. data/lib/ably/modules/conversions.rb +1 -1
  11. data/lib/ably/modules/encodeable.rb +1 -1
  12. data/lib/ably/modules/event_emitter.rb +2 -2
  13. data/lib/ably/modules/safe_deferrable.rb +1 -1
  14. data/lib/ably/modules/safe_yield.rb +1 -1
  15. data/lib/ably/modules/state_emitter.rb +5 -5
  16. data/lib/ably/realtime/auth.rb +1 -1
  17. data/lib/ably/realtime/channel.rb +3 -3
  18. data/lib/ably/realtime/channel/channel_manager.rb +2 -2
  19. data/lib/ably/realtime/client/incoming_message_dispatcher.rb +3 -2
  20. data/lib/ably/realtime/connection.rb +11 -6
  21. data/lib/ably/realtime/connection/websocket_transport.rb +1 -1
  22. data/lib/ably/realtime/presence.rb +3 -3
  23. data/lib/ably/realtime/presence/members_map.rb +6 -6
  24. data/lib/ably/rest/channel.rb +2 -2
  25. data/lib/ably/rest/client.rb +20 -12
  26. data/lib/ably/version.rb +1 -1
  27. data/spec/acceptance/realtime/auth_spec.rb +13 -37
  28. data/spec/acceptance/realtime/channel_history_spec.rb +7 -1
  29. data/spec/acceptance/realtime/channel_spec.rb +3 -3
  30. data/spec/acceptance/realtime/client_spec.rb +2 -2
  31. data/spec/acceptance/realtime/connection_failures_spec.rb +221 -7
  32. data/spec/acceptance/realtime/connection_spec.rb +13 -21
  33. data/spec/acceptance/realtime/message_spec.rb +2 -2
  34. data/spec/acceptance/realtime/presence_history_spec.rb +12 -3
  35. data/spec/acceptance/realtime/presence_spec.rb +10 -10
  36. data/spec/acceptance/rest/auth_spec.rb +21 -48
  37. data/spec/acceptance/rest/client_spec.rb +193 -68
  38. data/spec/shared/client_initializer_behaviour.rb +1 -9
  39. data/spec/spec_helper.rb +2 -0
  40. data/spec/support/event_emitter_helper.rb +31 -0
  41. data/spec/support/event_machine_helper.rb +1 -1
  42. data/spec/support/test_logger_helper.rb +42 -0
  43. data/spec/unit/logger_spec.rb +1 -9
  44. data/spec/unit/modules/async_wrapper_spec.rb +2 -2
  45. data/spec/unit/modules/event_emitter_spec.rb +3 -3
  46. data/spec/unit/modules/state_emitter_spec.rb +10 -10
  47. data/spec/unit/realtime/channel_spec.rb +1 -1
  48. data/spec/unit/realtime/connection_spec.rb +1 -1
  49. data/spec/unit/realtime/presence_spec.rb +1 -1
  50. data/spec/unit/rest/channel_spec.rb +22 -0
  51. data/spec/unit/util/pub_sub_spec.rb +3 -3
  52. metadata +26 -8
@@ -131,7 +131,7 @@ describe Ably::Realtime::Connection, :event_machine do
131
131
  let(:ttl) { 0.001 }
132
132
  let(:auth_requests) { [] }
133
133
  let(:token_callback) do
134
- Proc.new do
134
+ lambda do |token_params|
135
135
  auth_requests << Time.now
136
136
  Ably::Rest::Client.new(default_options).auth.request_token(ttl: ttl).token
137
137
  end
@@ -246,7 +246,7 @@ describe Ably::Realtime::Connection, :event_machine do
246
246
  let(:ttl) { 4 }
247
247
  let(:auth_requests) { [] }
248
248
  let(:token_callback) do
249
- Proc.new do
249
+ lambda do |token_params|
250
250
  sleep 2
251
251
  auth_requests << Time.now
252
252
  Ably::Rest::Client.new(default_options).auth.request_token(ttl: ttl).token
@@ -298,7 +298,7 @@ describe Ably::Realtime::Connection, :event_machine do
298
298
  context 'and subsequent token is invalid' do
299
299
  let(:ttl) { 2 }
300
300
  let(:token_callback) do
301
- Proc.new do
301
+ lambda do |token_params|
302
302
  if @token_issued
303
303
  "#{app_id}.invalid-token-invalid-token-invalid-token"
304
304
  else
@@ -417,7 +417,7 @@ describe Ably::Realtime::Connection, :event_machine do
417
417
  let(:phases) { [:connecting, :connected] }
418
418
  let(:events_emitted) { [] }
419
419
  let(:test_expectation) do
420
- Proc.new do
420
+ lambda do
421
421
  expect(events_emitted).to eq(phases)
422
422
  stop_reactor
423
423
  end
@@ -466,7 +466,7 @@ describe Ably::Realtime::Connection, :event_machine do
466
466
  been_disconnected = true
467
467
  end
468
468
  connection.once(:connecting) do
469
- close_if_transport_available = proc do
469
+ close_if_transport_available = lambda do
470
470
  EventMachine.add_timer(0.001) do
471
471
  if connection.transport
472
472
  connection.transport.close_connection_after_writing
@@ -796,7 +796,7 @@ describe Ably::Realtime::Connection, :event_machine do
796
796
  end
797
797
  end
798
798
 
799
- ping_block = Proc.new do
799
+ ping_block = lambda do |time|
800
800
  pings_complete << true
801
801
  if pings_complete.length == 3
802
802
  expect(heartbeat_ids.uniq.length).to eql(3)
@@ -980,7 +980,6 @@ describe Ably::Realtime::Connection, :event_machine do
980
980
 
981
981
  context 'transport-level heartbeats are supported in the websocket transport' do
982
982
  it 'provides the heartbeats argument in the websocket connection params (#RTN23b)' do
983
- skip 'Native heartbeats not yet supported in the WS driver https://github.com/ably/ably-ruby/issues/116'
984
983
  expect(EventMachine).to receive(:connect) do |host, port, transport, object, url|
985
984
  uri = URI.parse(url)
986
985
  expect(CGI::parse(uri.query)['heartbeats'][0]).to eql('false')
@@ -990,12 +989,10 @@ describe Ably::Realtime::Connection, :event_machine do
990
989
  end
991
990
 
992
991
  it 'receives websocket heartbeat messages (#RTN23b) [slow test as need to wait for heartbeat]', em_timeout: 45 do
993
- skip "Heartbeats param is missing from realtime implementation, see https://github.com/ably/realtime/issues/656"
994
-
995
992
  connection.once(:connected) do
996
993
  connection.__incoming_protocol_msgbus__.subscribe(:protocol_message) do |protocol_message|
997
994
  if protocol_message.action == :heartbeat
998
- expect(protocol_message.attributes[:source]).to eql('websocket')
995
+ expect(protocol_message.attributes[:source]).to eql(:websocket)
999
996
  expect(connection.time_since_connection_confirmed_alive?).to be_within(1).of(0)
1000
997
  stop_reactor
1001
998
  end
@@ -1021,7 +1018,8 @@ describe Ably::Realtime::Connection, :event_machine do
1021
1018
  connection.once(:connected) do
1022
1019
  connection.__incoming_protocol_msgbus__.subscribe(:protocol_message) do |protocol_message|
1023
1020
  if protocol_message.action == :heartbeat
1024
- expect(protocol_message.attributes[:source]).to_not eql('websocket')
1021
+ next if protocol_message.attributes[:source] == :websocket # ignore the native heartbeats
1022
+ expect(protocol_message.attributes[:source]).to_not eql(:websocket)
1025
1023
  expect(connection.time_since_connection_confirmed_alive?).to be_within(1).of(0)
1026
1024
  stop_reactor
1027
1025
  end
@@ -1176,24 +1174,18 @@ describe Ably::Realtime::Connection, :event_machine do
1176
1174
  end
1177
1175
 
1178
1176
  context "opening a new connection using a recently disconnected connection's #recovery_key" do
1179
- context 'connection#id and connection#key after recovery' do
1180
- it 'remains the same for id and party for key' do
1181
- connection_key_consistent_part_regex = /.*?!([\w-]{5,})-\w+/
1177
+ context 'connection#id after recovery' do
1178
+ it 'remains the same' do
1182
1179
  previous_connection_id = nil
1183
- previous_connection_key = nil
1184
1180
 
1185
1181
  connection.once(:connected) do
1186
1182
  previous_connection_id = connection.id
1187
- previous_connection_key = connection.key
1188
1183
  connection.transition_state_machine! :failed
1189
1184
  end
1190
1185
 
1191
1186
  connection.once(:failed) do
1192
1187
  recover_client = auto_close Ably::Realtime::Client.new(default_options.merge(recover: client.connection.recovery_key))
1193
1188
  recover_client.connection.on(:connected) do
1194
- expect(recover_client.connection.key[connection_key_consistent_part_regex, 1]).to_not be_nil
1195
- expect(recover_client.connection.key[connection_key_consistent_part_regex, 1]).to eql(
1196
- previous_connection_key[connection_key_consistent_part_regex, 1])
1197
1189
  expect(recover_client.connection.id).to eql(previous_connection_id)
1198
1190
  stop_reactor
1199
1191
  end
@@ -1485,7 +1477,7 @@ describe Ably::Realtime::Connection, :event_machine do
1485
1477
  end
1486
1478
  end
1487
1479
 
1488
- close_connection_proc = Proc.new do
1480
+ close_connection_proc = lambda do
1489
1481
  EventMachine.add_timer(0.001) do
1490
1482
  if connection.transport.nil?
1491
1483
  close_connection_proc.call
@@ -1523,7 +1515,7 @@ describe Ably::Realtime::Connection, :event_machine do
1523
1515
  # See https://github.com/ably/ably-ruby/issues/103
1524
1516
  it 'emits event to all and single subscribers' do
1525
1517
  connected_emitted = []
1526
- block = Proc.new do |state_change|
1518
+ block = lambda do |state_change|
1527
1519
  if state_change.current == :connected
1528
1520
  connected_emitted << state_change
1529
1521
  EventMachine.add_timer(0.5) do
@@ -284,7 +284,7 @@ describe 'Ably::Realtime::Channel Message', :event_machine do
284
284
  end
285
285
 
286
286
  it 'sends and receives the messages on both opened connections and calls the success callbacks for each message published', em_timeout: 10 do
287
- check_message_and_callback_counts = Proc.new do
287
+ check_message_and_callback_counts = lambda do
288
288
  if echos[:client] == expected_echos && echos[:other] == expected_echos
289
289
  # Wait for message backlog to clear
290
290
  EventMachine.add_timer(0.5) do
@@ -650,7 +650,7 @@ describe 'Ably::Realtime::Channel Message', :event_machine do
650
650
  let(:msgs_received) { [] }
651
651
 
652
652
  it 'publishes the message again, later receives the ACK and only one message is ever received from Ably' do
653
- on_reconnected = Proc.new do
653
+ on_reconnected = lambda do |*args|
654
654
  expect(message_state).to be_empty
655
655
  EventMachine.add_timer(2) do
656
656
  expect(message_state).to contain_exactly(:delivered)
@@ -71,11 +71,14 @@ describe Ably::Realtime::Presence, 'history', :event_machine do
71
71
  end
72
72
 
73
73
  context 'and two pages of messages' do
74
- let(:wildcard_token) { Proc.new { Ably::Rest::Client.new(default_options).auth.request_token(client_id: '*') } }
74
+ let(:wildcard_token) { lambda { |token_params| Ably::Rest::Client.new(default_options).auth.request_token(client_id: '*') } }
75
75
  let(:client_one) { auto_close Ably::Realtime::Client.new(default_options.merge(auth_callback: wildcard_token)) }
76
76
  let(:client_two) { auto_close Ably::Realtime::Client.new(default_options.merge(auth_callback: wildcard_token)) }
77
77
 
78
- it 'retrieves two pages of messages before channel was attached' do
78
+ # TODO: Remove retry logic when presence history regression fixed
79
+ # https://github.com/ably/realtime/issues/1707
80
+ #
81
+ it 'retrieves two pages of messages before channel was attached', retry: 10, :retry_wait => 5 do
79
82
  when_all(*10.times.map { |i| presence_client_two.enter_client("client:#{i}", presence_data_before_attach) }) do
80
83
  when_all(*10.times.map { |i| presence_client_one.enter_client("client:#{i}", presence_data_after_attach) }) do
81
84
  presence_client_one.history(until_attach: true, limit: 5) do |presence_page|
@@ -85,7 +88,13 @@ describe Ably::Realtime::Presence, 'history', :event_machine do
85
88
  presence_page.next do |presence_next_page|
86
89
  expect(presence_next_page.items.count).to eql(5)
87
90
  expect(presence_next_page.items.map(&:data).uniq.first).to eql(presence_data_before_attach)
88
- expect(presence_next_page).to be_last
91
+ if presence_next_page.has_next?
92
+ presence_next_page.next do |last|
93
+ expect(last.items.count).to eql(0)
94
+ end
95
+ else
96
+ expect(presence_next_page).to be_last
97
+ end
89
98
  stop_reactor
90
99
  end
91
100
  end
@@ -14,7 +14,7 @@ describe Ably::Realtime::Presence, :event_machine do
14
14
  let(:client_two_id) { random_str }
15
15
  let(:client_two) { auto_close Ably::Realtime::Client.new(client_options.merge(client_id: client_two_id)) }
16
16
 
17
- let(:wildcard_token) { Proc.new { Ably::Rest::Client.new(client_options).auth.request_token(client_id: '*') } }
17
+ let(:wildcard_token) { lambda { |token_params| Ably::Rest::Client.new(client_options).auth.request_token(client_id: '*') } }
18
18
  let(:channel_name) { "presence-#{random_str(4)}" }
19
19
  let(:channel_anonymous_client) { anonymous_client.channel(channel_name) }
20
20
  let(:presence_anonymous_client) { channel_anonymous_client.presence }
@@ -1354,7 +1354,7 @@ describe Ably::Realtime::Presence, :event_machine do
1354
1354
  clients << presence
1355
1355
  next unless clients.count == 5
1356
1356
 
1357
- wait_until(proc { updated_callback_count == 5 }) do
1357
+ wait_until(lambda { updated_callback_count == 5 }) do
1358
1358
  expect(clients.map(&:client_id).uniq.count).to eql(5)
1359
1359
  expect(updated_callback_count).to eql(5)
1360
1360
  stop_reactor
@@ -1388,7 +1388,7 @@ describe Ably::Realtime::Presence, :event_machine do
1388
1388
  clients << presence
1389
1389
  next unless clients.count == 5
1390
1390
 
1391
- wait_until(proc { updated_callback_count == 5 }) do
1391
+ wait_until(lambda { updated_callback_count == 5 }) do
1392
1392
  expect(clients.map(&:client_id).uniq.count).to eql(5)
1393
1393
  expect(updated_callback_count).to eql(5)
1394
1394
  stop_reactor
@@ -1420,7 +1420,7 @@ describe Ably::Realtime::Presence, :event_machine do
1420
1420
  clients << presence
1421
1421
  next unless clients.count == 5
1422
1422
 
1423
- wait_until(proc { left_callback_count == 5 }) do
1423
+ wait_until(lambda { left_callback_count == 5 }) do
1424
1424
  expect(clients.map(&:client_id).uniq.count).to eql(5)
1425
1425
  expect(left_callback_count).to eql(5)
1426
1426
  stop_reactor
@@ -1442,7 +1442,7 @@ describe Ably::Realtime::Presence, :event_machine do
1442
1442
  clients << presence
1443
1443
  next unless clients.count == 5
1444
1444
 
1445
- wait_until(proc { left_callback_count == 5 }) do
1445
+ wait_until(lambda { left_callback_count == 5 }) do
1446
1446
  expect(clients.map(&:client_id).uniq.count).to eql(5)
1447
1447
  expect(left_callback_count).to eql(5)
1448
1448
  stop_reactor
@@ -1789,7 +1789,7 @@ describe Ably::Realtime::Presence, :event_machine do
1789
1789
  clients_entered[:client_two] += 1
1790
1790
  end
1791
1791
 
1792
- wait_until(proc { clients_entered[:client_one] + clients_entered[:client_two] == total_members * 2 }) do
1792
+ wait_until(lambda { clients_entered[:client_one] + clients_entered[:client_two] == total_members * 2 }) do
1793
1793
  presence_anonymous_client.get(wait_for_sync: true) do |anonymous_members|
1794
1794
  expect(anonymous_members.count).to eq(total_members)
1795
1795
  expect(anonymous_members.map(&:client_id).uniq.count).to eq(total_members)
@@ -1886,7 +1886,7 @@ describe Ably::Realtime::Presence, :event_machine do
1886
1886
  context 'with no arguments' do
1887
1887
  it 'removes the callback for all presence events' do
1888
1888
  when_all(channel_client_one.attach, channel_client_two.attach) do
1889
- subscribe_callback = proc { raise 'Should not be called' }
1889
+ subscribe_callback = lambda { raise 'Should not be called' }
1890
1890
  presence_client_two.subscribe(&subscribe_callback)
1891
1891
  presence_client_two.unsubscribe(&subscribe_callback)
1892
1892
 
@@ -1904,7 +1904,7 @@ describe Ably::Realtime::Presence, :event_machine do
1904
1904
  context 'with event name' do
1905
1905
  it 'removes the callback for specified presence event' do
1906
1906
  when_all(channel_client_one.attach, channel_client_two.attach) do
1907
- subscribe_callback = proc { raise 'Should not be called' }
1907
+ subscribe_callback = lambda { raise 'Should not be called' }
1908
1908
  presence_client_two.subscribe :leave, &subscribe_callback
1909
1909
  presence_client_two.unsubscribe :leave, &subscribe_callback
1910
1910
 
@@ -2337,7 +2337,7 @@ describe Ably::Realtime::Presence, :event_machine do
2337
2337
  let(:present_only_capability) do
2338
2338
  { channel_name => ["presence"] }
2339
2339
  end
2340
- let(:present_only_callback) { Proc.new { Ably::Rest::Client.new(client_options).auth.request_token(client_id: '*', capability: present_only_capability) } }
2340
+ let(:present_only_callback) { lambda { |token_params| Ably::Rest::Client.new(client_options).auth.request_token(client_id: '*', capability: present_only_capability) } }
2341
2341
  let(:client_one) { auto_close Ably::Realtime::Client.new(client_options.merge(auth_callback: present_only_callback)) }
2342
2342
 
2343
2343
  it 'receives presence updates for all presence events generated by the current connection and the presence map is kept up to date (#RTP17a)' do
@@ -2751,7 +2751,7 @@ describe Ably::Realtime::Presence, :event_machine do
2751
2751
 
2752
2752
  context 'channel transitions to the SUSPENDED state' do
2753
2753
  let(:auth_callback) do
2754
- Proc.new do
2754
+ lambda do |token_params|
2755
2755
  # Pause to allow presence updates to occur whilst disconnected
2756
2756
  sleep 1
2757
2757
  Ably::Rest::Client.new(client_options).auth.request_token
@@ -472,7 +472,7 @@ describe Ably::Auth do
472
472
  end
473
473
 
474
474
  let(:auth_callback) do
475
- Proc.new do |token_params_arg|
475
+ lambda do |token_params_arg|
476
476
  @block_called = true
477
477
  @block_params = token_params_arg
478
478
  {
@@ -486,7 +486,7 @@ describe Ably::Auth do
486
486
  end
487
487
  end
488
488
 
489
- it 'calls the Proc when authenticating to obtain the request token' do
489
+ it 'calls the lambda when authenticating to obtain the request token' do
490
490
  expect(@block_called).to eql(true)
491
491
  expect(@block_params).to include(token_params)
492
492
  end
@@ -517,7 +517,7 @@ describe Ably::Auth do
517
517
  let(:client_id) { random_str }
518
518
 
519
519
  let!(:token_details) do
520
- auth.request_token({}, auth_callback: Proc.new do |block_options|
520
+ auth.request_token({}, auth_callback: lambda do |token_params|
521
521
  auth.create_token_request(client_id: client_id)
522
522
  end)
523
523
  end
@@ -533,7 +533,7 @@ describe Ably::Auth do
533
533
  let(:token) { second_client.auth.request_token.token }
534
534
 
535
535
  let!(:token_details) do
536
- auth.request_token({}, auth_callback: Proc.new do |block_options|
536
+ auth.request_token({}, auth_callback: lambda do |token_params|
537
537
  token
538
538
  end)
539
539
  end
@@ -689,7 +689,7 @@ describe Ably::Auth do
689
689
 
690
690
  context 'AuthOptions argument' do
691
691
  let(:token_ttl) { 2 }
692
- let(:auth_callback) { Proc.new do
692
+ let(:auth_callback) { lambda do |token_params|
693
693
  auth.create_token_request(ttl: token_ttl)
694
694
  end }
695
695
  let(:default_auth_options) { { auth_callback: auth_callback } }
@@ -717,7 +717,7 @@ describe Ably::Auth do
717
717
  end
718
718
 
719
719
  it 'updates Auth#options attribute with an immutable hash' do
720
- auth.authorize(nil, auth_callback: Proc.new { '1231232.12321:12321312' })
720
+ auth.authorize(nil, auth_callback: lambda { |token_params| '1231232.12321:12321312' })
721
721
  expect { auth.options['key_name'] = 'new_name' }.to raise_error RuntimeError, /can't modify frozen.*Hash/
722
722
  end
723
723
 
@@ -763,17 +763,17 @@ describe Ably::Auth do
763
763
  expect(auth.options[:authUrl]).to eql('http://foo.com')
764
764
  end
765
765
 
766
- context 'with a Proc for the :auth_callback option' do
766
+ context 'with a lambda for the :auth_callback option' do
767
767
  let(:client_id) { random_str }
768
768
  let!(:token) do
769
- auth.authorize({}, auth_callback: Proc.new do
769
+ auth.authorize({}, auth_callback: lambda do |token_params|
770
770
  @block_called ||= 0
771
771
  @block_called += 1
772
772
  auth.create_token_request(client_id: client_id)
773
773
  end)
774
774
  end
775
775
 
776
- it 'calls the Proc' do
776
+ it 'calls the lambda' do
777
777
  expect(@block_called).to eql(1)
778
778
  end
779
779
 
@@ -782,7 +782,7 @@ describe Ably::Auth do
782
782
  end
783
783
 
784
784
  context 'for every subsequent #request_token' do
785
- context 'without a :auth_callback Proc' do
785
+ context 'without a :auth_callback lambda' do
786
786
  it 'calls the originally provided block' do
787
787
  auth.request_token
788
788
  expect(@block_called).to eql(2)
@@ -790,8 +790,8 @@ describe Ably::Auth do
790
790
  end
791
791
 
792
792
  context 'with a provided block' do
793
- it 'does not call the originally provided Proc and calls the new #request_token :auth_callback Proc' do
794
- auth.request_token({}, auth_callback: Proc.new { @request_block_called = true; auth.create_token_request })
793
+ it 'does not call the originally provided lambda and calls the new #request_token :auth_callback lambda' do
794
+ auth.request_token({}, auth_callback: lambda { |token_params| @request_block_called = true; auth.create_token_request })
795
795
  expect(@block_called).to eql(1)
796
796
  expect(@request_block_called).to eql(true)
797
797
  end
@@ -800,7 +800,7 @@ describe Ably::Auth do
800
800
  end
801
801
 
802
802
  context 'with an explicit token string that expires' do
803
- context 'and a Proc for the :auth_callback option to provide a means to renew the token' do
803
+ context 'and a lambda for the :auth_callback option to provide a means to renew the token' do
804
804
  before do
805
805
  # Ensure a soon to expire token is not treated as expired
806
806
  stub_const 'Ably::Models::TokenDetails::TOKEN_EXPIRY_BUFFER', 0
@@ -811,13 +811,13 @@ describe Ably::Auth do
811
811
 
812
812
  let(:token_client) { Ably::Rest::Client.new(default_options.merge(key: api_key, default_token_params: { ttl: 3 })) }
813
813
  let(:client_options) {
814
- default_options.merge(token: token_client.auth.request_token.token, auth_callback: Proc.new do
814
+ default_options.merge(token: token_client.auth.request_token.token, auth_callback: lambda do |token_params|
815
815
  @block_called += 1
816
816
  token_client.auth.create_token_request
817
817
  end)
818
818
  }
819
819
 
820
- it 'calls the Proc once the token has expired and the new token is used' do
820
+ it 'calls the lambda once the token has expired and the new token is used' do
821
821
  client.stats
822
822
  expect(@block_called).to eql(0)
823
823
  sleep 3.5
@@ -829,7 +829,7 @@ describe Ably::Auth do
829
829
 
830
830
  context 'with an explicit ClientOptions client_id' do
831
831
  let(:client_id) { random_str }
832
- let(:client_options) { default_options.merge(auth_callback: Proc.new { auth_token_object }, client_id: client_id) }
832
+ let(:client_options) { default_options.merge(auth_callback: lambda { |token_params| auth_token_object }, client_id: client_id) }
833
833
  let(:auth_client) { Ably::Rest::Client.new(default_options.merge(key: api_key, client_id: 'invalid')) }
834
834
 
835
835
  context 'and an incompatible client_id in a TokenDetails object passed to the auth callback' do
@@ -871,7 +871,7 @@ describe Ably::Auth do
871
871
  end
872
872
 
873
873
  it 'returns a TokenRequest that can be passed to a client that can use it for authentication without an API key' do
874
- auth_callback = Proc.new { subject }
874
+ auth_callback = proc { |token_params| subject }
875
875
  client_without_api_key = Ably::Rest::Client.new(default_options.merge(auth_callback: auth_callback))
876
876
  expect(client_without_api_key.auth).to be_using_token_auth
877
877
  expect { client_without_api_key.auth.authorize }.to_not raise_error
@@ -932,7 +932,7 @@ describe Ably::Auth do
932
932
  end
933
933
 
934
934
  it 'uses these capabilities when Ably issues an actual token' do
935
- auth_callback = Proc.new { subject }
935
+ auth_callback = lambda { |token_params| subject }
936
936
  client_without_api_key = Ably::Rest::Client.new(default_options.merge(auth_callback: auth_callback))
937
937
  client_without_api_key.auth.authorize
938
938
  expect(client_without_api_key.auth.current_token_details.capability).to eql(capability)
@@ -1041,7 +1041,7 @@ describe Ably::Auth do
1041
1041
  end
1042
1042
 
1043
1043
  it 'is valid when used for authentication' do
1044
- auth_callback = Proc.new do
1044
+ auth_callback = lambda do |callback|
1045
1045
  auth.create_token_request(token_attributes)
1046
1046
  end
1047
1047
  client = Ably::Rest::Client.new(auth_callback: auth_callback, environment: environment, protocol: protocol)
@@ -1324,36 +1324,9 @@ describe Ably::Auth do
1324
1324
  end
1325
1325
  end
1326
1326
 
1327
- context 'deprecated #authorise' do
1327
+ context 'deprecated #authorise', :prevent_log_stubbing do
1328
1328
  let(:client_options) { default_options.merge(key: api_key, logger: custom_logger_object, use_token_auth: true) }
1329
- let(:custom_logger) do
1330
- Class.new do
1331
- def initialize
1332
- @messages = []
1333
- end
1334
-
1335
- [:fatal, :error, :warn, :info, :debug].each do |severity|
1336
- define_method severity do |message, &block|
1337
- message_val = [message]
1338
- message_val << block.call if block
1339
-
1340
- @messages << [severity, message_val.compact.join(' ')]
1341
- end
1342
- end
1343
-
1344
- def logs
1345
- @messages
1346
- end
1347
-
1348
- def level
1349
- 1
1350
- end
1351
-
1352
- def level=(new_level)
1353
- end
1354
- end
1355
- end
1356
- let(:custom_logger_object) { custom_logger.new }
1329
+ let(:custom_logger_object) { TestLogger.new }
1357
1330
 
1358
1331
  it 'logs a deprecation warning (#RSA10l)' do
1359
1332
  client.auth.authorise