twilio-ruby 3.11.5 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +13 -5
  2. data/.gitignore +1 -1
  3. data/.travis.yml +20 -9
  4. data/AUTHORS.md +32 -25
  5. data/CHANGES.md +203 -0
  6. data/Gemfile +8 -1
  7. data/{LICENSE → LICENSE.md} +4 -2
  8. data/Makefile +1 -2
  9. data/README.md +70 -39
  10. data/Rakefile +8 -10
  11. data/docs/faq.rst +3 -3
  12. data/docs/getting-started.rst +17 -12
  13. data/docs/index.rst +15 -0
  14. data/docs/usage/accounts.rst +6 -6
  15. data/docs/usage/addresses.rst +101 -0
  16. data/docs/usage/applications.rst +10 -10
  17. data/docs/usage/basics.rst +17 -4
  18. data/docs/usage/caller-ids.rst +4 -2
  19. data/docs/usage/conferences.rst +11 -11
  20. data/docs/usage/errors.rst +7 -7
  21. data/docs/usage/messages.rst +48 -20
  22. data/docs/usage/notifications.rst +6 -4
  23. data/docs/usage/phone-calls.rst +33 -14
  24. data/docs/usage/phone-numbers.rst +45 -31
  25. data/docs/usage/queues.rst +8 -8
  26. data/docs/usage/recordings.rst +12 -10
  27. data/docs/usage/sip.rst +15 -14
  28. data/docs/usage/taskrouter-tokens.rst +98 -0
  29. data/docs/usage/taskrouter.rst +226 -0
  30. data/docs/usage/token-generation.rst +19 -4
  31. data/docs/usage/transcriptions.rst +3 -2
  32. data/docs/usage/twiml.rst +7 -7
  33. data/docs/usage/validation.rst +39 -3
  34. data/examples/examples.rb +44 -20
  35. data/examples/print-call-log.rb +1 -1
  36. data/lib/rack/twilio_webhook_authentication.rb +47 -0
  37. data/lib/twilio-ruby/rest/accounts.rb +2 -1
  38. data/lib/twilio-ruby/rest/addresses/dependent_phone_numbers.rb +6 -0
  39. data/lib/twilio-ruby/rest/addresses.rb +12 -0
  40. data/lib/twilio-ruby/rest/base_client.rb +127 -0
  41. data/lib/twilio-ruby/rest/call_feedback.rb +28 -0
  42. data/lib/twilio-ruby/rest/call_feedback_summary.rb +13 -0
  43. data/lib/twilio-ruby/rest/calls.rb +10 -5
  44. data/lib/twilio-ruby/rest/client.rb +44 -109
  45. data/lib/twilio-ruby/rest/conferences/participants.rb +2 -2
  46. data/lib/twilio-ruby/rest/incoming_phone_numbers.rb +1 -1
  47. data/lib/twilio-ruby/rest/instance_resource.rb +2 -16
  48. data/lib/twilio-ruby/rest/list_resource.rb +20 -30
  49. data/lib/twilio-ruby/rest/lookups/phone_numbers.rb +17 -0
  50. data/lib/twilio-ruby/rest/lookups_client.rb +99 -0
  51. data/lib/twilio-ruby/rest/messages.rb +5 -0
  52. data/lib/twilio-ruby/rest/next_gen_list_resource.rb +36 -0
  53. data/lib/twilio-ruby/rest/outgoing_caller_ids.rb +1 -1
  54. data/lib/twilio-ruby/rest/queues/members.rb +1 -1
  55. data/lib/twilio-ruby/rest/sip.rb +1 -3
  56. data/lib/twilio-ruby/rest/sms/messages.rb +23 -0
  57. data/lib/twilio-ruby/rest/task_router/activities.rb +8 -0
  58. data/lib/twilio-ruby/rest/task_router/events.rb +8 -0
  59. data/lib/twilio-ruby/rest/task_router/reservations.rb +8 -0
  60. data/lib/twilio-ruby/rest/task_router/statistics.rb +26 -0
  61. data/lib/twilio-ruby/rest/task_router/task_queues.rb +17 -0
  62. data/lib/twilio-ruby/rest/task_router/task_queues_statistics.rb +15 -0
  63. data/lib/twilio-ruby/rest/task_router/tasks.rb +15 -0
  64. data/lib/twilio-ruby/rest/task_router/workers.rb +13 -0
  65. data/lib/twilio-ruby/rest/task_router/workers_statistics.rb +8 -0
  66. data/lib/twilio-ruby/rest/task_router/workflow_statistics.rb +7 -0
  67. data/lib/twilio-ruby/rest/task_router/workflows.rb +11 -0
  68. data/lib/twilio-ruby/rest/task_router/workspace_statistics.rb +7 -0
  69. data/lib/twilio-ruby/rest/task_router/workspaces.rb +17 -0
  70. data/lib/twilio-ruby/rest/task_router_client.rb +176 -0
  71. data/lib/twilio-ruby/rest/tokens.rb +7 -0
  72. data/lib/twilio-ruby/rest/usage/records.rb +2 -2
  73. data/lib/twilio-ruby/rest/utils.rb +35 -11
  74. data/lib/twilio-ruby/task_router/capability.rb +87 -0
  75. data/lib/twilio-ruby/task_router.rb +0 -0
  76. data/lib/twilio-ruby/twiml/response.rb +1 -0
  77. data/lib/twilio-ruby/util/capability.rb +10 -7
  78. data/lib/twilio-ruby/util/client_config.rb +29 -0
  79. data/lib/twilio-ruby/util/configuration.rb +7 -0
  80. data/lib/twilio-ruby/util/request_validator.rb +18 -3
  81. data/lib/twilio-ruby/version.rb +1 -1
  82. data/lib/twilio-ruby.rb +48 -0
  83. data/spec/rack/twilio_webhook_authentication_spec.rb +110 -0
  84. data/spec/rest/account_spec.rb +51 -20
  85. data/spec/rest/address_spec.rb +11 -0
  86. data/spec/rest/call_feedback_spec.rb +12 -0
  87. data/spec/rest/call_feedback_summary_spec.rb +9 -0
  88. data/spec/rest/call_spec.rb +8 -4
  89. data/spec/rest/client_spec.rb +209 -51
  90. data/spec/rest/conference_spec.rb +4 -2
  91. data/spec/rest/instance_resource_spec.rb +4 -4
  92. data/spec/rest/lookups/phone_number_spec.rb +8 -0
  93. data/spec/rest/message_spec.rb +2 -2
  94. data/spec/rest/numbers_spec.rb +25 -13
  95. data/spec/rest/queue_spec.rb +4 -2
  96. data/spec/rest/recording_spec.rb +4 -2
  97. data/spec/rest/sms/message_spec.rb +37 -0
  98. data/spec/rest/sms/messages_spec.rb +31 -0
  99. data/spec/rest/task_router/reservation_spec.rb +9 -0
  100. data/spec/rest/task_router/task_queue_spec.rb +9 -0
  101. data/spec/rest/token_spec.rb +7 -0
  102. data/spec/rest/utils_spec.rb +45 -0
  103. data/spec/spec_helper.rb +12 -3
  104. data/spec/support/fakeweb.rb +2 -0
  105. data/spec/task_router_spec.rb +114 -0
  106. data/spec/twilio_spec.rb +15 -0
  107. data/spec/util/capability_spec.rb +167 -118
  108. data/spec/util/client_config_spec.rb +21 -0
  109. data/spec/util/configuration_spec.rb +15 -0
  110. data/spec/util/request_validator_spec.rb +31 -3
  111. data/spec/util/url_encode_spec.rb +2 -2
  112. data/twilio-ruby.gemspec +28 -27
  113. metadata +93 -71
  114. data/CHANGES +0 -47
