ably-rest 0.8.15 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/lib/submodules/ably-ruby/CHANGELOG.md +61 -48
  3. data/lib/submodules/ably-ruby/README.md +0 -6
  4. data/lib/submodules/ably-ruby/ably.gemspec +1 -1
  5. data/lib/submodules/ably-ruby/lib/ably/auth.rb +37 -32
  6. data/lib/submodules/ably-ruby/lib/ably/modules/event_emitter.rb +15 -30
  7. data/lib/submodules/ably-ruby/lib/ably/modules/model_common.rb +0 -25
  8. data/lib/submodules/ably-ruby/lib/ably/realtime/auth.rb +30 -18
  9. data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_manager.rb +3 -3
  10. data/lib/submodules/ably-ruby/lib/ably/realtime/client.rb +0 -3
  11. data/lib/submodules/ably-ruby/lib/ably/realtime/client/incoming_message_dispatcher.rb +2 -2
  12. data/lib/submodules/ably-ruby/lib/ably/realtime/connection/connection_manager.rb +3 -3
  13. data/lib/submodules/ably-ruby/lib/ably/realtime/presence/members_map.rb +3 -3
  14. data/lib/submodules/ably-ruby/lib/ably/rest/client.rb +6 -6
  15. data/lib/submodules/ably-ruby/lib/ably/version.rb +2 -2
  16. data/lib/submodules/ably-ruby/spec/acceptance/realtime/auth_spec.rb +66 -53
  17. data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_spec.rb +8 -10
  18. data/lib/submodules/ably-ruby/spec/acceptance/realtime/client_spec.rb +3 -3
  19. data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_spec.rb +12 -48
  20. data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb +38 -79
  21. data/lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb +74 -40
  22. data/lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb +1 -1
  23. data/lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb +4 -2
  24. data/lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb +21 -26
  25. data/lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb +12 -10
  26. data/lib/submodules/ably-ruby/spec/unit/modules/event_emitter_spec.rb +51 -109
  27. data/lib/submodules/ably-ruby/spec/unit/realtime/presence_spec.rb +3 -3
  28. metadata +4 -3
@@ -92,14 +92,12 @@ describe Ably::Realtime::Channel, :event_machine do
92
92
 
93
93
  it 'reattaches' do
94
94
  channel.attach do
95
- channel.once(:failed) do
96
- expect(channel).to be_failed
97
- channel.attach do
98
- expect(channel).to be_attached
99
- stop_reactor
100
- end
101
- end
102
95
  channel.transition_state_machine :failed, reason: RuntimeError.new
96
+ expect(channel).to be_failed
97
+ channel.attach do
98
+ expect(channel).to be_attached
99
+ stop_reactor
100
+ end
103
101
  end
104
102
  end
105
103
  end
@@ -193,8 +191,8 @@ describe Ably::Realtime::Channel, :event_machine do
193
191
  restricted_channel.attach
194
192
  restricted_channel.once(:failed) do
195
193
  restricted_client.close do
196
- # A direct call to #authorise is synchronous
197
- restricted_client.auth.authorise({}, key: api_key)
194
+ # A direct call to #authorize is synchronous
195
+ restricted_client.auth.authorize({}, key: api_key)
198
196
 
199
197
  restricted_client.connect do
200
198
  restricted_channel.once(:attached) do
@@ -373,7 +371,7 @@ describe Ably::Realtime::Channel, :event_machine do
373
371
  expect(message_id.uniq.count).to eql(1)
374
372
 
375
373
  # Check that messages use index 0,1,2 in the ID
376
- message_indexes = messages.map { |msg| msg.id.split(':').last }
374
+ message_indexes = messages.map { |msg| msg.id.split(':')[1] }
377
375
  expect(message_indexes).to include("0", "1", "2")
378
376
  stop_reactor
379
377
  end
@@ -62,7 +62,7 @@ describe Ably::Realtime::Client, :event_machine do
62
62
  context 'with valid :key and :use_token_auth option set to true' do
63
63
  let(:client_options) { default_options.merge(use_token_auth: true) }
64
64
 
65
- it 'automatically authorises on connect and generates a token' do
65
+ it 'automatically authorizes on connect and generates a token' do
66
66
  connection.on(:connected) do
67
67
  expect(subject.auth.current_token_details).to_not be_nil
