twilio-ruby 5.23.1 → 5.24.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +30 -0
  3. data/README.md +2 -2
  4. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +2 -2
  5. data/lib/twilio-ruby/rest/autopilot/v1/assistant.rb +26 -0
  6. data/lib/twilio-ruby/rest/autopilot/v1/assistant/webhook.rb +437 -0
  7. data/lib/twilio-ruby/rest/flex_api/v1/configuration.rb +7 -0
  8. data/lib/twilio-ruby/rest/insights/v1/summary.rb +7 -0
  9. data/lib/twilio-ruby/rest/preview/trusted_comms/current_call.rb +61 -5
  10. data/lib/twilio-ruby/rest/proxy/v1/service/session.rb +3 -19
  11. data/lib/twilio-ruby/rest/sync.rb +1 -1
  12. data/lib/twilio-ruby/rest/sync/v1.rb +1 -1
  13. data/lib/twilio-ruby/rest/sync/v1/service.rb +62 -6
  14. data/lib/twilio-ruby/rest/verify/v2/service.rb +26 -0
  15. data/lib/twilio-ruby/rest/verify/v2/service/rate_limit.rb +416 -0
  16. data/lib/twilio-ruby/rest/verify/v2/service/rate_limit/bucket.rb +424 -0
  17. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +6 -1
  18. data/lib/twilio-ruby/twiml/voice_response.rb +3 -3
  19. data/lib/twilio-ruby/version.rb +1 -1
  20. data/spec/integration/api/v2010/account/conference/participant_spec.rb +142 -15
  21. data/spec/integration/api/v2010/account/conference_spec.rb +190 -20
  22. data/spec/integration/api/v2010/account/message_spec.rb +125 -51
  23. data/spec/integration/autopilot/v1/assistant/webhook_spec.rb +246 -0
  24. data/spec/integration/autopilot/v1/assistant_spec.rb +8 -4
  25. data/spec/integration/flex_api/v1/configuration_spec.rb +48 -0
  26. data/spec/integration/insights/v1/summary_spec.rb +1 -0
  27. data/spec/integration/preview/trusted_comms/current_call_spec.rb +9 -1
  28. data/spec/integration/sync/v1/service_spec.rb +12 -4
  29. data/spec/integration/verify/v2/service/rate_limit/bucket_spec.rb +249 -0
  30. data/spec/integration/verify/v2/service/rate_limit_spec.rb +221 -0
  31. data/spec/integration/verify/v2/service/verification_spec.rb +36 -0
  32. data/spec/integration/verify/v2/service_spec.rb +8 -4
  33. metadata +11 -2
@@ -114,26 +114,27 @@ describe 'Message' do
114
114
  {
115
115
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
116
116
  "api_version": "2010-04-01",
117
- "body": "Hello! \ud83d\udc4d",
118
- "date_created": "Thu, 30 Jul 2015 20:12:31 +0000",
119
- "date_sent": "Thu, 30 Jul 2015 20:12:33 +0000",
120
- "date_updated": "Thu, 30 Jul 2015 20:12:33 +0000",
117
+ "body": "testing",
118
+ "date_created": "Fri, 24 May 2019 17:18:27 +0000",
119
+ "date_sent": "Fri, 24 May 2019 17:18:28 +0000",
120
+ "date_updated": "Fri, 24 May 2019 17:18:28 +0000",
121
121
  "direction": "outbound-api",
122
- "error_code": null,
123
- "error_message": null,
124
- "from": "+14155552345",
125
- "messaging_service_sid": "MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
122
+ "error_code": 30007,
123
+ "error_message": "Carrier violation",
124
+ "from": "+12019235161",
125
+ "messaging_service_sid": "MGdeadbeefdeadbeefdeadbeefdeadbeef",
126
126
  "num_media": "0",
127
127
  "num_segments": "1",
128
128
  "price": "-0.00750",
129
129
  "price_unit": "USD",
130
- "sid": "SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
130
+ "sid": "SMb7c0a2ce80504485a6f653a7110836f5",
131
131
  "status": "sent",
132
132
  "subresource_uris": {
133
- "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json"
133
+ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Media.json",
134
+ "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Feedback.json"
134
135
  },
135
- "to": "+14155552345",
136
- "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
136
+ "to": "+18182008801",
137
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5.json"
137
138
  }
138
139
  ]
139
140
  ))
@@ -160,43 +161,20 @@ describe 'Message' do
160
161
  ))).to eq(true)
161
162
  end
162
163
 