@@ -1,15 +1,74 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Twilio::REST::Client do
4
+ describe 'config at class level' do
5
+ after(:each) do
6
+ Twilio.instance_variable_set('@configuration', nil)
7
+ end
8
+
9
+ it 'should set the account sid and auth token with a config block' do
10
+ Twilio.configure do |config|
11
+ config.account_sid = 'someSid'
12
+ config.auth_token = 'someToken'
13
+ end
14
+
15
+ client = Twilio::REST::Client.new
16
+ expect(client.account_sid).to eq('someSid')
17
+ expect(client.instance_variable_get('@auth_token')).to eq('someToken')
18
+ end
19
+
20
+ it 'should overwrite account sid and auth token if passed to initializer' do
21
+ Twilio.configure do |config|
22
+ config.account_sid = 'someSid'
23
+ config.auth_token = 'someToken'
24
+ end
25
+
26
+ client = Twilio::REST::Client.new 'otherSid', 'otherToken'
27
+ expect(client.account_sid).to eq('otherSid')
28
+ expect(client.instance_variable_get('@auth_token')).to eq('otherToken')
29
+ end
30
+
31
+ it 'should overwrite the account sid if only the sid is given' do
32
+ Twilio.configure do |config|
33
+ config.account_sid = 'someSid'
34
+ config.auth_token = 'someToken'
35
+ end
36
+
37
+ client = Twilio::REST::Client.new 'otherSid'
38
+ expect(client.account_sid).to eq('otherSid')
39
+ expect(client.instance_variable_get('@auth_token')).to eq('someToken')
40
+ end
41
+
42
+ it 'should allow options after setting up auth with config' do
43
+ Twilio.configure do |config|
44
+ config.account_sid = 'someSid'
45
+ config.auth_token = 'someToken'
46
+ end
47
+
48
+ client = Twilio::REST::Client.new :host => 'api.faketwilio.com'
49
+
50
+ connection = client.instance_variable_get('@connection')
51
+ expect(connection.address).to eq('api.faketwilio.com')
52
+ end
53
+
54
+ it 'should throw an argument error if the sid and token isn\'t set' do
55
+ expect { Twilio::REST::Client.new }.to raise_error(ArgumentError)
56
+ end
57
+
58
+ it 'should throw an argument error if only the account_sid is set' do
59
+ expect { Twilio::REST::Client.new 'someSid' }.to raise_error(ArgumentError)
60
+ end
61
+ end
62
+
4
63
  it 'should not raise an error if the response body is empty' do