68
68
  expect(auth_params[:access_token]).to_not be_nil
@@ -116,7 +116,7 @@ describe Ably::Realtime::Client, :event_machine do
116
116
 
117
117
  context 'when the returned token has a client_id' do
118
118
  it "sets Auth#client_id to the new token's client_id immediately when connecting" do
119
- subject.auth.authorise do
119
+ subject.auth.authorize do
120
120
  expect(subject.connection).to be_connecting
121
121
  expect(subject.auth.client_id).to eql(client_id)
122
122
  stop_reactor
@@ -124,7 +124,7 @@ describe Ably::Realtime::Client, :event_machine do
124
124
  end
125
125
 
126
126
  it "sets Client#client_id to the new token's client_id immediately when connecting" do
127
- subject.auth.authorise do
127
+ subject.auth.authorize do
128
128
  expect(subject.connection).to be_connecting
129
129
  expect(subject.client_id).to eql(client_id)
130
130
  stop_reactor
@@ -60,9 +60,9 @@ describe Ably::Realtime::Connection, :event_machine do
60
60
 
61
61
  context 'for renewable tokens' do
62
62
  context 'that are valid for the duration of the test' do
63
- context 'with valid pre authorised token expiring in the future' do
63
+ context 'with valid pre authorized token expiring in the future' do
64
64
  it 'uses the existing token created by Auth' do
65
- client.auth.authorise(ttl: 300)
65
+ client.auth.authorize(ttl: 300)
66
66
  expect(client.auth).to_not receive(:request_token)
67
67
  connection.once(:connected) do
68
68
  stop_reactor
@@ -101,8 +101,8 @@ describe Ably::Realtime::Connection, :event_machine do
101
101
  context 'opening a new connection' do
102
102
  context 'with almost expired tokens' do
103
103
  before do
104
- # Authorise synchronously to ensure token has been issued
105
- client.auth.authorise_sync(ttl: ttl)
104
+ # Authorize synchronously to ensure token has been issued
105
+ client.auth.authorize_sync(ttl: ttl)
106
106
  end
107
107
 
108
108
  let(:ttl) { 2 }
@@ -615,23 +615,16 @@ describe Ably::Realtime::Connection, :event_machine do
615
615
  end
616
616
  end
617
617
 
618
- it 'is set to 0 when a message is received back' do
619
- channel.publish('event', 'data')
620
- channel.subscribe do
618
+ it 'is set to 0 when a message sent ACK is received' do
619
+ channel.publish('event', 'data') do
621
620
  expect(connection.serial).to eql(0)
622
621
  stop_reactor
623
622
  end
624
623
  end
625
624
 
626
- it 'is set to 1 when the second message is received' do
625
+ it 'is set to 1 when the second message sent ACK is received' do
627
626
  channel.publish('event', 'data') do
628
- channel.publish('event', 'data')
629
- end
630
-
631
- messages = []
632
- channel.subscribe do |message|
633
- messages << message
634
- if messages.length == 2
627
+ channel.publish('event', 'data') do
635
628
  expect(connection.serial).to eql(1)
636
629
  stop_reactor
637
630
  end
@@ -891,16 +884,11 @@ describe Ably::Realtime::Connection, :event_machine do
891
884
  expect(connection.serial).to eql(expected_serial)
892
885
 
893
886
  channel.attach do
894
- channel.publish('event', 'data')
895
- channel.subscribe do
896
- channel.unsubscribe
897
-
887
+ channel.publish('event', 'data') do
898
888
  expected_serial += 1 # attach message received
899
889
  expect(connection.serial).to eql(expected_serial)
900
890
 
901
- channel.publish('event', 'data')
902
- channel.subscribe do
903
- channel.unsubscribe
891
+ channel.publish('event', 'data') do
904
892
  expected_serial += 1 # attach message received
905
893
  expect(connection.serial).to eql(expected_serial)
906
894
 
@@ -1290,22 +1278,6 @@ describe Ably::Realtime::Connection, :event_machine do
1290
1278
  end
1291
1279
 
1292
1280
  context 'connection state change' do
