twilio-ruby 5.0.0.rc21 → 5.0.0.rc22

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 (238) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +3 -0
  3. data/lib/twilio-ruby.rb +7 -3
  4. data/lib/twilio-ruby/framework/domain.rb +5 -1
  5. data/lib/twilio-ruby/framework/page.rb +4 -4
  6. data/lib/twilio-ruby/framework/serialize.rb +3 -2
  7. data/lib/twilio-ruby/framework/values.rb +7 -0
  8. data/lib/twilio-ruby/framework/version.rb +4 -6
  9. data/lib/twilio-ruby/jwt/access_token.rb +160 -134
  10. data/lib/twilio-ruby/jwt/client_capability.rb +98 -0
  11. data/lib/twilio-ruby/jwt/jwt.rb +56 -0
  12. data/lib/twilio-ruby/jwt/task_router.rb +108 -139
  13. data/lib/twilio-ruby/rest/accounts.rb +1 -1
  14. data/lib/twilio-ruby/rest/accounts/v1/credential.rb +1 -1
  15. data/lib/twilio-ruby/rest/accounts/v1/credential/public_key.rb +30 -17
  16. data/lib/twilio-ruby/rest/api.rb +2 -2
  17. data/lib/twilio-ruby/rest/api/v2010/account.rb +31 -18
  18. data/lib/twilio-ruby/rest/api/v2010/account/address.rb +32 -19
  19. data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +18 -5
  20. data/lib/twilio-ruby/rest/api/v2010/account/application.rb +32 -19
  21. data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +20 -7
  22. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +20 -7
  23. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +20 -7
  24. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +20 -7
  25. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +20 -7
  26. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +33 -20
  27. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +13 -13
  28. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +8 -8
  29. data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +23 -10
  30. data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +23 -10
  31. data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +27 -14
  32. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +32 -19
  33. data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +25 -12
  34. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +32 -19
  35. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on.rb +24 -11
  36. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on/assigned_add_on_extension.rb +20 -7
  37. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +24 -11
  38. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +24 -11
  39. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +24 -11
  40. data/lib/twilio-ruby/rest/api/v2010/account/key.rb +26 -13
  41. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +30 -17
  42. data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +5 -5
  43. data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +23 -10
  44. data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +5 -5
  45. data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +5 -5
  46. data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +23 -10
  47. data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +28 -15
  48. data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +30 -17
  49. data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +23 -10
  50. data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +23 -10
  51. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +21 -8
  52. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +21 -8
  53. data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +21 -8
  54. data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +27 -14
  55. data/lib/twilio-ruby/rest/api/v2010/account/signing_key.rb +26 -13
  56. data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +1 -1
  57. data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +27 -14
  58. data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list/credential.rb +29 -16
  59. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +30 -17
  60. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +24 -11
  61. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +24 -11
  62. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +27 -14
  63. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +29 -16
  64. data/lib/twilio-ruby/rest/api/v2010/account/token.rb +5 -5
  65. data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +21 -8
  66. data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +1 -1
  67. data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +20 -7
  68. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +20 -7
  69. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +20 -7
  70. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +20 -7
  71. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +20 -7
  72. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +20 -7
  73. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +20 -7
  74. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +20 -7
  75. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +20 -7
  76. data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +32 -19
  77. data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +5 -5
  78. data/lib/twilio-ruby/rest/chat.rb +4 -4
  79. data/lib/twilio-ruby/rest/chat/v1/credential.rb +30 -17
  80. data/lib/twilio-ruby/rest/chat/v1/service.rb +29 -16
  81. data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +32 -19
  82. data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +27 -14
  83. data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +32 -19
  84. data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +32 -19
  85. data/lib/twilio-ruby/rest/chat/v1/service/role.rb +27 -14
  86. data/lib/twilio-ruby/rest/chat/v1/service/user.rb +30 -17
  87. data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +18 -5
  88. data/lib/twilio-ruby/rest/chat/v2/credential.rb +30 -17
  89. data/lib/twilio-ruby/rest/chat/v2/service.rb +29 -16
  90. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +32 -19
  91. data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +27 -14
  92. data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +32 -19
  93. data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +32 -19
  94. data/lib/twilio-ruby/rest/chat/v2/service/role.rb +27 -14
  95. data/lib/twilio-ruby/rest/chat/v2/service/user.rb +30 -17
  96. data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +18 -5
  97. data/lib/twilio-ruby/rest/fax.rb +2 -2
  98. data/lib/twilio-ruby/rest/fax/v1/fax.rb +32 -19
  99. data/lib/twilio-ruby/rest/fax/v1/fax/fax_media.rb +21 -8
  100. data/lib/twilio-ruby/rest/ip_messaging.rb +4 -4
  101. data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +30 -17
  102. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +29 -16
  103. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +32 -19
  104. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +27 -14
  105. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +32 -19
  106. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +32 -19
  107. data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +27 -14
  108. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +30 -17
  109. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +18 -5
  110. data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +30 -17
  111. data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +29 -16
  112. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +32 -19
  113. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +27 -14
  114. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +32 -19
  115. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +32 -19
  116. data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +27 -14
  117. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +30 -17
  118. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +18 -5
  119. data/lib/twilio-ruby/rest/lookups.rb +2 -2
  120. data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +6 -6
  121. data/lib/twilio-ruby/rest/messaging.rb +2 -2
  122. data/lib/twilio-ruby/rest/messaging/v1/service.rb +30 -17
  123. data/lib/twilio-ruby/rest/messaging/v1/service/alpha_sender.rb +24 -11
  124. data/lib/twilio-ruby/rest/messaging/v1/service/phone_number.rb +24 -11
  125. data/lib/twilio-ruby/rest/messaging/v1/service/short_code.rb +24 -11
  126. data/lib/twilio-ruby/rest/monitor.rb +4 -4
  127. data/lib/twilio-ruby/rest/monitor/v1/alert.rb +23 -10
  128. data/lib/twilio-ruby/rest/monitor/v1/event.rb +22 -9
  129. data/lib/twilio-ruby/rest/notify.rb +4 -4
  130. data/lib/twilio-ruby/rest/notify/v1/credential.rb +30 -17
  131. data/lib/twilio-ruby/rest/notify/v1/service.rb +32 -19
  132. data/lib/twilio-ruby/rest/notify/v1/service/binding.rb +27 -14
  133. data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +5 -5
  134. data/lib/twilio-ruby/rest/notify/v1/service/segment.rb +18 -5
  135. data/lib/twilio-ruby/rest/notify/v1/service/user.rb +27 -14
  136. data/lib/twilio-ruby/rest/notify/v1/service/user/segment_memberships.rb +7 -7
  137. data/lib/twilio-ruby/rest/notify/v1/service/user/user_binding.rb +27 -14
  138. data/lib/twilio-ruby/rest/preview.rb +18 -18
  139. data/lib/twilio-ruby/rest/preview/bulk_exports/export.rb +3 -3
  140. data/lib/twilio-ruby/rest/preview/bulk_exports/export/day.rb +18 -5
  141. data/lib/twilio-ruby/rest/preview/bulk_exports/export_configuration.rb +8 -8
  142. data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +32 -19
  143. data/lib/twilio-ruby/rest/preview/marketplace/available_add_on.rb +20 -7
  144. data/lib/twilio-ruby/rest/preview/marketplace/available_add_on/available_add_on_extension.rb +20 -7
  145. data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on.rb +30 -17
  146. data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on/installed_add_on_extension.rb +23 -10
  147. data/lib/twilio-ruby/rest/preview/proxy/service.rb +30 -17
  148. data/lib/twilio-ruby/rest/preview/proxy/service/phone_number.rb +24 -11
  149. data/lib/twilio-ruby/rest/preview/proxy/service/session.rb +32 -19
  150. data/lib/twilio-ruby/rest/preview/proxy/service/session/interaction.rb +22 -9
  151. data/lib/twilio-ruby/rest/preview/proxy/service/session/participant.rb +32 -19
  152. data/lib/twilio-ruby/rest/preview/proxy/service/session/participant/message_interaction.rb +24 -11
  153. data/lib/twilio-ruby/rest/preview/proxy/service/short_code.rb +24 -11
  154. data/lib/twilio-ruby/rest/preview/sync/service.rb +30 -17
  155. data/lib/twilio-ruby/rest/preview/sync/service/document.rb +28 -15
  156. data/lib/twilio-ruby/rest/preview/sync/service/document/document_permission.rb +24 -11
  157. data/lib/twilio-ruby/rest/preview/sync/service/sync_list.rb +25 -12
  158. data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_item.rb +29 -16
  159. data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_permission.rb +24 -11
  160. data/lib/twilio-ruby/rest/preview/sync/service/sync_map.rb +25 -12
  161. data/lib/twilio-ruby/rest/preview/sync/service/sync_map/sync_map_item.rb +29 -16
  162. data/lib/twilio-ruby/rest/preview/sync/service/sync_map/sync_map_permission.rb +24 -11
  163. data/lib/twilio-ruby/rest/preview/wireless/command.rb +26 -13
  164. data/lib/twilio-ruby/rest/preview/wireless/rate_plan.rb +30 -17
  165. data/lib/twilio-ruby/rest/preview/wireless/sim.rb +28 -15
  166. data/lib/twilio-ruby/rest/preview/wireless/sim/usage.rb +6 -6
  167. data/lib/twilio-ruby/rest/pricing.rb +3 -3
  168. data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +1 -1
  169. data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +20 -7
  170. data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +1 -1
  171. data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +20 -7
  172. data/lib/twilio-ruby/rest/pricing/v1/voice.rb +1 -1
  173. data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +20 -7
  174. data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +3 -3
  175. data/lib/twilio-ruby/rest/sync.rb +2 -2
  176. data/lib/twilio-ruby/rest/sync/v1/service.rb +30 -17
  177. data/lib/twilio-ruby/rest/sync/v1/service/document.rb +28 -15
  178. data/lib/twilio-ruby/rest/sync/v1/service/document/document_permission.rb +24 -11
  179. data/lib/twilio-ruby/rest/sync/v1/service/sync_list.rb +25 -12
  180. data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_item.rb +29 -16
  181. data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_permission.rb +24 -11
  182. data/lib/twilio-ruby/rest/sync/v1/service/sync_map.rb +25 -12
  183. data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_item.rb +29 -16
  184. data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_permission.rb +24 -11
  185. data/lib/twilio-ruby/rest/taskrouter.rb +2 -2
  186. data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +33 -20
  187. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +32 -19
  188. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +22 -9
  189. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +32 -19
  190. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +27 -14
  191. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +20 -7
  192. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +33 -20
  193. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +6 -6
  194. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +20 -7
  195. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +33 -20
  196. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +27 -14
  197. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +25 -12
  198. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +6 -6
  199. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +6 -6
  200. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +33 -20
  201. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +6 -6
  202. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +6 -6
  203. data/lib/twilio-ruby/rest/trunking.rb +2 -2
  204. data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +30 -17
  205. data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +24 -11
  206. data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +24 -11
  207. data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +29 -16
  208. data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +24 -11
  209. data/lib/twilio-ruby/rest/video.rb +4 -4
  210. data/lib/twilio-ruby/rest/video/v1/recording.rb +23 -10
  211. data/lib/twilio-ruby/rest/video/v1/room.rb +29 -16
  212. data/lib/twilio-ruby/rest/video/v1/room/recording.rb +20 -7
  213. data/lib/twilio-ruby/rest/wireless.rb +6 -6
  214. data/lib/twilio-ruby/rest/wireless/v1/command.rb +26 -13
  215. data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +30 -17
  216. data/lib/twilio-ruby/rest/wireless/v1/sim.rb +27 -14
  217. data/lib/twilio-ruby/rest/wireless/v1/sim/usage_record.rb +20 -7
  218. data/lib/twilio-ruby/twiml/messaging_response.rb +147 -0
  219. data/lib/twilio-ruby/twiml/twiml.rb +77 -0
  220. data/lib/twilio-ruby/twiml/voice_response.rb +925 -0
  221. data/lib/twilio-ruby/version.rb +1 -1
  222. data/spec/holodeck/hologram.rb +0 -1
  223. data/spec/jwt/access_token_spec.rb +126 -182
  224. data/spec/jwt/client_capability_spec.rb +104 -0
  225. data/spec/jwt/task_router_spec.rb +164 -97
  226. data/spec/twiml/messaging_response_spec.rb +62 -0
  227. data/spec/twiml/voice_response_spec.rb +452 -0
  228. data/twilio-ruby.gemspec +4 -2
  229. metadata +36 -23
  230. data/lib/twilio-ruby/compatibility/v2010/account/call/feedback.rb +0 -15
  231. data/lib/twilio-ruby/compatibility/v2010/account/queue/member.rb +0 -23
  232. data/lib/twilio-ruby/jwt/capability.rb +0 -64
  233. data/lib/twilio-ruby/twiml/response.rb +0 -16
  234. data/spec/jwt/capability_spec.rb +0 -186
  235. data/spec/jwt/task_router_taskqueue_spec.rb +0 -111
  236. data/spec/jwt/task_router_worker_spec.rb +0 -146
  237. data/spec/jwt/task_router_workspace_spec.rb +0 -110
  238. data/spec/twiml/twiml_response_spec.rb +0 -47