5
- FakeWeb.register_uri(:any, %r/api\.twilio\.com/, :body => '')
64
+ FakeWeb.register_uri(:any, %r/api\.twilio\.com/, body: '')
6
65
  twilio = Twilio::REST::Client.new('someSid', 'someToken')
7
66
  Twilio::REST::IncomingPhoneNumber.new('/phone_number', twilio).delete
8
67
  end
9
68
 
10
69
  it 'should not raise an error if the response body is nil' do
11
- response = double(:response, :body => nil)
12
- connection = double(:connection, :request => response)
70
+ response = double(:response, body: nil)
71
+ connection = double(:connection, request: response)
13
72
  twilio = Twilio::REST::Client.new('someSid', 'someToken')
14
73
  twilio.instance_variable_set(:@connection, connection)
15
74
  Twilio::REST::IncomingPhoneNumber.new('/phone_number', twilio).delete
@@ -17,84 +76,183 @@ describe Twilio::REST::Client do
17
76
 
18
77
  it 'should set up a new client instance with the given sid and token' do
19
78
  twilio = Twilio::REST::Client.new('someSid', 'someToken')
20
- twilio.account_sid.should == 'someSid'
21
- twilio.instance_variable_get('@auth_token').should == 'someToken'
79
+ expect(twilio.account_sid).to eq('someSid')
80
+ expect(twilio.instance_variable_get('@auth_token')).to eq('someToken')
22
81
  end
23
-
82
+
24
83
  it 'should set up the proper default http ssl connection' do
25
84
  twilio = Twilio::REST::Client.new('someSid', 'someToken')
26
85
  connection = twilio.instance_variable_get('@connection')