1293
- # See https://github.com/ably/ably-ruby/issues/103
1294
- it 'emits event to all and single subscribers' do
1295
- connected_emitted = []
1296
- block = Proc.new do |state_change|
1297
- if state_change.current == :connected
1298
- connected_emitted << state_change
1299
- EventMachine.add_timer(0.5) do
1300
- expect(connected_emitted.length).to eql(2)
1301
- stop_reactor
1302
- end
1303
- end
1304
- end
1305
- connection.on(&block)
1306
- connection.on(:connected, &block)
1307
- end
1308
-
1309
1281
  it 'emits a ConnectionStateChange object' do
1310
1282
  connection.on(:connected) do |connection_state_change|
1311
1283
  expect(connection_state_change).to be_a(Ably::Models::ConnectionStateChange)
@@ -1314,14 +1286,6 @@ describe Ably::Realtime::Connection, :event_machine do
1314
1286
  end
1315
1287
 
1316
1288
  context 'ConnectionStateChange object' do
1317
- def unbind
1318
- if connection.transport
1319
- connection.transport.unbind
1320
- else
1321
- EventMachine.add_timer(0.005) { unbind }
1322
- end
1323
- end
1324
-
1325
1289
  it 'has current state' do
1326
1290
  connection.on(:connected) do |connection_state_change|
1327
1291
  expect(connection_state_change.current).to eq(:connected)
@@ -1385,7 +1349,7 @@ describe Ably::Realtime::Connection, :event_machine do
1385
1349
  expect(connection_state_change.retry_in).to eql(0)
1386
1350
  stop_reactor
1387
1351
  end
1388
- unbind
1352
+ EventMachine.add_timer(0.005) { connection.transport.unbind }
1389
1353
  end
1390
1354
  end
1391
1355
 
@@ -1406,7 +1370,7 @@ describe Ably::Realtime::Connection, :event_machine do
1406
1370
  expect(connection_state_change.retry_in).to be > 0
1407
1371
  stop_reactor
1408
1372
  end
1409
- unbind
1373
+ EventMachine.add_timer(0.005) { connection.transport.unbind }
1410
1374
  end
1411
1375
  connection.transport.unbind
1412
1376
  end
@@ -42,11 +42,9 @@ describe Ably::Realtime::Presence, :event_machine do
42
42
 
43
43
  def setup_test(method_name, args, options)
44
44
  if options[:enter_first]
45
- presence_client_one.subscribe do
46
- presence_client_one.unsubscribe
45
+ presence_client_one.public_send(method_name.to_s.gsub(/leave|update/, 'enter'), args) do
47
46
  yield
48
47
  end
49
- presence_client_one.public_send(method_name.to_s.gsub(/leave|update/, 'enter'), args)
50
48
  else
51
49
  yield
52
50
  end
@@ -470,14 +468,7 @@ describe Ably::Realtime::Presence, :event_machine do
470
468
 
471
469
  context 'once server sync is complete' do
472
470
  it 'behaves like an Enumerable allowing direct access to current members' do
473
- presence_client_one.enter
474
- presence_client_two.enter
475
-
476
- entered = 0
477
- presence_client_one.subscribe(:enter) do
478
- entered += 1
479
- next unless entered == 2
480
-
471
+ when_all(presence_client_one.enter, presence_client_two.enter) do
481
472
  presence_anonymous_client.members.once(:in_sync) do
482
473
  expect(presence_anonymous_client.members.count).to eql(2)
483
474
  member_ids = presence_anonymous_client.members.map(&:member_key)
@@ -504,10 +495,7 @@ describe Ably::Realtime::Presence, :event_machine do
504
495
 
505
496
  context 'when attaching to a channel with members present' do
506
497
  it 'is false and the presence channel will subsequently be synced' do
507
- presence_client_one.enter
508
- presence_client_one.subscribe(:enter) do
509
- presence_client_one.unsubscribe :enter
510
-
498
+ presence_client_one.enter do
511
499
  channel_anonymous_client.attach do
512
500
  expect(channel_anonymous_client.presence).to_not be_sync_complete
513
501
  channel_anonymous_client.presence.get(wait_for_sync: true) do
@@ -692,18 +680,16 @@ describe Ably::Realtime::Presence, :event_machine do
692
680
  it 'waits until sync is complete', em_timeout: 30 do # allow for slow connections and lots of messages
693
681
  enter_expected_count.times do |index|
694
682
  EventMachine.add_timer(index / 10) do
695
- presence_client_one.enter_client("client:#{index}")
696
- end
697
- end
683
+ presence_client_one.enter_client("client:#{index}") do |message|
684
+ entered << message
685
+ next unless entered.count == enter_expected_count
698
686
 
