twilio-ruby 5.0.0.rc22 → 5.0.0.rc23

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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +10 -0
  3. data/lib/twilio-ruby/jwt/client_capability.rb +17 -8
  4. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +15 -3
  5. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +15 -3
  6. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +15 -3
  7. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +10 -2
  8. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +15 -3
  9. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +15 -3
  10. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +15 -3
  11. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +15 -3
  12. data/lib/twilio-ruby/rest/fax/v1/fax.rb +61 -28
  13. data/lib/twilio-ruby/rest/fax/v1/fax/fax_media.rb +11 -6
  14. data/lib/twilio-ruby/rest/notify/v1/service.rb +28 -3
  15. data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +8 -1
  16. data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +1 -4
  17. data/lib/twilio-ruby/twiml/voice_response.rb +5 -20
  18. data/lib/twilio-ruby/version.rb +1 -1
  19. data/spec/integration/api/v2010/account/available_phone_number/local_spec.rb +1 -0
  20. data/spec/integration/api/v2010/account/available_phone_number/mobile_spec.rb +1 -0
  21. data/spec/integration/api/v2010/account/available_phone_number/toll_free_spec.rb +1 -0
  22. data/spec/integration/api/v2010/account/incoming_phone_number/local_spec.rb +2 -0
  23. data/spec/integration/api/v2010/account/incoming_phone_number/mobile_spec.rb +2 -0
  24. data/spec/integration/api/v2010/account/incoming_phone_number/toll_free_spec.rb +2 -0
  25. data/spec/integration/api/v2010/account/incoming_phone_number_spec.rb +4 -0
  26. data/spec/integration/notify/v1/service/notification_spec.rb +2 -1
  27. data/spec/integration/notify/v1/service/user/user_binding_spec.rb +34 -0
  28. data/spec/integration/notify/v1/service_spec.rb +8 -0
  29. data/spec/integration/preview/hosted_numbers/hosted_number_order_spec.rb +2 -3
  30. data/spec/integration/taskrouter/v1/workspace/worker_spec.rb +57 -41
  31. data/spec/integration/taskrouter/v1/workspace_spec.rb +38 -30
  32. data/spec/jwt/client_capability_spec.rb +9 -9
  33. data/spec/twiml/voice_response_spec.rb +5 -5
  34. metadata +2 -2