27
- connection.address.should == 'api.twilio.com'
28
- connection.port.should == 443
29
- connection.use_ssl?.should == true
86
+ expect(connection.address).to eq('api.twilio.com')
87
+ expect(connection.port).to eq(443)
88
+ expect(connection.use_ssl?).to eq(true)
30
89
  end
31
-
90
+
32
91
  it 'should set up the requested ssl verification ca_file if provided' do
33
- twilio = Twilio::REST::Client.new('someSid', 'someToken', :ssl_ca_file => '/path/to/ca/file')
92
+ twilio = Twilio::REST::Client.new(
93
+ 'someSid', 'someToken', ssl_ca_file: '/path/to/ca/file'
94
+ )
34
95
  connection = twilio.instance_variable_get('@connection')
35
- connection.ca_file.should == '/path/to/ca/file'
96
+ expect(connection.ca_file).to eq('/path/to/ca/file')
36
97
  end
37
98
 
38
- it 'should set up the proper http ssl connection when a different domain is given' do
39
- twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com')
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
+ )
40
104
  connection = twilio.instance_variable_get('@connection')
41
- connection.address.should == 'api.faketwilio.com'
42
- connection.port.should == 443
43
- connection.use_ssl?.should == true
105
+ expect(connection.address).to eq('api.faketwilio.com')
106
+ expect(connection.port).to eq(443)
107
+ expect(connection.use_ssl?).to eq(true)
44
108
  end
45
109
 
46
- it 'should adjust the open and read timeouts on the underlying Net::HTTP object when asked' do
110
+ it 'should adjust the open and read timeouts on the underlying Net::HTTP ' \
111
+ 'object when asked' do
47
112
  timeout = rand(30)
48
- twilio = Twilio::REST::Client.new('someSid', 'someToken', :timeout => timeout)
113
+ twilio = Twilio::REST::Client.new('someSid', 'someToken', timeout: timeout)
49
114
  connection = twilio.instance_variable_get('@connection')
50
- connection.port.should == 443
51
- connection.use_ssl?.should == true
52
- connection.open_timeout.should == timeout
53
- connection.read_timeout.should == timeout
115
+ expect(connection.port).to eq(443)
116
+ expect(connection.use_ssl?).to eq(true)
117
+ expect(connection.open_timeout).to eq(timeout)
118
+ expect(connection.read_timeout).to eq(timeout)
54
119
  end
55
120
 
56
- it 'should set up the proper http ssl connection when a proxy_host is given' do
57
- twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com', :proxy_addr => 'localhost')
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
+ )
58
129
  connection = twilio.instance_variable_get('@connection')
59
- connection.proxy?.should == true
60
- connection.proxy_address.should == 'localhost'
61
- connection.proxy_port.should == 80
62
- connection.address.should == 'api.faketwilio.com'
63
- connection.port.should == 443
64
- connection.use_ssl?.should == true
130
+ expect(connection.proxy?).to eq(true)
131
+ expect(connection.proxy_address).to eq('localhost')
132
+ expect(connection.proxy_port).to eq(80)
133
+ expect(connection.address).to eq('api.faketwilio.com')
134
+ expect(connection.port).to eq(443)
135
+ expect(connection.use_ssl?).to eq(true)
65
136
  end
66
137
 
67
- it 'should set up the proper http ssl connection when a proxy_host and proxy_port are given' do
68
- twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com', :proxy_addr => 'localhost', :proxy_port => 13128)
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
+ )
69
147
  connection = twilio.instance_variable_get('@connection')
70
- connection.proxy?.should == true
71
- connection.proxy_address.should == 'localhost'
72
- connection.proxy_port.should == 13128
73
- connection.address.should == 'api.faketwilio.com'
74
- connection.port.should == 443
75
- connection.use_ssl?.should == true
148
+ expect(connection.proxy?).to eq(true)
149
+ expect(connection.proxy_address).to eq('localhost')
150
+ expect(connection.proxy_port).to eq(13128)
151
+ expect(connection.address).to eq('api.faketwilio.com')
152
+ expect(connection.port).to eq(443)
153
+ expect(connection.use_ssl?).to eq(true)
76
154
  end