163
- it "receives read_full responses" do
164
+ it "receives read_empty_sentdate_less responses" do
164
165
  @holodeck.mock(Twilio::Response.new(
165
166
  200,
166
167
  %q[
167
168
  {
168
- "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?PageSize=1&Page=0",
169
- "messages": [
170
- {
171
- "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
172
- "api_version": "2010-04-01",
173
- "body": "Hello! \ud83d\udc4d",
174
- "date_created": "Fri, 04 Sep 2015 22:54:39 +0000",
175
- "date_sent": "Fri, 04 Sep 2015 22:54:41 +0000",
176
- "date_updated": "Fri, 04 Sep 2015 22:54:41 +0000",
177
- "direction": "outbound-api",
178
- "error_code": null,
179
- "error_message": null,
180
- "from": "+14155552345",
181
- "messaging_service_sid": "MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
182
- "num_media": "0",
183
- "num_segments": "1",
184
- "price": "-0.00750",
185
- "price_unit": "USD",
186
- "sid": "SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
187
- "status": "sent",
188
- "subresource_uris": {
189
- "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json"
190
- },
191
- "to": "+14155552345",
192
- "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
193
- }
194
- ],
169
+ "end": 0,
170
+ "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3C=2008-01-02&PageSize=25&Page=0",
195
171
  "next_page_uri": null,
196
172
  "page": 0,
197
- "page_size": 1,
173
+ "page_size": 25,
198
174
  "previous_page_uri": null,
199
- "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?PageSize=1&Page=0"
175
+ "messages": [],
176
+ "start": 0,
177
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3C=2008-01-02&PageSize=25&Page=0"
200
178
  }
201
179
  ]
202
180
  ))
@@ -207,23 +185,119 @@ describe 'Message' do
207
185
  expect(actual).to_not eq(nil)
208
186
  end
209
187
 
210
- it "receives read_empty responses" do
188
+ it "receives read_empty_sentdate_equals responses" do
211
189
  @holodeck.mock(Twilio::Response.new(
212
190
  200,
213
191
  %q[
214
192
  {
215
193
  "end": 0,
216
- "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?PageSize=1&Page=0",
217
- "last_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?PageSize=1&Page=119771",
194
+ "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent=2008-01-02&PageSize=25&Page=0",
195
+ "next_page_uri": null,
196
+ "page": 0,
197
+ "page_size": 25,
198
+ "previous_page_uri": null,
218
199
  "messages": [],
200
+ "start": 0,
201
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent=2008-01-02&PageSize=25&Page=0"
202
+ }
203
+ ]
204
+ ))
205
+
206
+ actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
207
+ .messages.list()
208
+
209
+ expect(actual).to_not eq(nil)
210
+ end
211
+
212
+ it "receives read_empty_sentdate_greater responses" do
213
+ @holodeck.mock(Twilio::Response.new(
214
+ 200,
215
+ %q[
216
+ {
217
+ "end": 0,
218
+ "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=25&Page=0",
219
219
  "next_page_uri": null,
220
- "num_pages": 119772,
221
220
  "page": 0,
222
- "page_size": 1,
221
+ "page_size": 25,
223
222
  "previous_page_uri": null,
223
+ "messages": [],
224
224
  "start": 0,
225
- "total": 119772,
226
- "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?PageSize=1&Page=0"
225
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=25&Page=0"
226
+ }
227
+ ]
228
+ ))
229
+
230
+ actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
231
+ .messages.list()
232
+
233
+ expect(actual).to_not eq(nil)
234
+ end
235
+
236
+ it "receives read_full_page1 responses" do
237
+ @holodeck.mock(Twilio::Response.new(
238
+ 200,
239
+ %q[
240
+ {
241
+ "end": 1,
242
+ "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0",
243
+ "next_page_uri": null,
244
+ "page": 0,
245
+ "page_size": 2,
246
+ "previous_page_uri": null,
247
+ "messages": [
248
+ {
249
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
250
+ "api_version": "2010-04-01",
251
+ "body": "testing",
252
+ "date_created": "Fri, 24 May 2019 17:44:46 +0000",
253
+ "date_sent": "Fri, 24 May 2019 17:44:50 +0000",
254
+ "date_updated": "Fri, 24 May 2019 17:44:50 +0000",
255
+ "direction": "outbound-api",
256
+ "error_code": null,
257
+ "error_message": null,
258
+ "from": "+12019235161",
259
+ "messaging_service_sid": null,
260
+ "num_media": "0",
261
+ "num_segments": "1",
262
+ "price": "-0.00750",
263
+ "price_unit": "USD",
264
+ "sid": "SMded05904ccb347238880ca9264e8fe1c",
265
+ "status": "sent",
266
+ "subresource_uris": {
267
+ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMded05904ccb347238880ca9264e8fe1c/Media.json",
268
+ "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMded05904ccb347238880ca9264e8fe1c/Feedback.json"
269
+ },
270
+ "to": "+18182008801",
271
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMded05904ccb347238880ca9264e8fe1c.json"
272
+ },
273
+ {
274
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
275
+ "api_version": "2010-04-01",
276
+ "body": "look mom I have media!",
277
+ "date_created": "Fri, 24 May 2019 17:44:46 +0000",
278
+ "date_sent": "Fri, 24 May 2019 17:44:49 +0000",
279
+ "date_updated": "Fri, 24 May 2019 17:44:49 +0000",
280
+ "direction": "inbound",
281
+ "error_code": 30004,
282
+ "error_message": "Message blocked",
283
+ "from": "+12019235161",
284
+ "messaging_service_sid": null,
285
+ "num_media": "3",
286
+ "num_segments": "1",
287
+ "price": "-0.00750",
288
+ "price_unit": "USD",
289
+ "sid": "MMc26223853f8c46b4ab7dfaa6abba0a26",
290
+ "status": "received",
291
+ "subresource_uris": {
292
+ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26/Media.json",
293
+ "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26/Feedback.json"
294
+ },
295
+ "to": "+18182008801",
296
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26.json"
297
+ }
298
+ ],
299
+ "start": 0,
300
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0"
227
301
  }
228
302
  ]
229
303
  ))