@@ -28,22 +28,24 @@ describe 'Workspace' do
28
28
  %q[
29
29
  {
30
30
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
31
- "date_created": "2015-08-03T17:31:38Z",
32
- "date_updated": "2015-08-03T17:31:38Z",
31
+ "date_created": "2016-08-01T22:10:40Z",
32
+ "date_updated": "2016-08-01T22:10:40Z",
33
33
  "default_activity_name": "Offline",
34
34
  "default_activity_sid": "WAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
35
35
  "event_callback_url": "",
36
- "events_filter": "",
37
- "friendly_name": "8064de33-3a05-11e5-8bae-98e0d9a1eb73",
36
+ "events_filter": null,
37
+ "friendly_name": "new",
38
38
  "links": {
39
39
  "activities": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Activities",
40
40
  "statistics": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Statistics",
41
41
  "task_queues": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskQueues",
42
42
  "tasks": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Tasks",
43
43
  "workers": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workers",
44
- "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows"
44
+ "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows",
45
+ "task_channels": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskChannels",
46
+ "events": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events"
45
47
  },
46
- "multi_task_enabled": "false",
48
+ "multi_task_enabled": false,
47
49
  "prioritize_queue_order": "FIFO",
48
50
  "sid": "WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
49
51
  "timeout_activity_name": "Offline",
@@ -79,22 +81,24 @@ describe 'Workspace' do
79
81
  %q[
80
82
  {
81
83
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
82
- "date_created": "2015-08-03T17:31:38Z",
83
- "date_updated": "2015-08-03T17:31:38Z",
84
+ "date_created": "2016-08-01T22:10:40Z",
85
+ "date_updated": "2016-08-01T22:10:40Z",
84
86
  "default_activity_name": "Offline",
85
87
  "default_activity_sid": "WAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
86
88
  "event_callback_url": "",
87
- "events_filter": "",
88
- "friendly_name": "8064de33-3a05-11e5-8bae-98e0d9a1eb73",
89
+ "events_filter": null,
90
+ "friendly_name": "new",
89
91
  "links": {
90
92
  "activities": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Activities",
91
93
  "statistics": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Statistics",
92
94
  "task_queues": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskQueues",
93
95
  "tasks": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Tasks",
94
96
  "workers": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workers",
95
- "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows"
97
+ "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows",
98
+ "task_channels": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskChannels",
99
+ "events": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events"
96
100
  },
97
- "multi_task_enabled": "false",
101
+ "multi_task_enabled": false,
98
102
  "prioritize_queue_order": "FIFO",
99
103
  "sid": "WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
100
104
  "timeout_activity_name": "Offline",
@@ -130,33 +134,35 @@ describe 'Workspace' do
130
134
  %q[
131
135
  {
132
136
  "meta": {
133
- "first_page_url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=1&Page=0",
137
+ "first_page_url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=50&Page=0",
134
138
  "key": "workspaces",
135
139
  "next_page_url": null,
136
140
  "page": 0,
137
- "page_size": 1,
141
+ "page_size": 50,
138
142
  "previous_page_url": null,
139
- "url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=1&Page=0"
143
+ "url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=50&Page=0"
140
144
  },
141
145
  "workspaces": [
142
146
  {
143
147
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
144
- "date_created": "2015-05-27T00:48:50Z",
145
- "date_updated": "2015-05-27T00:48:50Z",
148
+ "date_created": "2016-08-01T22:10:40Z",
149
+ "date_updated": "2016-08-01T22:10:40Z",
146
150
  "default_activity_name": "Offline",
147
151
  "default_activity_sid": "WAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
148
152
  "event_callback_url": "",
149
- "events_filter": "",
150
- "friendly_name": "cce151db-4644-4d48-95a1-d962829b69f0",
153
+ "events_filter": null,
154
+ "friendly_name": "new",
151
155
  "links": {
152
156
  "activities": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Activities",
153
157
  "statistics": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Statistics",
154
158
  "task_queues": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskQueues",
155
159
  "tasks": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Tasks",
156
160
  "workers": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workers",
157
- "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows"
161
+ "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows",
162
+ "task_channels": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskChannels",
163
+ "events": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events"
158
164
  },
159
- "multi_task_enabled": "false",
165
+ "multi_task_enabled": false,
160
166
  "prioritize_queue_order": "FIFO",
161
167
  "sid": "WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
162
168
  "timeout_activity_name": "Offline",
@@ -179,13 +185,13 @@ describe 'Workspace' do
179
185
  %q[
180
186
  {
181
187
  "meta": {
182
- "first_page_url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=1&Page=0",
188
+ "first_page_url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=50&Page=0",
183
189
  "key": "workspaces",
184
190
  "next_page_url": null,
185
191
  "page": 0,
186
- "page_size": 1,
192
+ "page_size": 50,
187
193
  "previous_page_url": null,
188
- "url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=1&Page=0"
194
+ "url": "https://taskrouter.twilio.com/v1/Workspaces?PageSize=50&Page=0"
189
195
  },
190
196
  "workspaces": []
191
197
  }
@@ -221,22 +227,24 @@ describe 'Workspace' do
221
227
  %q[
222
228
  {
223
229
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
224
- "date_created": "2015-08-03T17:31:38Z",
225
- "date_updated": "2015-08-03T17:31:38Z",
230
+ "date_created": "2016-08-01T22:10:40Z",
231
+ "date_updated": "2016-08-01T22:10:40Z",
226
232
  "default_activity_name": "Offline",
227
233
  "default_activity_sid": "WAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
228
234
  "event_callback_url": "",
229
- "events_filter": "",
230
- "friendly_name": "8064de33-3a05-11e5-8bae-98e0d9a1eb73",
235
+ "events_filter": null,
236
+ "friendly_name": "new",
231
237
  "links": {
232
238
  "activities": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Activities",
233
239
  "statistics": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Statistics",
234
240
  "task_queues": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskQueues",
235
241
  "tasks": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Tasks",
236
242
  "workers": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workers",
237
- "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows"
243
+ "workflows": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows",
244
+ "task_channels": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/TaskChannels",
245
+ "events": "https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events"
238
246
  },
239
- "multi_task_enabled": "false",
247
+ "multi_task_enabled": false,
240
248
  "prioritize_queue_order": "FIFO",
241
249
  "sid": "WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
242
250
  "timeout_activity_name": "Offline",
@@ -23,42 +23,42 @@ describe Twilio::JWT::ClientCapability do
23
23
  it 'OutgoingClientScope sans params, client name' do
24
24
  @outgoingScope = Twilio::JWT::OutgoingClientScope.new('test-application-sid')
25
25
  @clientCapability.add_scope(@outgoingScope)
26
- escope = 'scope:client:outgoing?appSid%3Dtest-application-sid'
26
+ escope = 'scope:client:outgoing?appSid=test-application-sid'
27
27
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
28
28
  end
29
29
 
30
30
  it 'OutgoingClientScope with client-name' do
31
31
  @outgoingScope = Twilio::JWT::OutgoingClientScope.new('test-application-sid', 'test-client-name')
32
32
  @clientCapability.add_scope(@outgoingScope)
33
- escope = 'scope:client:outgoing?appSid%3Dtest-application-sid%26clientName%3Dtest-client-name'
33
+ escope = 'scope:client:outgoing?appSid=test-application-sid&clientName=test-client-name'
34
34
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
35
35
  end
36
36
 
37
37
  it 'OutgoingClientScope with params' do
38
38
  @outgoingScope = Twilio::JWT::OutgoingClientScope.new('test-application-sid', nil, {'params_key'=>'param_value'})
39
39
  @clientCapability.add_scope(@outgoingScope)
40
- escope = 'scope:client:outgoing?appSid%3Dtest-application-sid%26appParams%3Dparams_key%3Dparam_value'
40
+ escope = 'scope:client:outgoing?appSid=test-application-sid&appParams=params_key%3Dparam_value'
41
41
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
42
42
  end
43
43
 
44
44
  it 'IncomingClientScope' do
45
45
  @incomingScope = Twilio::JWT::IncomingClientScope.new('test-client-name')
46
46
  @clientCapability.add_scope(@incomingScope)
47
- escope = 'scope:client:incoming?clientName%3Dtest-client-name'
47
+ escope = 'scope:client:incoming?clientName=test-client-name'
48
48
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
49
49
  end
50
50
 
51
51
  it 'EventStreamScope sans filters' do
52
52
  @eventStreamScope = Twilio::JWT::EventStreamScope.new
53
53
  @clientCapability.add_scope(@eventStreamScope)
54
- escope = 'scope:stream:subscribe?path%3D%2F2010-04-01%2FEvents'
54
+ escope = 'scope:stream:subscribe?path=%2F2010-04-01%2FEvents'
55
55
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
56
56
  end
57
57
 
58
58
  it 'EventStreamScope with filters' do
59
59
  @eventStreamScope = Twilio::JWT::EventStreamScope.new({'param_key'=>'param_value'})
60
60
  @clientCapability.add_scope(@eventStreamScope)
61
- escope = 'scope:stream:subscribe?param_key%3Dparam_value%26path%3D%2F2010-04-01%2FEvents'
61
+ escope = 'scope:stream:subscribe?path=%2F2010-04-01%2FEvents&params=param_key%3Dparam_value'
62
62
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
63
63
  end
64
64
 
@@ -67,7 +67,7 @@ describe Twilio::JWT::ClientCapability do
67
67
  @clientCapability.add_scope(@outgoingScope)
68
68
  @incomingScope = Twilio::JWT::IncomingClientScope.new('test-client-name')
69
69
  @clientCapability.add_scope(@incomingScope)
70
- escope = 'scope:client:outgoing?appSid%3Dtest-application-sid scope:client:incoming?clientName%3Dtest-client-name'
70
+ escope = 'scope:client:outgoing?appSid=test-application-sid scope:client:incoming?clientName=test-client-name'
71
71
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
72
72
  end
73
73
 
@@ -75,7 +75,7 @@ describe Twilio::JWT::ClientCapability do
75
75
  @incomingScope = Twilio::JWT::IncomingClientScope.new('test-client-name')
76
76
  @clientCapability.add_scope(@incomingScope)
77
77
  payload, _ = ::JWT.decode @clientCapability.to_s, 'authToken', true, {:algorithm=>'HS256'}
78
- escope = 'scope:client:incoming?clientName%3Dtest-client-name'
78
+ escope = 'scope:client:incoming?clientName=test-client-name'
79
79
  expect(payload['iss']).to eq('accountSid')
80
80
  expect(payload['scope']).to eq(escope)
81
81
  expect(payload['exp']).to be > Time.now.to_i
@@ -87,7 +87,7 @@ describe Twilio::JWT::ClientCapability do
87
87
  it 'Valid scopes in constructor' do
88
88
  @incomingScope = Twilio::JWT::IncomingClientScope.new('test-client-name')
89
89
  @clientCapability = Twilio::JWT::ClientCapability.new 'accountSid', 'authToken', scopes: [@incomingScope]
90
- escope = 'scope:client:incoming?clientName%3Dtest-client-name'
90
+ escope = 'scope:client:incoming?clientName=test-client-name'
91
91
  expect(@clientCapability.__send__(:_generate_payload)[:scope]).to eq(escope)
92
92
  end
93
93
  end
@@ -77,7 +77,7 @@ describe Twilio::TwiML::VoiceResponse do
77
77
  context 'Testing Play' do
78
78
  it 'should allow empty play' do
79
79
  r = Twilio::TwiML::VoiceResponse.new
80
- r.play ''
80
+ r.play
81
81
 
82
82
  # For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
83
83
  # Ruby 2.4 generates an empty tag
@@ -87,21 +87,21 @@ describe Twilio::TwiML::VoiceResponse do
87
87
 
88
88
  it 'should play hello' do
89
89
  r = Twilio::TwiML::VoiceResponse.new
90
- r.play 'http://hellomonkey.mp3'
90
+ r.play(url: 'http://hellomonkey.mp3')
91
91
 
92
92
  expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Play>http://hellomonkey.mp3</Play></Response>')
93
93
  end
94
94
 
95
95
  it 'should play hello on loop' do
96
96
  r = Twilio::TwiML::VoiceResponse.new
97
- r.play 'http://hellomonkey.mp3', loop: 3
97
+ r.play(url: 'http://hellomonkey.mp3', loop: 3)
98
98
 
99
99
  expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Play loop="3">http://hellomonkey.mp3</Play></Response>')
100
100
  end
101
101
 
102
102
  it 'should play digits' do
103
103
  r = Twilio::TwiML::VoiceResponse.new
104
- r.play '', digits: 'w123'
104
+ r.play(digits: 'w123')
105
105
 
106
106
  # For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
107
107
  # Ruby 2.4 generates an empty tag
@@ -440,7 +440,7 @@ describe Twilio::TwiML::VoiceResponse do
440
440
  it 'should allow nested play and pause' do
441
441
  g = Twilio::TwiML::Gather.new
442
442
  g.say 'Hey'
443
- g.play 'hey.mp3'
443
+ g.play(url: 'hey.mp3')
444
444
  g.pause
445
445
 
446
446
  r = Twilio::TwiML::VoiceResponse.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilio-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.rc22
4
+ version: 5.0.0.rc23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Benton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-15 00:00:00.000000000 Z
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libxml-ruby