77
155
 
78
156
  it 'should set up an accounts resources object' do
79
157
  twilio = Twilio::REST::Client.new('someSid', 'someToken')
80
- twilio.should respond_to(:accounts)
81
- twilio.accounts.instance_variable_get('@path').should == '/2010-04-01/Accounts'
158
+ expect(twilio).to respond_to(:accounts)
159
+ expect(twilio.accounts.instance_variable_get('@path')).to eq(
160
+ '/2010-04-01/Accounts'
161
+ )
82
162
  end
83
163
 
84
164
  it 'should set up an account object with the given sid' do
85
165
  twilio = Twilio::REST::Client.new('someSid', 'someToken')
86
- twilio.should respond_to(:account)
87
- twilio.account.instance_variable_get('@path').should == '/2010-04-01/Accounts/someSid'
166
+ expect(twilio).to respond_to(:account)
167
+ expect(twilio.account.instance_variable_get('@path')).to eq(
168
+ '/2010-04-01/Accounts/someSid'
169
+ )
88
170
  end
89
171
 
90
- it 'should convert all parameter names to Twilio-style names' do
91
- twilio = Twilio::REST::Client.new('someSid', 'someToken')
92
- untwilified = {:sms_url => 'someUrl', 'voiceFallbackUrl' => 'anotherUrl',
93
- 'Status_callback' => 'yetAnotherUrl'}
94
- twilified = {:SmsUrl => 'someUrl', :VoiceFallbackUrl => 'anotherUrl',
95
- :StatusCallback => 'yetAnotherUrl'}
96
- twilio.instance_eval do
97
- twilify(untwilified).should == twilified
172
+ [
173
+ :sandbox, :available_phone_numbers, :incoming_phone_numbers,
174
+ :calls, :outgoing_caller_ids, :conferences, :sms, :recordings,
175
+ :transcriptions, :notifications, :applications, :connect_apps,
176
+ :authorized_connect_apps, :queues, :usage, :messages, :media, :sip
177
+ ].each do |method|
178
+ it "should delegate the client method #{method} to the account object" do
179
+ client = Twilio::REST::Client.new('someSid', 'someToken')
180
+ expect(client).to respond_to(method)
181
+ expect(client.send(method)).to eq(client.account.send(method))
182
+ end
183
+ end
184
+
185
+ it 'should throw an argument error if the workspace_sid is not set' do
186
+ expect { Twilio::REST::TaskRouterClient.new 'someSid', 'someToken' }.to raise_error(ArgumentError)
187
+ end
188
+
189
+ it 'should have its host set to taskrouter.twilio.com' do
190
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
191
+ connection = client.instance_variable_get('@connection')
192
+ expect(connection.address).to eq('taskrouter.twilio.com')
193
+ end
194
+
195
+ it 'should have task queue statistics resource' do
196
+ FakeWeb.register_uri(:get, %r/taskrouter\.twilio\.com/, body: '{}')
197
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
198
+ expect(client).to respond_to(:task_queue_statistics)
199
+ expect(client.task_queue_statistics('someSid').instance_variable_get('@path')).to eq('/v1/Workspaces/someSid/TaskQueues/someSid/Statistics')
200
+ end
201
+
202
+ it 'should have task queues statistics resource' do
203
+ FakeWeb.register_uri(:get, %r/taskrouter\.twilio\.com/, body: '{"meta": {"key": "task_queues_statistics"}, "task_queues_statistics": [{"task_queue_sid": "WQ123"}]}')
204
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
205
+ expect(client).to respond_to(:task_queues_statistics)
206
+ expect(client.task_queues_statistics[0].task_queue_sid).to eq('WQ123')
207
+ end
208
+
209
+ it 'should have worker statistics resource' do
210
+ FakeWeb.register_uri(:get, %r/taskrouter\.twilio\.com/, body: '{}')
211
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
212
+ expect(client).to respond_to(:worker_statistics)
213
+ expect(client.worker_statistics('someSid').instance_variable_get('@path')).to eq('/v1/Workspaces/someSid/Workers/someSid/Statistics')
214
+ end
215
+
216
+ it 'should have workers statistics resource' do
217
+ FakeWeb.register_uri(:get, %r/taskrouter\.twilio\.com/, body: '{}')
218
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
219
+ expect(client).to respond_to(:workers_statistics)
220
+ expect(client.workers_statistics.instance_variable_get('@path')).to eq('/v1/Workspaces/someSid/Workers/Statistics')
221
+ end
222
+
223
+ it 'should have workflow statistics resource' do
224
+ FakeWeb.register_uri(:get, %r/taskrouter\.twilio\.com/, body: '{}')
225
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
226
+ expect(client).to respond_to(:workflow_statistics)
227
+ expect(client.workflow_statistics('someSid').instance_variable_get('@path')).to eq('/v1/Workspaces/someSid/Workflows/someSid/Statistics')
228
+ end
229
+
230
+ it 'should have workspace statistics resource' do
231
+ FakeWeb.register_uri(:get, %r/taskrouter\.twilio\.com/, body: '{}')
232
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
233
+ expect(client).to respond_to(:workspace_statistics)
234
+ expect(client.workspace_statistics.instance_variable_get('@path')).to eq('/v1/Workspaces/someSid/Statistics')
235
+ end
236
+
237
+ it 'should set up a workspaces resource object' do
238
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
239
+ expect(client).to respond_to(:workspaces)
240
+ expect(client.workspaces.instance_variable_get('@path')).to eq('/v1/Workspaces')
241
+ end
242
+
243
+ it 'should set up a workspace resource object' do
244
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
245
+ expect(client).to respond_to(:workspace)
246
+ expect(client.workspace.instance_variable_get('@path')).to eq('/v1/Workspaces/someSid')
247
+ end
248
+
249
+ [
250
+ :activities, :tasks, :task_queues, :workers, :workflows
251
+ ].each do |method|
252
+ it "should delegate the client method #{method} to the workspace object" do
253
+ client = Twilio::REST::TaskRouterClient.new('someSid', 'someToken', 'someSid')
254
+ expect(client).to respond_to(method)
255
+ expect(client.send(method)).to eq(client.workspace.send(method))
98
256
  end
