ably-rest 0.7.5 → 0.8.1
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.
- checksums.yaml +8 -8
- data/.travis.yml +2 -0
- data/README.md +41 -15
- data/SPEC.md +654 -518
- data/lib/submodules/ably-ruby/.gitignore +1 -0
- data/lib/submodules/ably-ruby/.gitmodules +3 -0
- data/lib/submodules/ably-ruby/README.md +54 -26
- data/lib/submodules/ably-ruby/SPEC.md +468 -322
- data/lib/submodules/ably-ruby/ably.gemspec +4 -2
- data/lib/submodules/ably-ruby/lib/ably/auth.rb +185 -131
- data/lib/submodules/ably-ruby/lib/ably/models/message.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/models/paginated_resource.rb +31 -44
- data/lib/submodules/ably-ruby/lib/ably/models/presence_message.rb +2 -2
- data/lib/submodules/ably-ruby/lib/ably/models/protocol_message.rb +1 -2
- data/lib/submodules/ably-ruby/lib/ably/models/stat.rb +67 -24
- data/lib/submodules/ably-ruby/lib/ably/models/stats_types.rb +131 -0
- data/lib/submodules/ably-ruby/lib/ably/models/token_details.rb +101 -0
- data/lib/submodules/ably-ruby/lib/ably/models/token_request.rb +108 -0
- data/lib/submodules/ably-ruby/lib/ably/modules/async_wrapper.rb +3 -2
- data/lib/submodules/ably-ruby/lib/ably/modules/http_helpers.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/modules/message_emitter.rb +2 -2
- data/lib/submodules/ably-ruby/lib/ably/realtime.rb +3 -7
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel.rb +32 -5
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_manager.rb +1 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/client.rb +4 -8
- data/lib/submodules/ably-ruby/lib/ably/realtime/connection.rb +5 -3
- data/lib/submodules/ably-ruby/lib/ably/realtime/presence.rb +12 -1
- data/lib/submodules/ably-ruby/lib/ably/rest.rb +3 -7
- data/lib/submodules/ably-ruby/lib/ably/rest/channel.rb +13 -10
- data/lib/submodules/ably-ruby/lib/ably/rest/client.rb +19 -20
- data/lib/submodules/ably-ruby/lib/ably/rest/presence.rb +14 -12
- data/lib/submodules/ably-ruby/lib/ably/version.rb +1 -1
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_history_spec.rb +74 -23
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_spec.rb +3 -3
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/client_spec.rb +18 -18
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_failures_spec.rb +5 -5
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_spec.rb +12 -12
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/message_spec.rb +5 -5
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_history_spec.rb +56 -13
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb +8 -8
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/stats_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/time_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb +262 -158
- data/lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb +11 -9
- data/lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb +28 -21
- data/lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb +30 -27
- data/lib/submodules/ably-ruby/spec/acceptance/rest/encoders_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb +10 -10
- data/lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb +93 -56
- data/lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb +50 -45
- data/lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/rspec_config.rb +3 -2
- data/lib/submodules/ably-ruby/spec/shared/client_initializer_behaviour.rb +36 -28
- data/lib/submodules/ably-ruby/spec/spec_helper.rb +3 -0
- data/lib/submodules/ably-ruby/spec/support/api_helper.rb +3 -3
- data/lib/submodules/ably-ruby/spec/support/markdown_spec_formatter.rb +1 -1
- data/lib/submodules/ably-ruby/spec/support/test_app.rb +20 -33
- data/lib/submodules/ably-ruby/spec/unit/auth_spec.rb +18 -1
- data/lib/submodules/ably-ruby/spec/unit/models/paginated_resource_spec.rb +81 -72
- data/lib/submodules/ably-ruby/spec/unit/models/stats_spec.rb +289 -0
- data/lib/submodules/ably-ruby/spec/unit/models/token_details_spec.rb +111 -0
- data/lib/submodules/ably-ruby/spec/unit/models/token_request_spec.rb +110 -0
- data/lib/submodules/ably-ruby/spec/unit/modules/async_wrapper_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/client_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/realtime_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb +8 -8
- data/lib/submodules/ably-ruby/spec/unit/rest/rest_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/util/crypto_spec.rb +1 -1
- metadata +9 -7
- data/lib/submodules/ably-ruby/lib/ably/models/token.rb +0 -74
- data/lib/submodules/ably-ruby/spec/resources/crypto-data-128.json +0 -56
- data/lib/submodules/ably-ruby/spec/resources/crypto-data-256.json +0 -56
- data/lib/submodules/ably-ruby/spec/unit/models/stat_spec.rb +0 -113
- data/lib/submodules/ably-ruby/spec/unit/models/token_spec.rb +0 -86
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"algorithm": "aes",
|
|
3
|
-
"mode": "cbc",
|
|
4
|
-
"keylength": 128,
|
|
5
|
-
"key": "WUP6u0K7MXI5Zeo0VppPwg==",
|
|
6
|
-
"iv": "HO4cYSP8LybPYBPZPHQOtg==",
|
|
7
|
-
"items": [
|
|
8
|
-
{
|
|
9
|
-
"encoded": {
|
|
10
|
-
"name": "example",
|
|
11
|
-
"data": "The quick brown fox jumped over the lazy dog"
|
|
12
|
-
},
|
|
13
|
-
"encrypted": {
|
|
14
|
-
"name": "example",
|
|
15
|
-
"data": "HO4cYSP8LybPYBPZPHQOtmHItcxYdSvcNUC6kXVpMn0VFL+9z2/5tJ6WFbR0SBT1xhFRuJ+MeBGTU3yOY9P5ow==",
|
|
16
|
-
"encoding": "utf-8/cipher+aes-128-cbc/base64"
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"encoded": {
|
|
21
|
-
"name": "example",
|
|
22
|
-
"data": "AAECAwQFBgcICQoLDA0ODw==",
|
|
23
|
-
"encoding": "base64"
|
|
24
|
-
},
|
|
25
|
-
"encrypted": {
|
|
26
|
-
"name": "example",
|
|
27
|
-
"data": "HO4cYSP8LybPYBPZPHQOtuB3dfKG08yw7J4qx3kkjxdW0eoZv+nGAp76OKqYQ327",
|
|
28
|
-
"encoding": "cipher+aes-128-cbc/base64"
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"encoded": {
|
|
33
|
-
"name": "example",
|
|
34
|
-
"data": "{\"example\":{\"json\":\"Object\"}}",
|
|
35
|
-
"encoding": "json"
|
|
36
|
-
},
|
|
37
|
-
"encrypted": {
|
|
38
|
-
"name": "example",
|
|
39
|
-
"data": "HO4cYSP8LybPYBPZPHQOtuD53yrD3YV3NBoTEYBh4U0N1QXHbtkfsDfTspKeLQFt",
|
|
40
|
-
"encoding": "json/utf-8/cipher+aes-128-cbc/base64"
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"encoded": {
|
|
45
|
-
"name": "example",
|
|
46
|
-
"data": "[\"example\",\"json\",\"array\"]",
|
|
47
|
-
"encoding": "json"
|
|
48
|
-
},
|
|
49
|
-
"encrypted": {
|
|
50
|
-
"name": "example",
|
|
51
|
-
"data": "HO4cYSP8LybPYBPZPHQOtvmStzmExkdjvrn51J6cmaTZrGl+EsJ61sgxmZ6j6jcA",
|
|
52
|
-
"encoding": "json/utf-8/cipher+aes-128-cbc/base64"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"algorithm": "aes",
|
|
3
|
-
"mode": "cbc",
|
|
4
|
-
"keylength": 256,
|
|
5
|
-
"key": "o9qXZoPGDNla50VnRwH7cGqIrpyagTxGsRgimKJbY40=",
|
|
6
|
-
"iv": "NMDl1Acnel8HVdu1cEWdrw==",
|
|
7
|
-
"items": [
|
|
8
|
-
{
|
|
9
|
-
"encoded": {
|
|
10
|
-
"name": "example",
|
|
11
|
-
"data": "The quick brown fox jumped over the lazy dog"
|
|
12
|
-
},
|
|
13
|
-
"encrypted": {
|
|
14
|
-
"name": "example",
|
|
15
|
-
"data": "NMDl1Acnel8HVdu1cEWdr9CGPYFoBoLgJCzoybbQbnyfwx3UQ8CGuKyP/g56Za/JB3xW6XGkNzrHYvZwad4fvA==",
|
|
16
|
-
"encoding": "utf-8/cipher+aes-256-cbc/base64"
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"encoded": {
|
|
21
|
-
"name": "example",
|
|
22
|
-
"data": "AAECAwQFBgcICQoLDA0ODw==",
|
|
23
|
-
"encoding": "base64"
|
|
24
|
-
},
|
|
25
|
-
"encrypted": {
|
|
26
|
-
"name": "example",
|
|
27
|
-
"data": "NMDl1Acnel8HVdu1cEWdr8UFEi56Ms0zPHszbppM61BC8Yf6ndq+kiCj9xXW97/O",
|
|
28
|
-
"encoding": "cipher+aes-256-cbc/base64"
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"encoded": {
|
|
33
|
-
"name": "example",
|
|
34
|
-
"data": "{\"example\":{\"json\":\"Object\"}}",
|
|
35
|
-
"encoding": "json"
|
|
36
|
-
},
|
|
37
|
-
"encrypted": {
|
|
38
|
-
"name": "example",
|
|
39
|
-
"data": "NMDl1Acnel8HVdu1cEWdr21pS5//hdtQf3QqQzZM/jWAtn09Vh52E6jMdC3mWS98",
|
|
40
|
-
"encoding": "json/utf-8/cipher+aes-256-cbc/base64"
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"encoded": {
|
|
45
|
-
"name": "example",
|
|
46
|
-
"data": "[\"example\",\"json\",\"array\"]",
|
|
47
|
-
"encoding": "json"
|
|
48
|
-
},
|
|
49
|
-
"encrypted": {
|
|
50
|
-
"name": "example",
|
|
51
|
-
"data": "NMDl1Acnel8HVdu1cEWdr4J5sVAFpnXsz0fTtsuwOaTRU+6P5GaWlNjePWwiOZCQ",
|
|
52
|
-
"encoding": "json/utf-8/cipher+aes-256-cbc/base64"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'shared/model_behaviour'
|
|
4
|
-
|
|
5
|
-
describe Ably::Models::Stat do
|
|
6
|
-
include Ably::Modules::Conversions
|
|
7
|
-
|
|
8
|
-
subject { Ably::Models::Stat }
|
|
9
|
-
|
|
10
|
-
it_behaves_like 'a model', with_simple_attributes: %w(interval_id all inbound outbound persisted connections channels api_requests token_requests) do
|
|
11
|
-
let(:model_args) { [] }
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
describe '#interval_granularity' do
|
|
15
|
-
subject { Ably::Models::Stat.new(interval_id: '2004-02') }
|
|
16
|
-
|
|
17
|
-
it 'returns the granularity of the interval_id' do
|
|
18
|
-
expect(subject.interval_granularity).to eq(:month)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
describe '#interval_time' do
|
|
23
|
-
subject { Ably::Models::Stat.new(interval_id: '2004-02-01:05:06') }
|
|
24
|
-
|
|
25
|
-
it 'returns a Time object representing the start of the interval' do
|
|
26
|
-
expect(subject.interval_time.to_i).to eql(Time.new(2004, 02, 01, 05, 06, 00, '+00:00').to_i)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context 'class methods' do
|
|
31
|
-
describe '#to_interval_id' do
|
|
32
|
-
context 'when time zone of time argument is UTC' do
|
|
33
|
-
it 'converts time 2014-02-03:05:06 with granularity :month into 2014-02' do
|
|
34
|
-
expect(subject.to_interval_id(Time.new(2014, 2, 1, 0, 0, 0, '+00:00'), :month)).to eql('2014-02')
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it 'converts time 2014-02-03:05:06 with granularity :day into 2014-02-03' do
|
|
38
|
-
expect(subject.to_interval_id(Time.new(2014, 2, 3, 0, 0, 0, '+00:00'), :day)).to eql('2014-02-03')
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it 'converts time 2014-02-03:05:06 with granularity :hour into 2014-02-03:05' do
|
|
42
|
-
expect(subject.to_interval_id(Time.new(2014, 2, 3, 5, 0, 0, '+00:00'), :hour)).to eql('2014-02-03:05')
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it 'converts time 2014-02-03:05:06 with granularity :minute into 2014-02-03:05:06' do
|
|
46
|
-
expect(subject.to_interval_id(Time.new(2014, 2, 3, 5, 6, 0, '+00:00'), :minute)).to eql('2014-02-03:05:06')
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it 'fails with invalid granularity' do
|
|
50
|
-
expect { subject.to_interval_id(Time.now, :invalid) }.to raise_error KeyError
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it 'fails with invalid time' do
|
|
54
|
-
expect { subject.to_interval_id(nil, :month) }.to raise_error ArgumentError
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context 'when time zone of time argument is +02:00' do
|
|
59
|
-
it 'converts time 2014-02-03:06 with granularity :hour into 2014-02-03:04 at UTC +00:00' do
|
|
60
|
-
expect(subject.to_interval_id(Time.new(2014, 2, 3, 6, 0, 0, '+02:00'), :hour)).to eql('2014-02-03:04')
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
describe '#from_interval_id' do
|
|
66
|
-
it 'converts a month interval_id 2014-02 into a Time object in UTC 0' do
|
|
67
|
-
expect(subject.from_interval_id('2014-02')).to eql(Time.gm(2014, 2))
|
|
68
|
-
expect(subject.from_interval_id('2014-02').utc_offset).to eql(0)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'converts a day interval_id 2014-02-03 into a Time object in UTC 0' do
|
|
72
|
-
expect(subject.from_interval_id('2014-02-03')).to eql(Time.gm(2014, 2, 3))
|
|
73
|
-
expect(subject.from_interval_id('2014-02-03').utc_offset).to eql(0)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it 'converts an hour interval_id 2014-02-03:05 into a Time object in UTC 0' do
|
|
77
|
-
expect(subject.from_interval_id('2014-02-03:05')).to eql(Time.gm(2014, 2, 3, 5))
|
|
78
|
-
expect(subject.from_interval_id('2014-02-03:05').utc_offset).to eql(0)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it 'converts a minute interval_id 2014-02-03:05:06 into a Time object in UTC 0' do
|
|
82
|
-
expect(subject.from_interval_id('2014-02-03:05:06')).to eql(Time.gm(2014, 2, 3, 5, 6))
|
|
83
|
-
expect(subject.from_interval_id('2014-02-03:05:06').utc_offset).to eql(0)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
it 'fails with an invalid interval_id 14-20' do
|
|
87
|
-
expect { subject.from_interval_id('14-20') }.to raise_error ArgumentError
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
describe '#granularity_from_interval_id' do
|
|
92
|
-
it 'returns a :month interval_id for 2014-02' do
|
|
93
|
-
expect(subject.granularity_from_interval_id('2014-02')).to eq(:month)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it 'returns a :day interval_id for 2014-02-03' do
|
|
97
|
-
expect(subject.granularity_from_interval_id('2014-02-03')).to eq(:day)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it 'returns a :hour interval_id for 2014-02-03:05' do
|
|
101
|
-
expect(subject.granularity_from_interval_id('2014-02-03:05')).to eq(:hour)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it 'returns a :minute interval_id for 2014-02-03:05:06' do
|
|
105
|
-
expect(subject.granularity_from_interval_id('2014-02-03:05:06')).to eq(:minute)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it 'fails with an invalid interval_id 14-20' do
|
|
109
|
-
expect { subject.granularity_from_interval_id('14-20') }.to raise_error ArgumentError
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Ably::Models::Token do
|
|
4
|
-
subject { Ably::Models::Token }
|
|
5
|
-
|
|
6
|
-
it_behaves_like 'a model', with_simple_attributes: %w(id capability client_id nonce) do
|
|
7
|
-
let(:model_args) { [] }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
context 'defaults' do
|
|
11
|
-
let(:one_hour) { 60 * 60 }
|
|
12
|
-
let(:all_capabilities) { { "*" => ["*"] } }
|
|
13
|
-
|
|
14
|
-
it 'should default TTL to 1 hour' do
|
|
15
|
-
expect(Ably::Models::Token::DEFAULTS[:ttl]).to eql(one_hour)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it 'should default capability to all' do
|
|
19
|
-
expect(Ably::Models::Token::DEFAULTS[:capability]).to eql(all_capabilities)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'should only have defaults for :ttl and :capability' do
|
|
23
|
-
expect(Ably::Models::Token::DEFAULTS.keys).to contain_exactly(:ttl, :capability)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
context 'attributes' do
|
|
28
|
-
let(:unique_value) { 'unique_value' }
|
|
29
|
-
|
|
30
|
-
context '#key_id' do
|
|
31
|
-
subject { Ably::Models::Token.new({ key: unique_value }) }
|
|
32
|
-
it 'retrieves attribute :key' do
|
|
33
|
-
expect(subject.key_id).to eql(unique_value)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
{ :issued_at => :issued_at, :expires_at => :expires }.each do |method_name, attribute|
|
|
38
|
-
let(:time) { Time.now }
|
|
39
|
-
context "##{method_name}" do
|
|
40
|
-
subject { Ably::Models::Token.new({ attribute.to_sym => time.to_i }) }
|
|
41
|
-
|
|
42
|
-
it "retrieves attribute :#{attribute} as Time" do
|
|
43
|
-
expect(subject.public_send(method_name)).to be_a(Time)
|
|
44
|
-
expect(subject.public_send(method_name).to_i).to eql(time.to_i)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context '#expired?' do
|
|
50
|
-
let(:expire_time) { Time.now + Ably::Models::Token::TOKEN_EXPIRY_BUFFER }
|
|
51
|
-
|
|
52
|
-
context 'once grace period buffer has passed' do
|
|
53
|
-
subject { Ably::Models::Token.new(expires: expire_time - 1) }
|
|
54
|
-
|
|
55
|
-
it 'is true' do
|
|
56
|
-
expect(subject.expired?).to eql(true)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
context 'within grace period buffer' do
|
|
61
|
-
subject { Ably::Models::Token.new(expires: expire_time + 1) }
|
|
62
|
-
|
|
63
|
-
it 'is false' do
|
|
64
|
-
expect(subject.expired?).to eql(false)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
context '==' do
|
|
71
|
-
let(:token_attributes) { { id: 'unique' } }
|
|
72
|
-
|
|
73
|
-
it 'is true when attributes are the same' do
|
|
74
|
-
new_token = -> { Ably::Models::Token.new(token_attributes) }
|
|
75
|
-
expect(new_token[]).to eq(new_token[])
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it 'is false when attributes are not the same' do
|
|
79
|
-
expect(Ably::Models::Token.new(id: 1)).to_not eq(Ably::Models::Token.new(id: 2))
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
it 'is false when class type differs' do
|
|
83
|
-
expect(Ably::Models::Token.new(id: 1)).to_not eq(nil)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|