699
- presence_client_one.subscribe(:enter) do |message|
700
- entered << message
701
- next unless entered.count == enter_expected_count
702
-
703
- presence_anonymous_client.get(wait_for_sync: true) do |members|
704
- expect(members.map(&:client_id).uniq.count).to eql(enter_expected_count)
705
- expect(members.count).to eql(enter_expected_count)
706
- stop_reactor
687
+ presence_anonymous_client.get(wait_for_sync: true) do |members|
688
+ expect(members.map(&:client_id).uniq.count).to eql(enter_expected_count)
689
+ expect(members.count).to eql(enter_expected_count)
690
+ stop_reactor
691
+ end
692
+ end
707
693
  end
708
694
  end
709
695
  end
@@ -711,21 +697,19 @@ describe Ably::Realtime::Presence, :event_machine do
711
697
 
712
698
  context 'by default' do
713
699
  it 'it does not wait for sync', em_timeout: 30 do # allow for slow connections and lots of messages
714
- enter_expected_count.times do |indx|
715
- EventMachine.add_timer(indx / 10) do
716
- presence_client_one.enter_client "client:#{indx}"
717
- end
718
- end
719
-
720
- presence_client_one.subscribe(:enter) do |message|
721
- entered << message
722
- next unless entered.count == enter_expected_count
723
-
724
- channel_anonymous_client.attach do
725
- presence_anonymous_client.get do |members|
726
- expect(presence_anonymous_client.members).to_not be_in_sync
727
- expect(members.count).to eql(0)
728
- stop_reactor
700
+ enter_expected_count.times do |index|
701
+ EventMachine.add_timer(index / 10) do
702
+ presence_client_one.enter_client("client:#{index}") do |message|
703
+ entered << message
704
+ next unless entered.count == enter_expected_count
705
+
706
+ channel_anonymous_client.attach do
707
+ presence_anonymous_client.get do |members|
708
+ expect(presence_anonymous_client.members).to_not be_in_sync
709
+ expect(members.count).to eql(0)
710
+ stop_reactor
711
+ end
712
+ end
729
713
  end
730
714
  end
731
715
  end
@@ -912,25 +896,15 @@ describe Ably::Realtime::Presence, :event_machine do
912
896
 
913
897
  context 'and sync is complete' do
914
898
  it 'does not cache members that have left' do
915
- enter_ack = false
916
-
917
- presence_client_one.subscribe(:enter) do
918
- presence_client_one.unsubscribe :enter
919
-
899
+ presence_client_one.enter enter_data do
920
900
  expect(presence_client_one.members).to be_in_sync
921
901
  expect(presence_client_one.members.send(:members).count).to eql(1)
922
902
  presence_client_one.leave data
923
903
  end
924
904
 
925
- presence_client_one.enter(enter_data) do
926
- enter_ack = true
927
- end
928
-
929
905
  presence_client_one.subscribe(:leave) do |presence_message|
930
- presence_client_one.unsubscribe :leave
931
906
  expect(presence_message.data).to eql(data)
932
907
  expect(presence_client_one.members.send(:members).count).to eql(0)
933
- expect(enter_ack).to eql(true)
934
908
  stop_reactor
935
909
  end
936
910
  end
@@ -1316,9 +1290,7 @@ describe Ably::Realtime::Presence, :event_machine do
1316
1290
  # skip 'it fails if the connection changes to failed state'
1317
1291
 
1318
1292
  it 'returns the current members on the channel' do
1319
- presence_client_one.enter
1320
- presence_client_one.subscribe(:enter) do
1321
- presence_client_one.unsubscribe :enter
1293
+ presence_client_one.enter do
1322
1294
  presence_client_one.get do |members|
1323
1295
  expect(members.count).to eq(1)
1324
1296
 
@@ -1379,10 +1351,7 @@ describe Ably::Realtime::Presence, :event_machine do
1379
1351
  end
1380
1352
 
1381
1353
  it 'does not wait for SYNC to complete if :wait_for_sync option is false' do
1382
- presence_client_one.enter
1383
- presence_client_one.subscribe(:enter) do
1384
- presence_client_one.unsubscribe :enter
1385
-
1354
+ presence_client_one.enter do
1386
1355
  presence_client_two.get(wait_for_sync: false) do |members|