99
257
  end
100
258
  end
@@ -3,7 +3,9 @@ require 'spec_helper'
3
3
  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
- conference.should respond_to(:participants)
7
- conference.participants.instance_variable_get('@path').should == 'someUri/Participants'
6
+ expect(conference).to respond_to(:participants)
7
+ expect(conference.participants.instance_variable_get('@path')).to eq(
8
+ 'someUri/Participants'
9
+ )
8
10
  end
9
11
  end
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
  describe Twilio::REST::InstanceResource do
4
4
  it 'should set up an internal reference to the uri and client' do
5
5
  resource = Twilio::REST::InstanceResource.new('some/uri', 'someClient')
6
- resource.instance_variable_get('@path').should == 'some/uri'
7
- resource.instance_variable_get('@client').should == 'someClient'
6
+ expect(resource.instance_variable_get('@path')).to eq('some/uri')
7
+ expect(resource.instance_variable_get('@client')).to eq('someClient')
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
- resource.some_key.should == 'someValue'
13
+ expect(resource.some_key).to eq('someValue')
14
14
  end
15
15
  end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twilio::REST::Lookups::PhoneNumbers do
4
+ it 'creates a phone_number object' do
5
+ client = Twilio::REST::LookupsClient.new 'otherSid', 'otherToken'
6
+ expect(client).to respond_to(:phone_numbers)
7
+ end
8
+ end
@@ -6,7 +6,7 @@ describe Twilio::REST::Message do
6
6
  end
7
7
 
8
8
  it 'sets up a media resources object' do
9
- @message.should respond_to(:media)
10
- @message.media.instance_variable_get('@path').should == 'someUri/Media'
9
+ expect(@message).to respond_to(:media)
10
+ expect(@message.media.instance_variable_get('@path')).to eq('someUri/Media')
11
11
  end
12
12
  end