@@ -1,111 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Twilio::JWT::TaskQueueCapability do
4
- describe 'with a capability' do
5
- before :each do
6
- @capability = Twilio::JWT::TaskQueueCapability.new 'AC123', 'foobar', 'WS456', 'WQ789'
7
- end
8
-
9
- it 'should return a valid jwt when #generate_token is called' do
10
- token = @capability.generate_token
11
- decoded, header = JWT.decode token, 'foobar'
12
- expect(decoded['policies']).not_to be_nil
13
- expect(decoded['iss']).not_to be_nil
14
- expect(decoded['exp']).not_to be_nil
15
- expect(decoded['account_sid']).to eq('AC123')
16
- expect(decoded['workspace_sid']).to eq('WS456')
17
- expect(decoded['taskqueue_sid']).to eq('WQ789')
18
- expect(decoded['channel']).to eq('WQ789')
19
- end
20
-
21
- it 'should properly set the iss key in the payload' do
22
- token = @capability.generate_token
23
- decoded, header = JWT.decode token, 'foobar'
24
- expect(decoded['iss']).to eq('AC123')
25
- end
26
-
27
- it 'should properly set exp based on the default 1-hour ttl' do
28
- seconds = Time.now.to_i
29
- token = @capability.generate_token
30
- decoded, header = JWT.decode token, 'foobar'
31
- expect(decoded['exp']).to eq(seconds + 3600)
32
- end
33
-
34
- it 'should properly set exp based on the ttl arg to #generate_token' do
35
- seconds = Time.now.to_i
36
- ttl = rand 10000
37
- token = @capability.generate_token ttl
38
- decoded, header = JWT.decode token, 'foobar'
39
- expect(decoded['exp']).to eq(seconds + ttl)
40
- end
41
-
42
- it 'should allow websocket operations and fetching the workspace by default' do
43
- token = @capability.generate_token
44
- decoded, header = JWT.decode token, 'foobar'
45
- expect(decoded['policies'].size).to eq(3)
46
- get_policy = {
47
- "url" => 'https://event-bridge.twilio.com/v1/wschannels/AC123/WQ789',
48
- "method" => 'GET',
49
- "query_filter" => {},
50
- "post_filter" => {},
51
- "allow" => true
52
- }
53
- expect(decoded['policies'][0]).to eq(get_policy)
54
- post_policy = {
55
- "url" => 'https://event-bridge.twilio.com/v1/wschannels/AC123/WQ789',
56
- "method" => 'POST',
57
- "query_filter" => {},
58
- "post_filter" => {},
59
- "allow" => true
60
- }
61
- expect(decoded['policies'][1]).to eq(post_policy)
62
-
63
- taskqueue_fetch_policy = {
64
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/TaskQueues/WQ789',
65
- 'method' => 'GET',
66
- 'query_filter' => {},
67
- 'post_filter' => {},
68
- 'allow' => true
69
- }
70
- expect(decoded['policies'][2]).to eq(taskqueue_fetch_policy)
71
- end
72
-
73
- it 'should add a policy when #allow_fetch_subresources is called' do
74
- token = @capability.generate_token
75
- decoded, header = JWT.decode token, 'foobar'
76
- policies_size = decoded['policies'].size
77
-
78
- @capability.allow_fetch_subresources
79
- token = @capability.generate_token
80
- decoded, header = JWT.decode token, 'foobar'
81
- taskqueue_fetch_policy = {
82
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/TaskQueues/WQ789/**',
83
- 'method' => 'GET',
84
- 'query_filter' => {},
85
- 'post_filter' => {},
86
- 'allow' => true
87
- }
88
- expect(decoded['policies'][-1]).to eq(taskqueue_fetch_policy)
89
- expect(decoded['policies'].size).to eq(policies_size+1)
90
- end
91
-
92
- it 'should add a policy when #allow_update_subresources is called' do
93
- token = @capability.generate_token
94
- decoded, header = JWT.decode token, 'foobar'
95
- policies_size = decoded['policies'].size
96
-
97
- @capability.allow_updates_subresources
98
- token = @capability.generate_token
99
- decoded, header = JWT.decode token, 'foobar'
100
- taskqueue_update_policy = {
101
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/TaskQueues/WQ789/**',
102
- 'method' => 'POST',
103
- 'query_filter' => {},
104
- 'post_filter' => {},
105
- 'allow' => true
106
- }
107
- expect(decoded['policies'][-1]).to eq(taskqueue_update_policy)
108
- expect(decoded['policies'].size).to eq(policies_size+1)
109
- end
110
- end
111
- end
@@ -1,146 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Twilio::JWT::WorkerCapability do
4
- describe 'with a capability' do
5
- before :each do
6
- @capability = Twilio::JWT::WorkerCapability.new 'AC123', 'foobar', 'WS456', 'WK789'
7
- end
8
-
9
- it 'should return a valid jwt when #generate_token is called' do
10
- token = @capability.generate_token
11
- decoded, header = JWT.decode token, 'foobar'
12
- expect(decoded['policies']).not_to be_nil
13
- expect(decoded['iss']).not_to be_nil
14
- expect(decoded['exp']).not_to be_nil
15
- expect(decoded['account_sid']).to eq('AC123')
16
- expect(decoded['workspace_sid']).to eq('WS456')
17
- expect(decoded['worker_sid']).to eq('WK789')
18
- expect(decoded['channel']).to eq('WK789')
19
- end
20
-
21
- it 'should properly set the iss key in the payload' do
22
- token = @capability.generate_token
23
- decoded, header = JWT.decode token, 'foobar'
24
- expect(decoded['iss']).to eq('AC123')
25
- end
26
-
27
- it 'should properly set exp based on the default 1-hour ttl' do
28
- seconds = Time.now.to_i
29
- token = @capability.generate_token
30
- decoded, header = JWT.decode token, 'foobar'
31
- expect(decoded['exp']).to eq(seconds + 3600)
32
- end
33
-
34
- it 'should properly set exp based on the ttl arg to #generate_token' do
35
- seconds = Time.now.to_i
36
- ttl = rand 10000
37
- token = @capability.generate_token ttl
38
- decoded, header = JWT.decode token, 'foobar'
39
- expect(decoded['exp']).to eq(seconds + ttl)
40
- end
41
-
42
- it 'should allow websocket operations and activity list fetches by default' do
43
- token = @capability.generate_token
44
- decoded, header = JWT.decode token, 'foobar'
45
- expect(decoded['policies'].size).to eq(6)
46
- get_policy = {
47
- "url" => 'https://event-bridge.twilio.com/v1/wschannels/AC123/WK789',
48
- "method" => 'GET',
49
- "query_filter" => {},
50
- "post_filter" => {},
51
- "allow" => true
52
- }
53
- expect(decoded['policies'][0]).to eq(get_policy)
54
- post_policy = {
55
- "url" => 'https://event-bridge.twilio.com/v1/wschannels/AC123/WK789',
56
- "method" => 'POST',
57
- "query_filter" => {},
58
- "post_filter" => {},
59
- "allow" => true
60
- }
61
- expect(decoded['policies'][1]).to eq(post_policy)
62
-
63
- worker_fetch_policy = {
64
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789',
65
- 'method' => 'GET',
66
- 'query_filter' => {},
67
- 'post_filter' => {},
68
- 'allow' => true
69
- }
70
- expect(decoded['policies'][2]).to eq(worker_fetch_policy)
71
-
72
- activities_policy = {
73
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities',
74
- 'method' => 'GET',
75
- 'query_filter' => {},
76
- 'post_filter' => {},
77
- 'allow' => true
78
- }
79
- expect(decoded['policies'][3]).to eq(activities_policy)
80
-
81
- tasks_policy = {
82
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**',
83
- 'method' => 'GET',
84
- 'query_filter' => {},
85
- 'post_filter' => {},
86
- 'allow' => true
87
- }
88
- expect(decoded['policies'][4]).to eq(tasks_policy)
89
-
90
- worker_reservations_policy = {
91
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**',
92
- 'method' => 'GET',
93
- 'query_filter' => {},
94
- 'post_filter' => {},
95
- 'allow' => true
96
- }
97
- expect(decoded['policies'][5]).to eq(worker_reservations_policy)
98
- end
99
-
100
- it 'should add a policy when #allow_activity_updates is called' do
101
- token = @capability.generate_token
102
- decoded, header = JWT.decode token, 'foobar'
103
- policies_size = decoded['policies'].size
104
-
105
- @capability.allow_activity_updates
106
- token = @capability.generate_token
107
- decoded, header = JWT.decode token, 'foobar'
108
- activity_policy = {
109
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789',
110
- 'method' => 'POST',
111
- 'query_filter' => {},
112
- 'post_filter' => {'ActivitySid' => {'required' => true}},
113
- 'allow' => true
114
- }
115
- expect(decoded['policies'][-1]).to eq(activity_policy)
116
- expect(decoded['policies'].size).to eq(policies_size+1)
117
- end
118
-
119
- it 'should add two policies when #allow_reservation_updates is called' do
120
- token = @capability.generate_token
121
- decoded, header = JWT.decode token, 'foobar'
122
- policies_size = decoded['policies'].size
123
-
124
- @capability.allow_reservation_updates
125
- token = @capability.generate_token
126
- decoded, header = JWT.decode token, 'foobar'
127
- tasks_policy = {
128
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**',
129
- 'method' => 'POST',
130
- 'query_filter' => {},
131
- 'post_filter' => {},
132
- 'allow' => true
133
- }
134
- expect(decoded['policies'][-2]).to eq(tasks_policy)
135
- worker_reservations_policy = {
136
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**',
137
- 'method' => 'POST',
138
- 'query_filter' => {},
139
- 'post_filter' => {},
140
- 'allow' => true
141
- }
142
- expect(decoded['policies'][-1]).to eq(worker_reservations_policy)
143
- expect(decoded['policies'].size).to eq(policies_size+2)
144
- end
145
- end
146
- end
@@ -1,110 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Twilio::JWT::WorkspaceCapability do
4
- describe 'with a capability' do
5
- before :each do
6
- @capability = Twilio::JWT::WorkspaceCapability.new 'AC123', 'foobar', 'WS456'
7
- end
8
-
9
- it 'should return a valid jwt when #generate_token is called' do
10
- token = @capability.generate_token
11
- decoded, header = JWT.decode token, 'foobar'
12
- expect(decoded['policies']).not_to be_nil
13
- expect(decoded['iss']).not_to be_nil
14
- expect(decoded['exp']).not_to be_nil
15
- expect(decoded['account_sid']).to eq('AC123')
16
- expect(decoded['workspace_sid']).to eq('WS456')
17
- expect(decoded['channel']).to eq('WS456')
18
- end
19
-
20
- it 'should properly set the iss key in the payload' do
21
- token = @capability.generate_token
22
- decoded, header = JWT.decode token, 'foobar'
23
- expect(decoded['iss']).to eq('AC123')
24
- end
25
-
26
- it 'should properly set exp based on the default 1-hour ttl' do
27
- seconds = Time.now.to_i
28
- token = @capability.generate_token
29
- decoded, header = JWT.decode token, 'foobar'
30
- expect(decoded['exp']).to eq(seconds + 3600)
31
- end
32
-
33
- it 'should properly set exp based on the ttl arg to #generate_token' do
34
- seconds = Time.now.to_i
35
- ttl = rand 10000
36
- token = @capability.generate_token ttl
37
- decoded, header = JWT.decode token, 'foobar'
38
- expect(decoded['exp']).to eq(seconds + ttl)
39
- end
40
-
41
- it 'should allow websocket operations and fetching the workspace by default' do
42
- token = @capability.generate_token
43
- decoded, header = JWT.decode token, 'foobar'
44
- expect(decoded['policies'].size).to eq(3)
45
- get_policy = {
46
- "url" => 'https://event-bridge.twilio.com/v1/wschannels/AC123/WS456',
47
- "method" => 'GET',
48
- "query_filter" => {},
49
- "post_filter" => {},
50
- "allow" => true
51
- }
52
- expect(decoded['policies'][0]).to eq(get_policy)
53
- post_policy = {
54
- "url" => 'https://event-bridge.twilio.com/v1/wschannels/AC123/WS456',
55
- "method" => 'POST',
56
- "query_filter" => {},
57
- "post_filter" => {},
58
- "allow" => true
59
- }
60
- expect(decoded['policies'][1]).to eq(post_policy)
61
-
62
- workspace_fetch_policy = {
63
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456',
64
- 'method' => 'GET',
65
- 'query_filter' => {},
66
- 'post_filter' => {},
67
- 'allow' => true
68
- }
69
- expect(decoded['policies'][2]).to eq(workspace_fetch_policy)
70
- end
71
-
72
- it 'should add a policy when #allow_fetch_subresources is called' do
73
- token = @capability.generate_token
74
- decoded, header = JWT.decode token, 'foobar'
75
- policies_size = decoded['policies'].size
76
-
77
- @capability.allow_fetch_subresources
78
- token = @capability.generate_token
79
- decoded, header = JWT.decode token, 'foobar'
80
- workspace_fetch_policy = {
81
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/**',
82
- 'method' => 'GET',
83
- 'query_filter' => {},
84
- 'post_filter' => {},
85
- 'allow' => true
86
- }
87
- expect(decoded['policies'][-1]).to eq(workspace_fetch_policy)
88
- expect(decoded['policies'].size).to eq(policies_size+1)
89
- end
90
-
91
- it 'should add a policy when #allow_update_subresources is called' do
92
- token = @capability.generate_token
93
- decoded, header = JWT.decode token, 'foobar'
94
- policies_size = decoded['policies'].size
95
-
96
- @capability.allow_updates_subresources
97
- token = @capability.generate_token
98
- decoded, header = JWT.decode token, 'foobar'
99
- workspace_update_policy = {
100
- 'url' => 'https://taskrouter.twilio.com/v1/Workspaces/WS456/**',
101
- 'method' => 'POST',
102
- 'query_filter' => {},
103
- 'post_filter' => {},
104
- 'allow' => true
105
- }
106
- expect(decoded['policies'][-1]).to eq(workspace_update_policy)
107
- expect(decoded['policies'].size).to eq(policies_size+1)
108
- end
109
- end
110
- end
@@ -1,47 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Twilio::TwiML::Response do
4
- it 'should render empty' do
5
- twiml = Twilio::TwiML::Response.new
6
- expect(twiml.text).to eq('<?xml version="1.0" encoding="UTF-8"?>' +
7
- '<Response/>')
8
- end
9
-
10
- it 'should render top level tags' do
11
- twiml = Twilio::TwiML::Response.new do |r|
12
- r.Say 'hello world'
13
- r.Hangup
14
- end
15
- expect(twiml.text).to eq('<?xml version="1.0" encoding="UTF-8"?>' +
16
- '<Response>' +
17
- '<Say>hello world</Say>' +
18
- '<Hangup/>' +
19
- '</Response>')
20
- end
21
-
22
- it 'should render attributes in top level tags' do
23
- twiml = Twilio::TwiML::Response.new do |r|
24
- r.Say 'hello world', voice: 'alice'
25
- end
26
-
27
- expect(twiml.text).to eq('<?xml version="1.0" encoding="UTF-8"?>' +
28
- '<Response>' +
29
- '<Say voice="alice">hello world</Say>' +
30
- '</Response>')
31
- end
32
-
33
- it 'should render nested tags' do
34
- twiml = Twilio::TwiML::Response.new do |r|
35
- r.Dial callerId: '+14158675309' do |d|
36
- d.Client 'jenny'
37
- end
38
- end
39
-
40
- expect(twiml.text).to eq('<?xml version="1.0" encoding="UTF-8"?>' +
41
- '<Response>' +
42
- '<Dial callerId="+14158675309">' +
43
- '<Client>jenny</Client>' +
44
- '</Dial>' +
45
- '</Response>')
46
- end
47
- end