1387
1356
  expect(members.count).to eql(0)
1388
1357
  stop_reactor
@@ -1393,13 +1362,11 @@ describe Ably::Realtime::Presence, :event_machine do
1393
1362
  context 'when a member enters and then leaves' do
1394
1363
  it 'has no members' do
1395
1364
  presence_client_one.enter do
1396
- presence_client_one.leave
1397
- end
1398
-
1399
- presence_client_one.subscribe(:leave) do
1400
- presence_client_one.get do |members|
1401
- expect(members.count).to eq(0)
1402
- stop_reactor
1365
+ presence_client_one.leave do
1366
+ presence_client_one.get do |members|
1367
+ expect(members.count).to eq(0)
1368
+ stop_reactor
1369
+ end
1403
1370
  end
1404
1371
  end
1405
1372
  end
@@ -1557,10 +1524,7 @@ describe Ably::Realtime::Presence, :event_machine do
1557
1524
 
1558
1525
  context 'REST #get' do
1559
1526
  it 'returns current members' do
1560
- presence_client_one.enter data_payload
1561
- presence_client_one.subscribe(:enter) do
1562
- presence_client_one.unsubscribe :enter
1563
-
1527
+ presence_client_one.enter(data_payload) do
1564
1528
  members_page = channel_rest_client_one.presence.get
1565
1529
  this_member = members_page.items.first
1566
1530
 
@@ -1574,10 +1538,7 @@ describe Ably::Realtime::Presence, :event_machine do
1574
1538
 
1575
1539
  it 'returns no members once left' do
1576
1540
  presence_client_one.enter(data_payload) do
1577
- presence_client_one.leave
1578
- presence_client_one.subscribe(:leave) do
1579
- presence_client_one.unsubscribe :leave
1580
-
1541
+ presence_client_one.leave do
1581
1542
  members_page = channel_rest_client_one.presence.get
1582
1543
  expect(members_page.items.count).to eql(0)
1583
1544
  stop_reactor
@@ -1693,8 +1654,7 @@ describe Ably::Realtime::Presence, :event_machine do
1693
1654
 
1694
1655
  context '#get' do
1695
1656
  it 'returns a list of members with decrypted data' do
1696
- encrypted_channel.presence.enter(data)
1697
- encrypted_channel.presence.subscribe(:enter) do
1657
+ encrypted_channel.presence.enter(data) do
1698
1658
  encrypted_channel.presence.get do |members|
1699
1659
  member = members.first
1700
1660
  expect(member.encoding).to be_nil
@@ -1707,8 +1667,7 @@ describe Ably::Realtime::Presence, :event_machine do
1707
1667
 
1708
1668
  context 'REST #get' do
1709
1669
  it 'returns a list of members with decrypted data' do
1710
- encrypted_channel.presence.enter(data)
1711
- encrypted_channel.presence.subscribe(:enter) do
1670
+ encrypted_channel.presence.enter(data) do
1712
1671
  member = channel_rest_client_one.presence.get.items.first
1713
1672
  expect(member.encoding).to be_nil
1714
1673
  expect(member.data).to eql(data)
@@ -1779,7 +1738,7 @@ describe Ably::Realtime::Presence, :event_machine do
1779
1738
  context 'connection failure mid-way through a large member sync' do
1780
1739
  let(:members_count) { 250 }
1781
1740
  let(:sync_pages_received) { [] }
1782
- let(:client_options) { default_options.merge(log_level: :fatal) }
1741
+ let(:client_options) { default_options.merge(log_level: :error) }
1783
1742
 
1784
1743
  it 'resumes the SYNC operation', em_timeout: 15 do