@@ -7,18 +7,22 @@ describe Twilio::REST::Country do
7
7
  end
8
8
 
9
9
  it 'sets up a local resources object' do
10
- @country.should respond_to(:local)
11
- @country.local.instance_variable_get('@path').should == 'someUri/Local'
10
+ expect(@country).to respond_to(:local)
11
+ expect(@country.local.instance_variable_get('@path')).to eq('someUri/Local')
12
12
  end
13
13
 
14
14
  it 'sets up a toll_free resources object' do
15
- @country.should respond_to(:toll_free)
16
- @country.toll_free.instance_variable_get('@path').should == 'someUri/TollFree'
15
+ expect(@country).to respond_to(:toll_free)
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
- @country.should respond_to(:mobile)
21
- @country.mobile.instance_variable_get('@path').should == 'someUri/Mobile'
22
+ expect(@country).to respond_to(:mobile)
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('someUri', 'someClient')
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
- @incoming_phone_numbers.should respond_to(:local)
34
- @incoming_phone_numbers.local.instance_variable_get('@path').should == 'someUri/Local'
39
+ expect(@incoming_phone_numbers).to respond_to(:local)
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
- @incoming_phone_numbers.should respond_to(:toll_free)
39
- @incoming_phone_numbers.toll_free.instance_variable_get('@path').should == 'someUri/TollFree'
46
+ expect(@incoming_phone_numbers).to respond_to(:toll_free)
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
- @incoming_phone_numbers.should respond_to(:mobile)
44
- @incoming_phone_numbers.mobile.instance_variable_get('@path').should == 'someUri/Mobile'
53
+ expect(@incoming_phone_numbers).to respond_to(:mobile)
54
+ expect(@incoming_phone_numbers.mobile.instance_variable_get('@path')).to eq(
55
+ 'someUri/Mobile'
56
+ )
45
57
  end
46
58
  end
@@ -3,7 +3,9 @@ require 'spec_helper'
3
3
  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
- queue.should respond_to(:members)
7
- queue.members.instance_variable_get('@path').should == 'someUri/Members'
6
+ expect(queue).to respond_to(:members)
7
+ expect(queue.members.instance_variable_get('@path')).to eq(
8
+ 'someUri/Members'
9
+ )
8
10
  end
9
11
  end
@@ -3,7 +3,9 @@ require 'spec_helper'
3
3
  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
- call.should respond_to(:transcriptions)
7
- call.transcriptions.instance_variable_get('@path').should == 'someUri/Transcriptions'
6
+ expect(call).to respond_to(:transcriptions)
7
+ expect(call.transcriptions.instance_variable_get('@path')).to eq(
8
+ 'someUri/Transcriptions'
9
+ )
8
10
  end