@@ -253,12 +327,12 @@ describe 'Message' do
253
327
 
254
328
  it "receives update responses" do
255
329
  @holodeck.mock(Twilio::Response.new(
256
- 200,
330
+ 202,
257
331
  %q[
258
332
  {
259
333
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
260
334
  "api_version": "2010-04-01",
261
- "body": "Hello! \ud83d\udc4d",
335
+ "body": "Hello, this is trash Benson cut and pasted and probably does not do anything useful! \ud83d\udc4d",
262
336
  "date_created": "Thu, 30 Jul 2015 20:12:31 +0000",
263
337
  "date_sent": "Thu, 30 Jul 2015 20:12:33 +0000",
264
338
  "date_updated": "Thu, 30 Jul 2015 20:12:33 +0000",
@@ -0,0 +1,246 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ require 'spec_helper.rb'
10
+
11
+ describe 'Webhook' do
12
+ it "can fetch" do
13
+ @holodeck.mock(Twilio::Response.new(500, ''))
14
+
15
+ expect {
16
+ @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
17
+ .webhooks('UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').fetch()
18
+ }.to raise_exception(Twilio::REST::TwilioError)
19
+
20
+ values = {}
21
+ expect(
22
+ @holodeck.has_request?(Holodeck::Request.new(
23
+ method: 'get',
24
+ url: 'https://autopilot.twilio.com/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Webhooks/UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
25
+ ))).to eq(true)
26
+ end
27
+
28
+ it "receives fetch responses" do
29
+ @holodeck.mock(Twilio::Response.new(
30
+ 200,
31
+ %q[
32
+ {
33
+ "url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks/UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
34
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
35
+ "sid": "UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
36
+ "date_updated": "2015-07-30T20:00:00Z",
37
+ "assistant_sid": "UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
38
+ "date_created": "2015-07-30T20:00:00Z",
39
+ "unique_name": "unique_name",
40
+ "events": "ondialogueend",
41
+ "webhook_url": "https://example.com/url",
42
+ "webhook_method": "POST"
43
+ }
44
+ ]
45
+ ))
46
+
47
+ actual = @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
48
+ .webhooks('UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').fetch()
49
+
50
+ expect(actual).to_not eq(nil)
51
+ end
52
+
53
+ it "can read" do
54
+ @holodeck.mock(Twilio::Response.new(500, ''))
55
+
56
+ expect {
57
+ @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
58
+ .webhooks.list()
59
+ }.to raise_exception(Twilio::REST::TwilioError)
60
+
61
+ values = {}
62
+ expect(
63
+ @holodeck.has_request?(Holodeck::Request.new(
64
+ method: 'get',
65
+ url: 'https://autopilot.twilio.com/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Webhooks',
66
+ ))).to eq(true)
67
+ end
68
+
69
+ it "receives read_empty responses" do
70
+ @holodeck.mock(Twilio::Response.new(
71
+ 200,
72
+ %q[
73
+ {
74
+ "meta": {
75
+ "key": "webhooks",
76
+ "page_size": 50,
77
+ "next_page_url": null,
78
+ "url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks?PageSize=50&Page=0",
79
+ "page": 0,
80
+ "first_page_url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks?PageSize=50&Page=0",
81
+ "previous_page_url": null
82
+ },
83
+ "webhooks": []
84
+ }
85
+ ]
86
+ ))
87
+
88
+ actual = @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
89
+ .webhooks.list()
90
+
91
+ expect(actual).to_not eq(nil)
92
+ end
93
+
94
+ it "receives read_full responses" do
95
+ @holodeck.mock(Twilio::Response.new(
96
+ 200,
97
+ %q[
98
+ {
99
+ "meta": {
100
+ "key": "webhooks",
101
+ "page_size": 50,
102
+ "next_page_url": null,
103
+ "url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks?PageSize=50&Page=0",
104
+ "page": 0,
105
+ "first_page_url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks?PageSize=50&Page=0",
106
+ "previous_page_url": null
107
+ },
108
+ "webhooks": [
109
+ {
110
+ "url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks/UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
111
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
112
+ "sid": "UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
113
+ "date_updated": "2015-07-30T20:00:00Z",
114
+ "assistant_sid": "UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
115
+ "date_created": "2015-07-30T20:00:00Z",
116
+ "unique_name": "unique_name",
117
+ "events": "ondialogueend",
118
+ "webhook_url": "https://example.com/url",
119
+ "webhook_method": "POST"
120
+ }
121
+ ]
122
+ }
123
+ ]
124
+ ))
125
+
126
+ actual = @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
127
+ .webhooks.list()
128
+
129
+ expect(actual).to_not eq(nil)
130
+ end
131
+
132
+ it "can create" do
133
+ @holodeck.mock(Twilio::Response.new(500, ''))
134
+
135
+ expect {
136
+ @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
137
+ .webhooks.create(unique_name: 'unique_name', events: 'events', webhook_url: 'https://example.com')
138
+ }.to raise_exception(Twilio::REST::TwilioError)
139
+
140
+ values = {
141
+ 'UniqueName' => 'unique_name',
142
+ 'Events' => 'events',
143
+ 'WebhookUrl' => 'https://example.com',
144
+ }
145
+ expect(
146
+ @holodeck.has_request?(Holodeck::Request.new(
147
+ method: 'post',
148
+ url: 'https://autopilot.twilio.com/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Webhooks',
149
+ data: values,
150
+ ))).to eq(true)
151
+ end
152
+
153
+ it "receives create responses" do
154
+ @holodeck.mock(Twilio::Response.new(
155
+ 201,
156
+ %q[
157
+ {
158
+ "url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks/UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
159
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
160
+ "sid": "UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
161
+ "date_updated": "2015-07-30T20:00:00Z",
162
+ "assistant_sid": "UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
163
+ "date_created": "2015-07-30T20:00:00Z",
164
+ "unique_name": "unique_name",
165
+ "events": "ondialogueend",
166
+ "webhook_url": "https://example.com/url",
167
+ "webhook_method": "POST"
168
+ }
169
+ ]
170
+ ))
171
+
172
+ actual = @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
173
+ .webhooks.create(unique_name: 'unique_name', events: 'events', webhook_url: 'https://example.com')
174
+
175
+ expect(actual).to_not eq(nil)
176
+ end
177
+
178
+ it "can update" do
179
+ @holodeck.mock(Twilio::Response.new(500, ''))
180
+
181
+ expect {
182
+ @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
183
+ .webhooks('UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').update()
184
+ }.to raise_exception(Twilio::REST::TwilioError)
185
+
186
+ values = {}
187
+ expect(
188
+ @holodeck.has_request?(Holodeck::Request.new(
189
+ method: 'post',
190
+ url: 'https://autopilot.twilio.com/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Webhooks/UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
191
+ ))).to eq(true)
192
+ end
193
+
194
+ it "receives update responses" do
195
+ @holodeck.mock(Twilio::Response.new(
196
+ 200,
197
+ %q[
198
+ {
199
+ "url": "https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Webhooks/UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
200
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
201
+ "sid": "UMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
202
+ "date_updated": "2015-07-30T20:00:00Z",
203
+ "assistant_sid": "UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
204
+ "date_created": "2015-07-30T20:00:00Z",
205
+ "unique_name": "unique_name",
206
+ "events": "ondialogueend",
207
+ "webhook_url": "https://example.com/url",
208
+ "webhook_method": "POST"
209
+ }
210
+ ]
211
+ ))
212
+
213
+ actual = @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
214
+ .webhooks('UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').update()
215
+
216
+ expect(actual).to_not eq(nil)
217
+ end
218
+
219
+ it "can delete" do
220
+ @holodeck.mock(Twilio::Response.new(500, ''))
221
+
222
+ expect {
223
+ @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
224
+ .webhooks('UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete()
225
+ }.to raise_exception(Twilio::REST::TwilioError)
226
+
227
+ values = {}
228
+ expect(
229
+ @holodeck.has_request?(Holodeck::Request.new(
230
+ method: 'delete',
231
+ url: 'https://autopilot.twilio.com/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Webhooks/UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
232
+ ))).to eq(true)
233
+ end
234
+
235
+ it "receives delete responses" do
236
+ @holodeck.mock(Twilio::Response.new(
237
+ 204,
238
+ nil,
239
+ ))
240
+
241
+ actual = @client.autopilot.v1.assistants('UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
242
+ .webhooks('UMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete()
243
+
244
+ expect(actual).to eq(true)
245
+ end
246
+ end