1785
1744
  when_all(*members_count.times.map do |index|
@@ -445,8 +445,8 @@ describe Ably::Auth do
445
445
  expect(request_token.client_id).to eql(client_id)
446
446
  end
447
447
 
448
- context 'when authorised' do
449
- before { auth.authorise(token_params, auth_callback: auth_callback) }
448
+ context 'when authorized' do
449
+ before { auth.authorize(token_params, auth_callback: auth_callback) }
450
450
 
451
451
  it "sets Auth#client_id to the new token's client_id" do
452
452
  expect(auth.client_id).to eql(client_id)
@@ -500,8 +500,8 @@ describe Ably::Auth do
500
500
  expect(token_details.capability).to eql(capability)
501
501
  end
502
502
 
503
- context 'when authorised' do
504
- before { auth.authorise(token_params, auth_callback: auth_callback) }
503
+ context 'when authorized' do
504
+ before { auth.authorize(token_params, auth_callback: auth_callback) }
505
505
 
506
506
  it "sets Auth#client_id to the new token's client_id" do
507
507
  expect(auth.client_id).to eql(client_id)
@@ -583,13 +583,13 @@ describe Ably::Auth do
583
583
  end
584
584
  end
585
585
 
586
- context 'before #authorise has been called' do
586
+ context 'before #authorize has been called' do
587
587
  it 'has no current_token_details' do
588
588
  expect(auth.current_token_details).to be_nil
589
589
  end
590
590
  end
591
591
 
592
- describe '#authorise' do
592
+ describe '#authorize (#RSA10, #RSA10j)' do
593
593
  context 'when called for the first time since the client has been instantiated' do
594
594
  let(:auth_options) do
595
595
  { auth_url: 'http://somewhere.com/' }
@@ -600,15 +600,15 @@ describe Ably::Auth do
600
600
 
601
601
  it 'passes all auth_options and token_params to #request_token' do
602
602
  expect(auth).to receive(:request_token).with(token_params, auth_options)
603
- auth.authorise token_params, auth_options
603
+ auth.authorize token_params, auth_options
604
604
  end
605
605
 
606
606
  it 'returns a valid token' do
607
- expect(auth.authorise).to be_a(Ably::Models::TokenDetails)
607
+ expect(auth.authorize).to be_a(Ably::Models::TokenDetails)
608
608
  end
609
609
 
610
- it 'issues a new token if option :force => true' do
611
- expect { auth.authorise(force: true) }.to change { auth.current_token_details }
610
+ it 'issues a new token every time (#RSA10a)' do
611
+ expect { auth.authorize }.to change { auth.current_token_details }
612
612
  end
613
613
  end
614
614
 
@@ -624,8 +624,8 @@ describe Ably::Auth do
624
624
  it 'only queries the server time once and then works out the offset, query_time option is never persisted' do
625
625
  expect(client).to receive(:time).once.and_return(server_time)
626
626
 
627
- auth.authorise({}, query_time: true)
628
- auth.authorise({}, force: true)
627
+ auth.authorize({}, query_time: true)
628
+ auth.authorize({})
629
629
  expect(auth.auth_options).to_not have_key(:query_time)
630
630
  end
631
631
  end
@@ -634,26 +634,26 @@ describe Ably::Auth do
634
634
  let(:default_token_params) { { ttl: 23 } }
635
635
 
636
636
  before do
637
- auth.authorise default_token_params
637
+ auth.authorize default_token_params
638
638
  end
639
639
 
640
640
  it 'has no effect on the defaults when null and TokenParam defaults remain the same' do
641
641
  old_token = auth.current_token_details
642
- auth.authorise(nil, force: true)
642
+ auth.authorize
643
643
  expect(old_token).to_not eql(auth.current_token_details)
644
644
  expect(auth.token_params[:ttl]).to eql(23)
645
645
  end
646
646
 
647
647
  it 'updates defaults when present and all previous configured TokenParams are discarded' do
648
648
  old_token = auth.current_token_details
649
- auth.authorise({ client_id: 'bob' }, { force: true })
649
+ auth.authorize({ client_id: 'bob' })
650
650
  expect(old_token).to_not eql(auth.current_token_details)
651
651
  expect(auth.token_params[:ttl]).to_not eql(23)
652
652
  expect(auth.token_params[:client_id]).to eql('bob')
653
653
  end
654
654
 
655
655
  it 'updates Auth#token_params attribute with an immutable hash' do
656
- auth.authorise({ client_id: 'bob' }, { force: true })
656
+ auth.authorize({ client_id: 'bob' })
657
657
  expect { auth.token_params['key_name'] = 'new_name' }.to raise_error RuntimeError, /can't modify frozen.*Hash/
658
658
  end
659
659
  end
@@ -669,68 +669,63 @@ describe Ably::Auth do
669
669
  stub_const 'Ably::Models::TokenDetails::TOKEN_EXPIRY_BUFFER', 0 # allow token to be used even if about to expire
670
670
  stub_const 'Ably::Auth::TOKEN_DEFAULTS', Ably::Auth::TOKEN_DEFAULTS.merge(renew_token_buffer: 0) # Ensure tokens issued expire immediately after issue
671
671
 
672
- auth.authorise(nil, default_auth_options)
672
+ auth.authorize(nil, default_auth_options)
673
673
  @old_token = auth.current_token_details
674
674
  sleep token_ttl + 0.5
675
675
  end
676
676
 
677
677
  it 'has no effect on the defaults when null and AuthOptions defaults remain the same' do
678
- auth.authorise(nil, nil)
678
+ auth.authorize(nil, nil)
679
679
  expect(@old_token).to_not eql(auth.current_token_details)
680
680
  expect(auth.options[:auth_callback]).to eql(auth_callback)
681
681
  end
682
682
 
683
683
  it 'updates defaults when present and all previous configured AuthOptions are discarded' do
684
- auth.authorise(nil, auth_method: :post)
684
+ auth.authorize(nil, auth_method: :post)
685
685
  expect(@old_token).to_not eql(auth.current_token_details)
686
686
  expect(auth.options[:auth_callback]).to be_nil
687
687
  expect(auth.options[:auth_method]).to eql(:post)
688
688
  end
689
689
 
690
690
  it 'updates Auth#options attribute with an immutable hash' do
691
- auth.authorise(nil, auth_callback: Proc.new { '1231232.12321:12321312' })
691
+ auth.authorize(nil, auth_callback: Proc.new { '1231232.12321:12321312' })
692
692
  expect { auth.options['key_name'] = 'new_name' }.to raise_error RuntimeError, /can't modify frozen.*Hash/
693
693
  end
694
694
  end
695
695
 
696
696
  context 'with previous authorisation' do
697
697
  before do
698
- auth.authorise
698
+ auth.authorize
699
699
  expect(auth.current_token_details).to_not be_expired
700
700
  end
701
701
 
702
- it 'does not request a token if current_token_details has not expired' do
703
- expect(auth).to_not receive(:request_token)
704
- auth.authorise
705
- end
706
-
707
702
  it 'requests a new token if token is expired' do
708
703
  allow(auth.current_token_details).to receive(:expired?).and_return(true)
709
704
  expect(auth).to receive(:request_token)
710
- expect { auth.authorise }.to change { auth.current_token_details }
705
+ expect { auth.authorize }.to change { auth.current_token_details }
711
706
  end
712
707
 
713
- it 'issues a new token if option :force => true' do
714
- expect { auth.authorise({}, force: true) }.to change { auth.current_token_details }
708
+ it 'issues a new token every time #authorize is called' do
709
+ expect { auth.authorize({}) }.to change { auth.current_token_details }
715
710
  end
716
711
  end
717
712
 
718
- it 'updates the persisted token params that are then used for subsequent authorise requests' do
713
+ it 'updates the persisted token params that are then used for subsequent authorize requests' do
719
714
  expect(auth.token_params[:ttl]).to_not eql(26)
720
- auth.authorise(ttl: 26)
715
+ auth.authorize(ttl: 26)
721
716
  expect(auth.token_params[:ttl]).to eql(26)
722
717
  end
723
718
 
724
- it 'updates the persisted auth options that are then used for subsequent authorise requests' do
719
+ it 'updates the persisted auth options that are then used for subsequent authorize requests' do
725
720
  expect(auth.options[:authUrl]).to be_nil
726
- auth.authorise({}, authUrl: 'http://foo.com')
721
+ auth.authorize({}, authUrl: 'http://foo.com')
727
722
  expect(auth.options[:authUrl]).to eql('http://foo.com')
728
723
  end
729
724
 
730
725
  context 'with a Proc for the :auth_callback option' do
731
726
  let(:client_id) { random_str }
732
727
  let!(:token) do
733
- auth.authorise({}, auth_callback: Proc.new do
728
+ auth.authorize({}, auth_callback: Proc.new do
734
729
  @block_called ||= 0
735
730
  @block_called += 1
736
731
  auth.create_token_request(client_id: client_id)
@@ -800,7 +795,7 @@ describe Ably::Auth do
800
795
  let(:auth_token_object) { auth_client.auth.request_token }
801
796
 
802
797
  it 'rejects a TokenDetails object with an incompatible client_id and raises an exception' do
803
- expect { client.auth.authorise({}, force: true) }.to raise_error Ably::Exceptions::IncompatibleClientId
798
+ expect { client.auth.authorize({}) }.to raise_error Ably::Exceptions::IncompatibleClientId
804
799
  end
805
800
  end
806
801
 
@@ -808,7 +803,7 @@ describe Ably::Auth do
808
803
  let(:auth_token_object) { auth_client.auth.create_token_request }
809
804
 
810
805
  it 'rejects a TokenRequests object with an incompatible client_id and raises an exception' do
811
- expect { client.auth.authorise({}, force: true) }.to raise_error Ably::Exceptions::IncompatibleClientId
806
+ expect { client.auth.authorize({}) }.to raise_error Ably::Exceptions::IncompatibleClientId
812
807
  end
813
808
  end
814
809
 
@@ -816,7 +811,7 @@ describe Ably::Auth do
816
811
  let(:auth_token_object) { auth_client.auth.request_token(client_id: 'different').token }
817
812
 
818
813
  it 'rejects a TokenRequests object with an incompatible client_id and raises an exception' do
819
- client.auth.authorise({}, force: true)
814
+ client.auth.authorize({})
820
815
  expect(client.client_id).to eql(client_id)
821
816
  end
822
817
  end
@@ -838,7 +833,7 @@ describe Ably::Auth do
838
833
  auth_callback = Proc.new { subject }
839
834
  client_without_api_key = Ably::Rest::Client.new(default_options.merge(auth_callback: auth_callback))
840
835
  expect(client_without_api_key.auth).to be_using_token_auth
841
- expect { client_without_api_key.auth.authorise }.to_not raise_error
836
+ expect { client_without_api_key.auth.authorize }.to_not raise_error
842
837
  end
843
838
 
844
839
  it 'uses the key name from the client' do
@@ -897,7 +892,7 @@ describe Ably::Auth do
897
892
  it 'uses these capabilities when Ably issues an actual token' do
898
893
  auth_callback = Proc.new { subject }
899
894
  client_without_api_key = Ably::Rest::Client.new(default_options.merge(auth_callback: auth_callback))
900
- client_without_api_key.auth.authorise
895
+ client_without_api_key.auth.authorize
901
896
  expect(client_without_api_key.auth.current_token_details.capability).to eql(capability)
902
897
  end
903
898
  end
@@ -1008,7 +1003,7 @@ describe Ably::Auth do
1008
1003
  auth.create_token_request(token_attributes)
1009
1004
  end
1010
1005
  client = Ably::Rest::Client.new(auth_callback: auth_callback, environment: environment, protocol: protocol)
1011
- client.auth.authorise
1006
+ client.auth.authorize
1012
1007
  end
1013
1008
  end
1014
1009
  end
@@ -1202,5 +1197,44 @@ describe Ably::Auth do
1202
1197
  expect(auth).to be_using_basic_auth
1203
1198
  end
1204
1199
  end
1200
+
1201
+ context 'deprecated #authorise' do
1202
+ let(:client_options) { default_options.merge(key: api_key, logger: custom_logger_object) }
1203
+ let(:custom_logger) do
1204
+ Class.new do
1205
+ def initialize
1206
+ @messages = []
1207
+ end
1208
+
1209
+ [:fatal, :error, :warn, :info, :debug].each do |severity|
1210
+ define_method severity do |message|
1211
+ @messages << [severity, message]
1212
+ end
1213
+ end
1214
+
1215
+ def logs
1216
+ @messages
1217
+ end
1218
+
1219
+ def level
1220
+ 1
1221
+ end
1222
+
1223
+ def level=(new_level)
1224
+ end
1225
+ end
1226
+ end
1227
+ let(:custom_logger_object) { custom_logger.new }
1228
+
1229
+ it 'logs a deprecation warning (#RSA10l)' do
1230
+ client.auth.authorise
1231
+ expect(custom_logger_object.logs.find { |severity, message| message.match(/authorise.*deprecated/i)} ).to_not be_nil
1232
+ end
1233
+
1234
+ it 'returns a valid token (#RSA10l)' do
1235
+ response = client.auth.authorise
1236
+ expect(response).to be_a(Ably::Models::TokenDetails)
1237
+ end
1238
+ end
1205
1239
  end
1206
1240
  end