9
11
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twilio::REST::SMS::Message do
4
+
5
+ before do
6
+ client = double("Client")
7
+ allow(client).to receive(:post) do
8
+ {'sid' => 'qwerty' }
9
+ end
10
+
11
+ allow(client).to receive(:get) do
12
+ {'sid' => 'qwerty', 'sms_message' => [] }
13
+ end
14
+
15
+ allow(client).to receive(:delete) do
16
+ {'sid' => 'qwerty' }
17
+ end
18
+
19
+ @message = Twilio::REST::SMS::Message.new('someUri',client)
20
+ end
21
+
22
+ it 'should warn of deprecation of SMS Message Update' do
23
+ expect(@message).to receive(:warn)
24
+ @message.update
25
+ end
26
+
27
+ it 'should warn of deprecation of SMS Message Refresh' do
28
+ expect(@message).to receive(:warn)
29
+ @message.refresh
30
+ end
31
+
32
+ it 'should warn of deprecation of SMS Message Delete' do
33
+ expect(@message).to receive(:warn)
34
+ @message.delete
35
+ end
36
+
37
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twilio::REST::SMS::Messages do
4
+
5
+ before do
6
+ client = double("Client")
7
+ allow(client).to receive(:post) do
8
+ {'sid' => 'qwerty' }
9
+ end
10
+
11
+ allow(client).to receive(:get) do
12
+ {'sid' => 'qwerty', 'sms_messages' => [] }
13
+ end
14
+ @messages = Twilio::REST::SMS::Messages.new('someUri',client)
15
+ end
16
+
17
+ it 'should warn of deprecation of SMS Messages Create' do
18
+ expect(@messages).to receive(:warn)
19
+ @messages.create to: "+1", from: "+2", body: "But Jenny!"
20
+ end
21
+
22
+ it 'should warn of deprecation of SMS Messages List' do
23
+ expect(@messages).to receive(:warn)
24
+ @messages.list to: "+1"
25
+ end
26
+
27
+ it 'should warn of deprecation of SMS Messages Get' do
28
+ expect(@messages).to receive(:warn)
29
+ @messages.get sid: "qwerty"
30
+ end
31
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twilio::REST::TaskRouter::Reservations do
4
+ it 'creates a reservation object' do
5
+ task = Twilio::REST::TaskRouter::Task.new('someUri', 'someClient')
6
+ expect(task).to respond_to(:reservations)
7
+ expect(task.reservations.instance_variable_get('@path')).to eq('someUri/Reservations')
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twilio::REST::TaskRouter::TaskQueues do
4
+ it 'creates a task queue object' do
5
+ workspace = Twilio::REST::TaskRouter::Workspace.new('someUri', 'someClient')
6
+ expect(workspace).to respond_to(:task_queues)
7
+ expect(workspace.task_queues.instance_variable_get('@path')).to eq('someUri/TaskQueues')
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Twilio::REST::Token do
4
+ before do
5
+ @token = Twilio::REST::Token.new('someUri', 'someClient')
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ class UtilClass
4
+ include Twilio::REST::Utils
5
+ end
6
+
7
+ describe UtilClass do
8
+ subject(:util) { UtilClass.new }
9
+
10
+ it 'should convert a parameter name to a Twilio-style name' do
11
+ expect(util.twilify('sms_url')).to eq('SmsUrl')
12
+ end
13
+
14
+ it 'should convert all parameter names to Twilio-style names' do
15
+ untwilified = {
16
+ :sms_url => 'someUrl',
17
+ 'voiceFallbackUrl' => 'anotherUrl',
18
+ 'Status_callback' => 'yetAnotherUrl'
19
+ }
20
+ twilified = {
21
+ :SmsUrl => 'someUrl',
22
+ :VoiceFallbackUrl => 'anotherUrl',
23
+ :StatusCallback => 'yetAnotherUrl'
24
+ }
25
+ expect(util.twilify(untwilified)).to eq(twilified)
26
+ end
27
+
28
+ it 'should convert a Twilio-style name to a parameter name' do
29
+ expect(util.detwilify('SmsUrl')).to eq('sms_url')
30
+ end
31
+
32
+ it 'should convert all Twilio-style names to parameter names' do
33
+ untwilified = {
34
+ :sms_url => 'someUrl',
35
+ :voice_fallback_url => 'anotherUrl',
36
+ :status_callback => 'yetAnotherUrl'
37
+ }
38
+ twilified = {
39
+ :SmsUrl => 'someUrl',
40
+ :VoiceFallbackUrl => 'anotherUrl',
41
+ :StatusCallback => 'yetAnotherUrl'
42
+ }
43
+ expect(util.detwilify(twilified)).to eq(untwilified)
44
+ end
45
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,15 @@
1
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+
3
+ require 'bundler'
4
+ Bundler.setup
5
+
6
+ Dir.glob(File.expand_path("../support/**/*.rb", __FILE__), &method(:require))
7
+
2
8
  require 'twilio-ruby'
3
- require 'fakeweb'
4
9
  require 'rack'
5
10
 
6
- FakeWeb.allow_net_connect = false
11
+ RSpec.configure do |config|
12
+ config.expect_with :rspec do |c|
13
+ c.syntax = :expect
14
+ end
15
+ end
@@ -0,0 +1,2 @@
1
+ require 'fakeweb'
2
+ FakeWeb.allow_net_connect = false