twilio-ruby 3.12.3 → 3.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGES.md +12 -0
- data/README.md +14 -14
- data/Rakefile +2 -2
- data/docs/faq.rst +3 -3
- data/docs/getting-started.rst +17 -12
- data/docs/usage/accounts.rst +6 -6
- data/docs/usage/applications.rst +5 -5
- data/docs/usage/basics.rst +1 -1
- data/docs/usage/caller-ids.rst +4 -2
- data/docs/usage/conferences.rst +1 -1
- data/docs/usage/errors.rst +3 -3
- data/docs/usage/messages.rst +24 -16
- data/docs/usage/phone-calls.rst +10 -8
- data/docs/usage/phone-numbers.rst +15 -11
- data/docs/usage/sip.rst +9 -8
- data/docs/usage/twiml.rst +2 -2
- data/examples/examples.rb +44 -20
- data/lib/rack/twilio_webhook_authentication.rb +5 -1
- data/lib/twilio-ruby/rest/calls.rb +4 -4
- data/lib/twilio-ruby/rest/client.rb +25 -23
- data/lib/twilio-ruby/rest/conferences/participants.rb +2 -2
- data/lib/twilio-ruby/rest/incoming_phone_numbers.rb +1 -1
- data/lib/twilio-ruby/rest/instance_resource.rb +9 -5
- data/lib/twilio-ruby/rest/list_resource.rb +18 -10
- data/lib/twilio-ruby/rest/outgoing_caller_ids.rb +1 -1
- data/lib/twilio-ruby/rest/queues/members.rb +1 -1
- data/lib/twilio-ruby/rest/sip.rb +1 -3
- data/lib/twilio-ruby/rest/utils.rb +11 -3
- data/lib/twilio-ruby/util/capability.rb +4 -4
- data/lib/twilio-ruby/version.rb +1 -1
- data/spec/rack/twilio_webhook_authentication_spec.rb +18 -6
- data/spec/rest/account_spec.rb +24 -8
- data/spec/rest/call_spec.rb +6 -2
- data/spec/rest/client_spec.rb +37 -14
- data/spec/rest/conference_spec.rb +3 -1
- data/spec/rest/instance_resource_spec.rb +1 -1
- data/spec/rest/numbers_spec.rb +18 -6
- data/spec/rest/queue_spec.rb +3 -1
- data/spec/rest/recording_spec.rb +3 -1
- data/spec/util/url_encode_spec.rb +1 -1
- metadata +1 -1
data/lib/twilio-ruby/rest/sip.rb
CHANGED
@@ -4,7 +4,10 @@ module Twilio
|
|
4
4
|
|
5
5
|
def twilify(something)
|
6
6
|
if something.is_a? Hash
|
7
|
-
|
7
|
+
something = something.to_a
|
8
|
+
something = something.map { |a| [twilify(a[0]).to_sym, a[1]] }
|
9
|
+
something = something.flatten(1)
|
10
|
+
Hash[*something]
|
8
11
|
else
|
9
12
|
something.to_s.split('_').map! do |s|
|
10
13
|
[s[0,1].capitalize, s[1..-1]].join
|
@@ -14,9 +17,14 @@ module Twilio
|
|
14
17
|
|
15
18
|
def detwilify(something)
|
16
19
|
if something.is_a? Hash
|
17
|
-
|
20
|
+
something = *something.to_a
|
21
|
+
something.map! { |pair| [detwilify(pair[0]).to_sym, pair[1]] }
|
22
|
+
something = something.flatten
|
23
|
+
Hash[something]
|
18
24
|
else
|
19
|
-
something
|
25
|
+
something = something.to_s
|
26
|
+
something = something.gsub(/[A-Z][a-z]*/) { |s| "_#{s.downcase}" }
|
27
|
+
something.gsub(/^_/, '')
|
20
28
|
end
|
21
29
|
end
|
22
30
|
|
@@ -15,20 +15,20 @@ module Twilio
|
|
15
15
|
|
16
16
|
def allow_client_incoming(client_name)
|
17
17
|
@client_name = client_name # stash for use in outgoing
|
18
|
-
scope_params = {'clientName' => client_name}
|
18
|
+
scope_params = { 'clientName' => client_name }
|
19
19
|
@capabilities << scope_uri_for('client', 'incoming', scope_params)
|
20
20
|
end
|
21
21
|
|
22
22
|
def allow_client_outgoing(app_sid, params = {})
|
23
23
|
@allow_client_outgoing = true
|
24
|
-
@outgoing_scope_params = {'appSid' => app_sid}
|
24
|
+
@outgoing_scope_params = { 'appSid' => app_sid }
|
25
25
|
unless params.empty?
|
26
26
|
@outgoing_scope_params['appParams'] = url_encode params
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
def allow_event_stream(filters = {})
|
31
|
-
scope_params = {'path' => '/2010-04-01/Events'}
|
31
|
+
scope_params = { 'path' => '/2010-04-01/Events' }
|
32
32
|
scope_params['params'] = filters unless filters.empty?
|
33
33
|
@capabilities << scope_uri_for('stream', 'subscribe', scope_params)
|
34
34
|
end
|
@@ -45,7 +45,7 @@ module Twilio
|
|
45
45
|
# build the outgoing scope lazily so that we can use @client_name
|
46
46
|
if @allow_client_outgoing
|
47
47
|
params = @outgoing_scope_params
|
48
|
-
params.merge!(
|
48
|
+
params.merge!('clientName' => @client_name) if @client_name
|
49
49
|
capabilities << scope_uri_for('client', 'outgoing', params)
|
50
50
|
end
|
51
51
|
|
data/lib/twilio-ruby/version.rb
CHANGED
@@ -22,7 +22,9 @@ describe Rack::TwilioWebhookAuthentication do
|
|
22
22
|
|
23
23
|
describe 'calling against one path' do
|
24
24
|
before do
|
25
|
-
@middleware = Rack::TwilioWebhookAuthentication.new(
|
25
|
+
@middleware = Rack::TwilioWebhookAuthentication.new(
|
26
|
+
@app, 'ABC', /\/voice/
|
27
|
+
)
|
26
28
|
end
|
27
29
|
|
28
30
|
it 'should not intercept when the path doesn\'t match' do
|
@@ -33,14 +35,18 @@ describe Rack::TwilioWebhookAuthentication do
|
|
33
35
|
end
|
34
36
|
|
35
37
|
it 'should allow a request through if it validates' do
|
36
|
-
expect_any_instance_of(Twilio::Util::RequestValidator).to
|
38
|
+
expect_any_instance_of(Twilio::Util::RequestValidator).to(
|
39
|
+
receive(:validate).and_return(true)
|
40
|
+
)
|
37
41
|
request = Rack::MockRequest.env_for('/voice')
|
38
42
|
status, headers, body = @middleware.call(request)
|
39
43
|
expect(status).to be(200)
|
40
44
|
end
|
41
45
|
|
42
46
|
it 'should short circuit a request to 403 if it does not validate' do
|
43
|
-
expect_any_instance_of(Twilio::Util::RequestValidator).to
|
47
|
+
expect_any_instance_of(Twilio::Util::RequestValidator).to(
|
48
|
+
receive(:validate).and_return(false)
|
49
|
+
)
|
44
50
|
request = Rack::MockRequest.env_for('/voice')
|
45
51
|
status, headers, body = @middleware.call(request)
|
46
52
|
expect(status).to be(403)
|
@@ -49,7 +55,9 @@ describe Rack::TwilioWebhookAuthentication do
|
|
49
55
|
|
50
56
|
describe 'calling against many paths' do
|
51
57
|
before do
|
52
|
-
@middleware = Rack::TwilioWebhookAuthentication.new(
|
58
|
+
@middleware = Rack::TwilioWebhookAuthentication.new(
|
59
|
+
@app, 'ABC', /\/voice/, /\/sms/
|
60
|
+
)
|
53
61
|
end
|
54
62
|
|
55
63
|
it 'should not intercept when the path doesn\'t match' do
|
@@ -60,14 +68,18 @@ describe Rack::TwilioWebhookAuthentication do
|
|
60
68
|
end
|
61
69
|
|
62
70
|
it 'shold allow a request through if it validates' do
|
63
|
-
expect_any_instance_of(Twilio::Util::RequestValidator).to
|
71
|
+
expect_any_instance_of(Twilio::Util::RequestValidator).to(
|
72
|
+
receive(:validate).and_return(true)
|
73
|
+
)
|
64
74
|
request = Rack::MockRequest.env_for('/sms')
|
65
75
|
status, headers, body = @middleware.call(request)
|
66
76
|
expect(status).to be(200)
|
67
77
|
end
|
68
78
|
|
69
79
|
it 'should short circuit a request to 403 if it does not validate' do
|
70
|
-
expect_any_instance_of(Twilio::Util::RequestValidator).to
|
80
|
+
expect_any_instance_of(Twilio::Util::RequestValidator).to(
|
81
|
+
receive(:validate).and_return(false)
|
82
|
+
)
|
71
83
|
request = Rack::MockRequest.env_for('/sms')
|
72
84
|
status, headers, body = @middleware.call(request)
|
73
85
|
expect(status).to be(403)
|
data/spec/rest/account_spec.rb
CHANGED
@@ -8,17 +8,23 @@ describe Twilio::REST::Account do
|
|
8
8
|
|
9
9
|
it 'sets up incoming phone numbers resources object' do
|
10
10
|
expect(@account).to respond_to(:incoming_phone_numbers)
|
11
|
-
expect(@account.incoming_phone_numbers.instance_variable_get('@path')).to
|
11
|
+
expect(@account.incoming_phone_numbers.instance_variable_get('@path')).to(
|
12
|
+
eq('someUri/IncomingPhoneNumbers')
|
13
|
+
)
|
12
14
|
end
|
13
15
|
|
14
16
|
it 'sets up an available phone numbers resources object' do
|
15
17
|
expect(@account).to respond_to(:available_phone_numbers)
|
16
|
-
expect(@account.available_phone_numbers.instance_variable_get('@path')).to
|
18
|
+
expect(@account.available_phone_numbers.instance_variable_get('@path')).to(
|
19
|
+
eq('someUri/AvailablePhoneNumbers')
|
20
|
+
)
|
17
21
|
end
|
18
22
|
|
19
23
|
it 'sets up an outgoing caller ids resources object' do
|
20
24
|
expect(@account).to respond_to(:outgoing_caller_ids)
|
21
|
-
expect(@account.outgoing_caller_ids.instance_variable_get('@path')).to eq(
|
25
|
+
expect(@account.outgoing_caller_ids.instance_variable_get('@path')).to eq(
|
26
|
+
'someUri/OutgoingCallerIds'
|
27
|
+
)
|
22
28
|
end
|
23
29
|
|
24
30
|
it 'sets up a calls resources object' do
|
@@ -28,12 +34,16 @@ describe Twilio::REST::Account do
|
|
28
34
|
|
29
35
|
it 'sets up a conferences resources object' do
|
30
36
|
expect(@account).to respond_to(:conferences)
|
31
|
-
expect(@account.conferences.instance_variable_get('@path')).to eq(
|
37
|
+
expect(@account.conferences.instance_variable_get('@path')).to eq(
|
38
|
+
'someUri/Conferences'
|
39
|
+
)
|
32
40
|
end
|
33
41
|
|
34
42
|
it 'sets up a queues resources object' do
|
35
43
|
expect(@account).to respond_to(:queues)
|
36
|
-
expect(@account.queues.instance_variable_get('@path')).to eq(
|
44
|
+
expect(@account.queues.instance_variable_get('@path')).to eq(
|
45
|
+
'someUri/Queues'
|
46
|
+
)
|
37
47
|
end
|
38
48
|
|
39
49
|
it 'sets up a sms resource object' do
|
@@ -43,16 +53,22 @@ describe Twilio::REST::Account do
|
|
43
53
|
|
44
54
|
it 'sets up a recordings resources object' do
|
45
55
|
expect(@account).to respond_to(:recordings)
|
46
|
-
expect(@account.recordings.instance_variable_get('@path')).to eq(
|
56
|
+
expect(@account.recordings.instance_variable_get('@path')).to eq(
|
57
|
+
'someUri/Recordings'
|
58
|
+
)
|
47
59
|
end
|
48
60
|
|
49
61
|
it 'sets up a transcriptions resources object' do
|
50
62
|
expect(@account).to respond_to(:transcriptions)
|
51
|
-
expect(@account.transcriptions.instance_variable_get('@path')).to eq(
|
63
|
+
expect(@account.transcriptions.instance_variable_get('@path')).to eq(
|
64
|
+
'someUri/Transcriptions'
|
65
|
+
)
|
52
66
|
end
|
53
67
|
|
54
68
|
it 'sets up a notifications resources object' do
|
55
69
|
expect(@account).to respond_to(:notifications)
|
56
|
-
expect(@account.notifications.instance_variable_get('@path')).to eq(
|
70
|
+
expect(@account.notifications.instance_variable_get('@path')).to eq(
|
71
|
+
'someUri/Notifications'
|
72
|
+
)
|
57
73
|
end
|
58
74
|
end
|
data/spec/rest/call_spec.rb
CHANGED
@@ -8,11 +8,15 @@ describe Twilio::REST::Call do
|
|
8
8
|
|
9
9
|
it 'sets up a recordings resources object' do
|
10
10
|
expect(@call).to respond_to(:recordings)
|
11
|
-
expect(@call.recordings.instance_variable_get('@path')).to eq(
|
11
|
+
expect(@call.recordings.instance_variable_get('@path')).to eq(
|
12
|
+
'someUri/Recordings'
|
13
|
+
)
|
12
14
|
end
|
13
15
|
|
14
16
|
it 'sets up a notifications resources object' do
|
15
17
|
expect(@call).to respond_to(:notifications)
|
16
|
-
expect(@call.notifications.instance_variable_get('@path')).to eq(
|
18
|
+
expect(@call.notifications.instance_variable_get('@path')).to eq(
|
19
|
+
'someUri/Notifications'
|
20
|
+
)
|
17
21
|
end
|
18
22
|
end
|
data/spec/rest/client_spec.rb
CHANGED
@@ -61,14 +61,14 @@ describe Twilio::REST::Client do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'should not raise an error if the response body is empty' do
|
64
|
-
FakeWeb.register_uri(:any, %r/api\.twilio\.com/, :
|
64
|
+
FakeWeb.register_uri(:any, %r/api\.twilio\.com/, body: '')
|
65
65
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
66
66
|
Twilio::REST::IncomingPhoneNumber.new('/phone_number', twilio).delete
|
67
67
|
end
|
68
68
|
|
69
69
|
it 'should not raise an error if the response body is nil' do
|
70
|
-
response = double(:response, :
|
71
|
-
connection = double(:connection, :
|
70
|
+
response = double(:response, body: nil)
|
71
|
+
connection = double(:connection, request: response)
|
72
72
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
73
73
|
twilio.instance_variable_set(:@connection, connection)
|
74
74
|
Twilio::REST::IncomingPhoneNumber.new('/phone_number', twilio).delete
|
@@ -89,22 +89,28 @@ describe Twilio::REST::Client do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'should set up the requested ssl verification ca_file if provided' do
|
92
|
-
twilio = Twilio::REST::Client.new(
|
92
|
+
twilio = Twilio::REST::Client.new(
|
93
|
+
'someSid', 'someToken', ssl_ca_file: '/path/to/ca/file'
|
94
|
+
)
|
93
95
|
connection = twilio.instance_variable_get('@connection')
|
94
96
|
expect(connection.ca_file).to eq('/path/to/ca/file')
|
95
97
|
end
|
96
98
|
|
97
|
-
it 'should set up the proper http ssl connection when a different
|
98
|
-
|
99
|
+
it 'should set up the proper http ssl connection when a different ' \
|
100
|
+
'domain is given' do
|
101
|
+
twilio = Twilio::REST::Client.new(
|
102
|
+
'someSid', 'someToken', host: 'api.faketwilio.com'
|
103
|
+
)
|
99
104
|
connection = twilio.instance_variable_get('@connection')
|
100
105
|
expect(connection.address).to eq('api.faketwilio.com')
|
101
106
|
expect(connection.port).to eq(443)
|
102
107
|
expect(connection.use_ssl?).to eq(true)
|
103
108
|
end
|
104
109
|
|
105
|
-
it 'should adjust the open and read timeouts on the underlying Net::HTTP
|
110
|
+
it 'should adjust the open and read timeouts on the underlying Net::HTTP ' \
|
111
|
+
'object when asked' do
|
106
112
|
timeout = rand(30)
|
107
|
-
twilio = Twilio::REST::Client.new('someSid', 'someToken', :
|
113
|
+
twilio = Twilio::REST::Client.new('someSid', 'someToken', timeout: timeout)
|
108
114
|
connection = twilio.instance_variable_get('@connection')
|
109
115
|
expect(connection.port).to eq(443)
|
110
116
|
expect(connection.use_ssl?).to eq(true)
|
@@ -112,8 +118,14 @@ describe Twilio::REST::Client do
|
|
112
118
|
expect(connection.read_timeout).to eq(timeout)
|
113
119
|
end
|
114
120
|
|
115
|
-
it 'should set up the proper http ssl connection when a proxy_host is
|
116
|
-
|
121
|
+
it 'should set up the proper http ssl connection when a proxy_host is ' \
|
122
|
+
'given' do
|
123
|
+
twilio = Twilio::REST::Client.new(
|
124
|
+
'someSid',
|
125
|
+
'someToken',
|
126
|
+
host: 'api.faketwilio.com',
|
127
|
+
proxy_addr: 'localhost'
|
128
|
+
)
|
117
129
|
connection = twilio.instance_variable_get('@connection')
|
118
130
|
expect(connection.proxy?).to eq(true)
|
119
131
|
expect(connection.proxy_address).to eq('localhost')
|
@@ -123,8 +135,15 @@ describe Twilio::REST::Client do
|
|
123
135
|
expect(connection.use_ssl?).to eq(true)
|
124
136
|
end
|
125
137
|
|
126
|
-
it 'should set up the proper http ssl connection when a proxy_host and
|
127
|
-
|
138
|
+
it 'should set up the proper http ssl connection when a proxy_host and ' \
|
139
|
+
'proxy_port are given' do
|
140
|
+
twilio = Twilio::REST::Client.new(
|
141
|
+
'someSid',
|
142
|
+
'someToken',
|
143
|
+
host: 'api.faketwilio.com',
|
144
|
+
proxy_addr: 'localhost',
|
145
|
+
proxy_port: 13128
|
146
|
+
)
|
128
147
|
connection = twilio.instance_variable_get('@connection')
|
129
148
|
expect(connection.proxy?).to eq(true)
|
130
149
|
expect(connection.proxy_address).to eq('localhost')
|
@@ -137,13 +156,17 @@ describe Twilio::REST::Client do
|
|
137
156
|
it 'should set up an accounts resources object' do
|
138
157
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
139
158
|
expect(twilio).to respond_to(:accounts)
|
140
|
-
expect(twilio.accounts.instance_variable_get('@path')).to eq(
|
159
|
+
expect(twilio.accounts.instance_variable_get('@path')).to eq(
|
160
|
+
'/2010-04-01/Accounts'
|
161
|
+
)
|
141
162
|
end
|
142
163
|
|
143
164
|
it 'should set up an account object with the given sid' do
|
144
165
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
145
166
|
expect(twilio).to respond_to(:account)
|
146
|
-
expect(twilio.account.instance_variable_get('@path')).to eq(
|
167
|
+
expect(twilio.account.instance_variable_get('@path')).to eq(
|
168
|
+
'/2010-04-01/Accounts/someSid'
|
169
|
+
)
|
147
170
|
end
|
148
171
|
|
149
172
|
[
|
@@ -4,6 +4,8 @@ describe Twilio::REST::Conference do
|
|
4
4
|
it 'should set up a participants resources object' do
|
5
5
|
conference = Twilio::REST::Conference.new('someUri', 'someClient')
|
6
6
|
expect(conference).to respond_to(:participants)
|
7
|
-
expect(conference.participants.instance_variable_get('@path')).to eq(
|
7
|
+
expect(conference.participants.instance_variable_get('@path')).to eq(
|
8
|
+
'someUri/Participants'
|
9
|
+
)
|
8
10
|
end
|
9
11
|
end
|
@@ -8,7 +8,7 @@ describe Twilio::REST::InstanceResource do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should set up object properties if passed' do
|
11
|
-
params = {'SomeKey' => 'someValue'}
|
11
|
+
params = { 'SomeKey' => 'someValue' }
|
12
12
|
resource = Twilio::REST::InstanceResource.new('uri', 'client', params)
|
13
13
|
expect(resource.some_key).to eq('someValue')
|
14
14
|
end
|
data/spec/rest/numbers_spec.rb
CHANGED
@@ -13,12 +13,16 @@ describe Twilio::REST::Country do
|
|
13
13
|
|
14
14
|
it 'sets up a toll_free resources object' do
|
15
15
|
expect(@country).to respond_to(:toll_free)
|
16
|
-
expect(@country.toll_free.instance_variable_get('@path')).to eq(
|
16
|
+
expect(@country.toll_free.instance_variable_get('@path')).to eq(
|
17
|
+
'someUri/TollFree'
|
18
|
+
)
|
17
19
|
end
|
18
20
|
|
19
21
|
it 'sets up a mobile resources object' do
|
20
22
|
expect(@country).to respond_to(:mobile)
|
21
|
-
expect(@country.mobile.instance_variable_get('@path')).to eq(
|
23
|
+
expect(@country.mobile.instance_variable_get('@path')).to eq(
|
24
|
+
'someUri/Mobile'
|
25
|
+
)
|
22
26
|
end
|
23
27
|
|
24
28
|
end
|
@@ -26,21 +30,29 @@ end
|
|
26
30
|
describe Twilio::REST::NumberType do
|
27
31
|
|
28
32
|
before do
|
29
|
-
@incoming_phone_numbers = Twilio::REST::IncomingPhoneNumbers.new(
|
33
|
+
@incoming_phone_numbers = Twilio::REST::IncomingPhoneNumbers.new(
|
34
|
+
'someUri', 'someClient'
|
35
|
+
)
|
30
36
|
end
|
31
37
|
|
32
38
|
it 'sets up a local resources object' do
|
33
39
|
expect(@incoming_phone_numbers).to respond_to(:local)
|
34
|
-
expect(@incoming_phone_numbers.local.instance_variable_get('@path')).to eq(
|
40
|
+
expect(@incoming_phone_numbers.local.instance_variable_get('@path')).to eq(
|
41
|
+
'someUri/Local'
|
42
|
+
)
|
35
43
|
end
|
36
44
|
|
37
45
|
it 'sets up a toll_free resources object' do
|
38
46
|
expect(@incoming_phone_numbers).to respond_to(:toll_free)
|
39
|
-
expect(@incoming_phone_numbers.toll_free.instance_variable_get('@path')).to
|
47
|
+
expect(@incoming_phone_numbers.toll_free.instance_variable_get('@path')).to(
|
48
|
+
eq('someUri/TollFree')
|
49
|
+
)
|
40
50
|
end
|
41
51
|
|
42
52
|
it 'sets up a mobile resources object' do
|
43
53
|
expect(@incoming_phone_numbers).to respond_to(:mobile)
|
44
|
-
expect(@incoming_phone_numbers.mobile.instance_variable_get('@path')).to eq(
|
54
|
+
expect(@incoming_phone_numbers.mobile.instance_variable_get('@path')).to eq(
|
55
|
+
'someUri/Mobile'
|
56
|
+
)
|
45
57
|
end
|
46
58
|
end
|
data/spec/rest/queue_spec.rb
CHANGED
@@ -4,6 +4,8 @@ describe Twilio::REST::Queue do
|
|
4
4
|
it 'should set up a members resources object' do
|
5
5
|
queue = Twilio::REST::Queue.new('someUri', 'someClient')
|
6
6
|
expect(queue).to respond_to(:members)
|
7
|
-
expect(queue.members.instance_variable_get('@path')).to eq(
|
7
|
+
expect(queue.members.instance_variable_get('@path')).to eq(
|
8
|
+
'someUri/Members'
|
9
|
+
)
|
8
10
|
end
|
9
11
|
end
|
data/spec/rest/recording_spec.rb
CHANGED
@@ -4,6 +4,8 @@ describe Twilio::REST::Recording do
|
|
4
4
|
it 'should set up a transcriptions resources object' do
|
5
5
|
call = Twilio::REST::Recording.new('someUri', 'someClient')
|
6
6
|
expect(call).to respond_to(:transcriptions)
|
7
|
-
expect(call.transcriptions.instance_variable_get('@path')).to eq(
|
7
|
+
expect(call.transcriptions.instance_variable_get('@path')).to eq(
|
8
|
+
'someUri/Transcriptions'
|
9
|
+
)
|
8
10
|
end
|
9
11
|
end
|