twilio-ruby 5.0.0.rc26 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -0
- data/.rubocop_todo.yml +187 -0
- data/.travis.yml +13 -0
- data/CHANGES.md +4 -0
- data/Gemfile +2 -2
- data/Makefile +8 -1
- data/Rakefile +3 -7
- data/examples/examples.rb +12 -10
- data/examples/{print-call-log.rb → print_call_log.rb} +4 -4
- data/lib/rack/twilio_webhook_authentication.rb +2 -3
- data/lib/twilio-ruby/framework/domain.rb +2 -6
- data/lib/twilio-ruby/framework/error.rb +0 -1
- data/lib/twilio-ruby/framework/helper.rb +1 -1
- data/lib/twilio-ruby/framework/page.rb +23 -25
- data/lib/twilio-ruby/framework/resource.rb +2 -2
- data/lib/twilio-ruby/framework/serialize.rb +5 -12
- data/lib/twilio-ruby/framework/twilio_response.rb +1 -1
- data/lib/twilio-ruby/framework/values.rb +2 -2
- data/lib/twilio-ruby/framework/version.rb +19 -37
- data/lib/twilio-ruby/http/http_client.rb +5 -6
- data/lib/twilio-ruby/jwt/access_token.rb +27 -41
- data/lib/twilio-ruby/jwt/client_capability.rb +11 -16
- data/lib/twilio-ruby/jwt/jwt.rb +7 -13
- data/lib/twilio-ruby/jwt/task_router.rb +40 -38
- data/lib/twilio-ruby/rest/accounts.rb +2 -0
- data/lib/twilio-ruby/rest/accounts/v1.rb +2 -0
- data/lib/twilio-ruby/rest/accounts/v1/credential.rb +2 -2
- data/lib/twilio-ruby/rest/accounts/v1/credential/public_key.rb +12 -7
- data/lib/twilio-ruby/rest/api.rb +96 -0
- data/lib/twilio-ruby/rest/api/v2010.rb +5 -0
- data/lib/twilio-ruby/rest/api/v2010/account.rb +66 -56
- data/lib/twilio-ruby/rest/api/v2010/account/address.rb +30 -13
- data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +22 -8
- data/lib/twilio-ruby/rest/api/v2010/account/application.rb +40 -11
- data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +20 -9
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +16 -15
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +26 -28
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +26 -28
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +26 -28
- data/lib/twilio-ruby/rest/api/v2010/account/call.rb +64 -34
- data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +12 -4
- data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +28 -3
- data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +37 -16
- data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +25 -15
- data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +28 -27
- data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +28 -19
- data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +22 -9
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +62 -58
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +52 -12
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +52 -12
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +52 -12
- data/lib/twilio-ruby/rest/api/v2010/account/key.rb +8 -9
- data/lib/twilio-ruby/rest/api/v2010/account/message.rb +47 -20
- data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +12 -2
- data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +17 -17
- data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +10 -2
- data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +10 -2
- data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +37 -16
- data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +14 -13
- data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +20 -10
- data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +10 -10
- data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +37 -21
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +22 -13
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +22 -13
- data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +26 -9
- data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +24 -13
- data/lib/twilio-ruby/rest/api/v2010/account/signing_key.rb +8 -9
- data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +8 -10
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +16 -11
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list/credential.rb +14 -9
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +36 -13
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +14 -10
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +14 -10
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +16 -11
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +16 -9
- data/lib/twilio-ruby/rest/api/v2010/account/token.rb +14 -2
- data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +26 -9
- data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +4 -6
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +44 -33
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +28 -11
- data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +32 -15
- data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +10 -1
- data/lib/twilio-ruby/rest/chat.rb +8 -0
- data/lib/twilio-ruby/rest/chat/v1.rb +8 -0
- data/lib/twilio-ruby/rest/chat/v1/credential.rb +16 -7
- data/lib/twilio-ruby/rest/chat/v1/service.rb +48 -13
- data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +34 -15
- data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +20 -10
- data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +22 -10
- data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +26 -10
- data/lib/twilio-ruby/rest/chat/v1/service/role.rb +18 -8
- data/lib/twilio-ruby/rest/chat/v1/service/user.rb +30 -10
- data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +16 -8
- data/lib/twilio-ruby/rest/chat/v2.rb +8 -0
- data/lib/twilio-ruby/rest/chat/v2/credential.rb +16 -7
- data/lib/twilio-ruby/rest/chat/v2/service.rb +46 -13
- data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +34 -15
- data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +20 -10
- data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +22 -10
- data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +26 -10
- data/lib/twilio-ruby/rest/chat/v2/service/role.rb +18 -8
- data/lib/twilio-ruby/rest/chat/v2/service/user.rb +30 -10
- data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +16 -8
- data/lib/twilio-ruby/rest/client.rb +94 -45
- data/lib/twilio-ruby/rest/ip_messaging.rb +8 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1.rb +8 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +16 -7
- data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +48 -13
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +34 -15
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +20 -10
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +22 -10
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +26 -10
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +18 -8
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +30 -10
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +16 -8
- data/lib/twilio-ruby/rest/ip_messaging/v2.rb +8 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +16 -7
- data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +46 -13
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +34 -15
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +20 -10
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +22 -10
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +26 -10
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +18 -8
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +30 -10
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +16 -8
- data/lib/twilio-ruby/rest/lookups.rb +4 -0
- data/lib/twilio-ruby/rest/lookups/v1.rb +9 -5
- data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +14 -1
- data/lib/twilio-ruby/rest/monitor.rb +8 -0
- data/lib/twilio-ruby/rest/monitor/v1.rb +8 -0
- data/lib/twilio-ruby/rest/monitor/v1/alert.rb +34 -10
- data/lib/twilio-ruby/rest/monitor/v1/event.rb +28 -13
- data/lib/twilio-ruby/rest/pricing.rb +6 -0
- data/lib/twilio-ruby/rest/pricing/v1.rb +6 -0
- data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +8 -2
- data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +12 -7
- data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +8 -2
- data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +10 -7
- data/lib/twilio-ruby/rest/pricing/v1/voice.rb +10 -4
- data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +12 -7
- data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +14 -1
- data/lib/twilio-ruby/rest/taskrouter.rb +4 -0
- data/lib/twilio-ruby/rest/taskrouter/v1.rb +4 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +46 -24
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +16 -10
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +30 -17
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +42 -19
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +22 -10
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +16 -8
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +34 -15
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +12 -3
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +10 -11
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +34 -23
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +22 -10
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +28 -9
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +10 -3
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +10 -2
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +28 -11
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +12 -3
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +10 -2
- data/lib/twilio-ruby/rest/trunking.rb +4 -0
- data/lib/twilio-ruby/rest/trunking/v1.rb +4 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +36 -15
- data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +14 -8
- data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +14 -8
- data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +22 -8
- data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +52 -8
- data/lib/twilio-ruby/rest/video.rb +8 -0
- data/lib/twilio-ruby/rest/video/v1.rb +8 -0
- data/lib/twilio-ruby/rest/video/v1/recording.rb +26 -12
- data/lib/twilio-ruby/rest/video/v1/room.rb +34 -13
- data/lib/twilio-ruby/rest/video/v1/room/recording.rb +28 -12
- data/lib/twilio-ruby/security/request_validator.rb +1 -2
- data/lib/twilio-ruby/twiml/messaging_response.rb +7 -19
- data/lib/twilio-ruby/twiml/twiml.rb +8 -14
- data/lib/twilio-ruby/twiml/voice_response.rb +157 -169
- data/lib/twilio-ruby/util.rb +1 -1
- data/lib/twilio-ruby/version.rb +1 -1
- data/spec/framework/serialize_spec.rb +17 -30
- data/spec/holodeck/holodeck.rb +6 -6
- data/spec/jwt/access_token_spec.rb +0 -6
- data/spec/jwt/client_capability_spec.rb +3 -3
- data/spec/jwt/task_router_spec.rb +16 -21
- data/spec/rack/twilio_webhook_authentication_spec.rb +12 -16
- data/spec/spec_helper.rb +2 -2
- data/spec/support/fakeweb.rb +1 -1
- data/spec/twiml/voice_response_spec.rb +33 -20
- data/twilio-ruby.gemspec +7 -3
- metadata +21 -193
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on.rb +0 -420
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on/assigned_add_on_extension.rb +0 -345
- data/lib/twilio-ruby/rest/fax.rb +0 -40
- data/lib/twilio-ruby/rest/fax/v1.rb +0 -37
- data/lib/twilio-ruby/rest/fax/v1/fax.rb +0 -520
- data/lib/twilio-ruby/rest/fax/v1/fax/fax_media.rb +0 -321
- data/lib/twilio-ruby/rest/messaging.rb +0 -40
- data/lib/twilio-ruby/rest/messaging/v1.rb +0 -37
- data/lib/twilio-ruby/rest/messaging/v1/service.rb +0 -604
- data/lib/twilio-ruby/rest/messaging/v1/service/alpha_sender.rb +0 -344
- data/lib/twilio-ruby/rest/messaging/v1/service/phone_number.rb +0 -349
- data/lib/twilio-ruby/rest/messaging/v1/service/short_code.rb +0 -349
- data/lib/twilio-ruby/rest/notify.rb +0 -44
- data/lib/twilio-ruby/rest/notify/v1.rb +0 -48
- data/lib/twilio-ruby/rest/notify/v1/credential.rb +0 -394
- data/lib/twilio-ruby/rest/notify/v1/service.rb +0 -611
- data/lib/twilio-ruby/rest/notify/v1/service/binding.rb +0 -414
- data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +0 -249
- data/lib/twilio-ruby/rest/notify/v1/service/segment.rb +0 -219
- data/lib/twilio-ruby/rest/notify/v1/service/user.rb +0 -437
- data/lib/twilio-ruby/rest/notify/v1/service/user/segment_memberships.rb +0 -247
- data/lib/twilio-ruby/rest/notify/v1/service/user/user_binding.rb +0 -418
- data/lib/twilio-ruby/rest/preview.rb +0 -107
- data/lib/twilio-ruby/rest/preview/bulk_exports.rb +0 -48
- data/lib/twilio-ruby/rest/preview/bulk_exports/export.rb +0 -198
- data/lib/twilio-ruby/rest/preview/bulk_exports/export/day.rb +0 -209
- data/lib/twilio-ruby/rest/preview/bulk_exports/export_configuration.rb +0 -232
- data/lib/twilio-ruby/rest/preview/hosted_numbers.rb +0 -37
- data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +0 -539
- data/lib/twilio-ruby/rest/preview/marketplace.rb +0 -48
- data/lib/twilio-ruby/rest/preview/marketplace/available_add_on.rb +0 -326
- data/lib/twilio-ruby/rest/preview/marketplace/available_add_on/available_add_on_extension.rb +0 -297
- data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on.rb +0 -427
- data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on/installed_add_on_extension.rb +0 -335
- data/lib/twilio-ruby/rest/preview/proxy.rb +0 -37
- data/lib/twilio-ruby/rest/preview/proxy/service.rb +0 -489
- data/lib/twilio-ruby/rest/preview/proxy/service/phone_number.rb +0 -349
- data/lib/twilio-ruby/rest/preview/proxy/service/session.rb +0 -525
- data/lib/twilio-ruby/rest/preview/proxy/service/session/interaction.rb +0 -406
- data/lib/twilio-ruby/rest/preview/proxy/service/session/participant.rb +0 -495
- data/lib/twilio-ruby/rest/preview/proxy/service/session/participant/message_interaction.rb +0 -422
- data/lib/twilio-ruby/rest/preview/proxy/service/short_code.rb +0 -349
- data/lib/twilio-ruby/rest/preview/sync.rb +0 -37
- data/lib/twilio-ruby/rest/preview/sync/service.rb +0 -491
- data/lib/twilio-ruby/rest/preview/sync/service/document.rb +0 -431
- data/lib/twilio-ruby/rest/preview/sync/service/document/document_permission.rb +0 -390
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list.rb +0 -426
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_item.rb +0 -422
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_permission.rb +0 -390
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map.rb +0 -426
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map/sync_map_item.rb +0 -424
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map/sync_map_permission.rb +0 -390
- data/lib/twilio-ruby/rest/preview/wireless.rb +0 -59
- data/lib/twilio-ruby/rest/preview/wireless/command.rb +0 -371
- data/lib/twilio-ruby/rest/preview/wireless/rate_plan.rb +0 -414
- data/lib/twilio-ruby/rest/preview/wireless/sim.rb +0 -512
- data/lib/twilio-ruby/rest/preview/wireless/sim/usage.rb +0 -220
- data/lib/twilio-ruby/rest/sync.rb +0 -40
- data/lib/twilio-ruby/rest/sync/v1.rb +0 -37
- data/lib/twilio-ruby/rest/sync/v1/service.rb +0 -491
- data/lib/twilio-ruby/rest/sync/v1/service/document.rb +0 -431
- data/lib/twilio-ruby/rest/sync/v1/service/document/document_permission.rb +0 -390
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list.rb +0 -426
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_item.rb +0 -422
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_permission.rb +0 -390
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map.rb +0 -426
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_item.rb +0 -424
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_permission.rb +0 -390
- data/lib/twilio-ruby/rest/wireless.rb +0 -48
- data/lib/twilio-ruby/rest/wireless/v1.rb +0 -59
- data/lib/twilio-ruby/rest/wireless/v1/command.rb +0 -357
- data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +0 -427
- data/lib/twilio-ruby/rest/wireless/v1/sim.rb +0 -516
- data/lib/twilio-ruby/rest/wireless/v1/sim/usage_record.rb +0 -235
- data/spec/integration/api/v2010/account/incoming_phone_number/assigned_add_on/assigned_add_on_extension_spec.rb +0 -135
- data/spec/integration/api/v2010/account/incoming_phone_number/assigned_add_on_spec.rb +0 -223
- data/spec/integration/fax/v1/fax/fax_media_spec.rb +0 -126
- data/spec/integration/fax/v1/fax_spec.rb +0 -272
- data/spec/integration/messaging/v1/service/alpha_sender_spec.rb +0 -170
- data/spec/integration/messaging/v1/service/phone_number_spec.rb +0 -201
- data/spec/integration/messaging/v1/service/short_code_spec.rb +0 -173
- data/spec/integration/messaging/v1/service_spec.rb +0 -263
- data/spec/integration/notify/v1/credential_spec.rb +0 -223
- data/spec/integration/notify/v1/service/binding_spec.rb +0 -227
- data/spec/integration/notify/v1/service/notification_spec.rb +0 -97
- data/spec/integration/notify/v1/service/segment_spec.rb +0 -84
- data/spec/integration/notify/v1/service/user/segment_memberships_spec.rb +0 -118
- data/spec/integration/notify/v1/service/user/user_binding_spec.rb +0 -269
- data/spec/integration/notify/v1/service/user_spec.rb +0 -213
- data/spec/integration/notify/v1/service_spec.rb +0 -280
- data/spec/integration/preview/bulk_exports/export/day_spec.rb +0 -56
- data/spec/integration/preview/bulk_exports/export_configuration_spec.rb +0 -79
- data/spec/integration/preview/bulk_exports/export_spec.rb +0 -43
- data/spec/integration/preview/hosted_numbers/hosted_number_order_spec.rb +0 -276
- data/spec/integration/preview/marketplace/available_add_on/available_add_on_extension_spec.rb +0 -121
- data/spec/integration/preview/marketplace/available_add_on_spec.rb +0 -142
- data/spec/integration/preview/marketplace/installed_add_on/installed_add_on_extension_spec.rb +0 -164
- data/spec/integration/preview/marketplace/installed_add_on_spec.rb +0 -252
- data/spec/integration/preview/proxy/service/phone_number_spec.rb +0 -173
- data/spec/integration/preview/proxy/service/session/interaction_spec.rb +0 -104
- data/spec/integration/preview/proxy/service/session/participant/message_interaction_spec.rb +0 -164
- data/spec/integration/preview/proxy/service/session/participant_spec.rb +0 -226
- data/spec/integration/preview/proxy/service/session_spec.rb +0 -216
- data/spec/integration/preview/proxy/service/short_code_spec.rb +0 -173
- data/spec/integration/preview/proxy/service_spec.rb +0 -200
- data/spec/integration/preview/sync/service/document/document_permission_spec.rb +0 -206
- data/spec/integration/preview/sync/service/document_spec.rb +0 -254
- data/spec/integration/preview/sync/service/sync_list/sync_list_item_spec.rb +0 -256
- data/spec/integration/preview/sync/service/sync_list/sync_list_permission_spec.rb +0 -206
- data/spec/integration/preview/sync/service/sync_list_spec.rb +0 -207
- data/spec/integration/preview/sync/service/sync_map/sync_map_item_spec.rb +0 -257
- data/spec/integration/preview/sync/service/sync_map/sync_map_permission_spec.rb +0 -206
- data/spec/integration/preview/sync/service/sync_map_spec.rb +0 -207
- data/spec/integration/preview/sync/service_spec.rb +0 -244
- data/spec/integration/preview/wireless/command_spec.rb +0 -169
- data/spec/integration/preview/wireless/rate_plan_spec.rb +0 -260
- data/spec/integration/preview/wireless/sim/usage_spec.rb +0 -49
- data/spec/integration/preview/wireless/sim_spec.rb +0 -208
- data/spec/integration/sync/v1/service/document/document_permission_spec.rb +0 -206
- data/spec/integration/sync/v1/service/document_spec.rb +0 -254
- data/spec/integration/sync/v1/service/sync_list/sync_list_item_spec.rb +0 -256
- data/spec/integration/sync/v1/service/sync_list/sync_list_permission_spec.rb +0 -206
- data/spec/integration/sync/v1/service/sync_list_spec.rb +0 -207
- data/spec/integration/sync/v1/service/sync_map/sync_map_item_spec.rb +0 -257
- data/spec/integration/sync/v1/service/sync_map/sync_map_permission_spec.rb +0 -206
- data/spec/integration/sync/v1/service/sync_map_spec.rb +0 -207
- data/spec/integration/sync/v1/service_spec.rb +0 -244
- data/spec/integration/wireless/v1/command_spec.rb +0 -166
- data/spec/integration/wireless/v1/rate_plan_spec.rb +0 -268
- data/spec/integration/wireless/v1/sim/usage_record_spec.rb +0 -65
- data/spec/integration/wireless/v1/sim_spec.rb +0 -208
data/lib/twilio-ruby/util.rb
CHANGED
data/lib/twilio-ruby/version.rb
CHANGED
@@ -2,59 +2,47 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Twilio do
|
4
4
|
describe 'prefixed_collapsible_map' do
|
5
|
-
|
6
5
|
it 'should serialize nil' do
|
7
6
|
actual = Twilio.prefixed_collapsible_map(nil, 'Prefix')
|
8
7
|
expect(actual).to eq({})
|
9
8
|
end
|
10
9
|
|
11
10
|
it 'should serialize a single key' do
|
12
|
-
actual = Twilio.prefixed_collapsible_map({
|
13
|
-
|
14
|
-
}, 'Prefix')
|
15
|
-
expect(actual).to eq({
|
16
|
-
'Prefix.foo' => 'bar'
|
17
|
-
})
|
11
|
+
actual = Twilio.prefixed_collapsible_map({ 'foo' => 'bar' }, 'Prefix')
|
12
|
+
expect(actual).to eq('Prefix.foo' => 'bar')
|
18
13
|
end
|
19
14
|
|
20
15
|
it 'should serialize nested key' do
|
21
16
|
actual = Twilio.prefixed_collapsible_map({
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
expect(actual).to eq(
|
27
|
-
'Prefix.foo.bar' => 'baz'
|
28
|
-
})
|
17
|
+
'foo' => {
|
18
|
+
'bar' => 'baz'
|
19
|
+
}
|
20
|
+
}, 'Prefix')
|
21
|
+
expect(actual).to eq('Prefix.foo.bar' => 'baz')
|
29
22
|
end
|
30
23
|
|
31
24
|
it 'should serialize multiple keys' do
|
32
25
|
actual = Twilio.prefixed_collapsible_map({
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
expect(actual).to eq(
|
40
|
-
|
41
|
-
|
42
|
-
'Prefix.foo' => 'bar'
|
43
|
-
})
|
26
|
+
'watson' => {
|
27
|
+
'language' => 'en',
|
28
|
+
'alice' => 'bob'
|
29
|
+
},
|
30
|
+
'foo' => 'bar'
|
31
|
+
}, 'Prefix')
|
32
|
+
expect(actual).to eq('Prefix.watson.language' => 'en',
|
33
|
+
'Prefix.watson.alice' => 'bob',
|
34
|
+
'Prefix.foo' => 'bar')
|
44
35
|
end
|
45
36
|
|
46
37
|
it 'should serialize list' do
|
47
38
|
actual = Twilio.prefixed_collapsible_map(['foo', 'bar'], 'Prefix')
|
48
39
|
expect(actual).to eq({})
|
49
40
|
end
|
50
|
-
|
51
|
-
|
52
41
|
end
|
53
42
|
|
54
43
|
describe 'serialize_object' do
|
55
|
-
|
56
44
|
it 'should jsonify hashes' do
|
57
|
-
actual = Twilio.serialize_object({twilio: "rocks"})
|
45
|
+
actual = Twilio.serialize_object({ twilio: "rocks" })
|
58
46
|
expect(actual).to eq('{"twilio":"rocks"}')
|
59
47
|
end
|
60
48
|
|
@@ -67,6 +55,5 @@ describe Twilio do
|
|
67
55
|
actual = Twilio.serialize_object(123)
|
68
56
|
expect(actual).to eq(123)
|
69
57
|
end
|
70
|
-
|
71
58
|
end
|
72
59
|
end
|
data/spec/holodeck/holodeck.rb
CHANGED
@@ -21,10 +21,10 @@ class Holodeck
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def ==(other)
|
24
|
-
method.
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
method.casecmp(other.method.upcase).zero? &&
|
25
|
+
url == other.url &&
|
26
|
+
params == other.params &&
|
27
|
+
data == other.data
|
28
28
|
end
|
29
29
|
|
30
30
|
def to_s
|
@@ -43,7 +43,7 @@ class Holodeck
|
|
43
43
|
@response = response
|
44
44
|
end
|
45
45
|
|
46
|
-
def request(host, port, method, url, params={}, data={}, headers={}, auth=nil,
|
46
|
+
def request(host, port, method, url, params = {}, data = {}, headers = {}, auth = nil, _timeout = nil)
|
47
47
|
@requests << Request.new(
|
48
48
|
method: method,
|
49
49
|
url: url,
|
@@ -52,7 +52,7 @@ class Holodeck
|
|
52
52
|
headers: headers,
|
53
53
|
auth: auth
|
54
54
|
)
|
55
|
-
|
55
|
+
@response
|
56
56
|
end
|
57
57
|
|
58
58
|
def has_request?(request)
|
@@ -74,7 +74,7 @@ describe Twilio::JWT::ClientCapability do
|
|
74
74
|
it 'complete payload' do
|
75
75
|
@incomingScope = Twilio::JWT::ClientCapability::IncomingClientScope.new('test-client-name')
|
76
76
|
@clientCapability.add_scope(@incomingScope)
|
77
|
-
payload, _ = ::JWT.decode
|
77
|
+
payload, _ = ::JWT.decode(@clientCapability.to_s, 'authToken', true, { algorithm: 'HS256' })
|
78
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)
|
@@ -99,6 +99,6 @@ describe Twilio::JWT::Scope do
|
|
99
99
|
include Twilio::JWT::Scope
|
100
100
|
end
|
101
101
|
@dummyScope = DummyScope.new
|
102
|
-
expect{@dummyScope._generate_payload}.to raise_error(RuntimeError)
|
102
|
+
expect { @dummyScope._generate_payload }.to raise_error(RuntimeError)
|
103
103
|
end
|
104
|
-
end
|
104
|
+
end
|
@@ -42,25 +42,23 @@ describe 'TaskRouter ' do
|
|
42
42
|
describe 'policy' do
|
43
43
|
it 'initialize' do
|
44
44
|
@policy = Twilio::JWT::TaskRouterCapability::Policy.new('test-url',
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
)
|
45
|
+
'GET',
|
46
|
+
true,
|
47
|
+
{ 'test-post-key' => 'test-post-value' },
|
48
|
+
'test-query-key' => 'test-query-value')
|
50
49
|
|
51
|
-
payload = Hash[@policy._generate_payload.map{ |k, v| [k.to_s, v] }]
|
50
|
+
payload = Hash[@policy._generate_payload.map { |k, v| [k.to_s, v] }]
|
52
51
|
check_policy('GET',
|
53
52
|
'test-url',
|
54
53
|
payload,
|
55
|
-
post_filter: {'test-post-key'=>'test-post-value'},
|
56
|
-
query_filter: {'test-query-key'=>'test-query-value'},
|
57
|
-
allow: true
|
54
|
+
post_filter: { 'test-post-key' => 'test-post-value' },
|
55
|
+
query_filter: { 'test-query-key' => 'test-query-value' },
|
56
|
+
allow: true)
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
61
60
|
describe Twilio::JWT::TaskRouterCapability::TaskRouterUtils do
|
62
61
|
describe 'urls' do
|
63
|
-
|
64
62
|
it 'workspaces' do
|
65
63
|
expected_url = 'https://taskrouter.twilio.com/v1/Workspaces'
|
66
64
|
expect(Twilio::JWT::TaskRouterCapability::TaskRouterUtils.workspaces).to eq(expected_url)
|
@@ -150,28 +148,25 @@ describe 'TaskRouter ' do
|
|
150
148
|
expected_url = 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Workers/WT123/Reservations/**'
|
151
149
|
expect(Twilio::JWT::TaskRouterCapability::TaskRouterUtils.all_reservations('WK123', 'WT123')).to eq(expected_url)
|
152
150
|
end
|
153
|
-
|
154
151
|
end
|
155
152
|
|
156
153
|
describe 'default policies' do
|
157
154
|
it 'default web_socket_policies' do
|
158
155
|
@policies = Twilio::JWT::TaskRouterCapability::TaskRouterUtils.web_socket_policies('AC123', 'CI123')
|
159
|
-
get, post = @policies.map
|
160
|
-
check_policy('GET', 'https://event-bridge.twilio.com/v1/wschannels/AC123/CI123', Hash[get.map{ |k, v| [k.to_s, v]}])
|
161
|
-
check_policy('POST', 'https://event-bridge.twilio.com/v1/wschannels/AC123/CI123', Hash[post.map{ |k, v| [k.to_s, v]}])
|
156
|
+
get, post = @policies.map(&:_generate_payload)
|
157
|
+
check_policy('GET', 'https://event-bridge.twilio.com/v1/wschannels/AC123/CI123', Hash[get.map { |k, v| [k.to_s, v] }])
|
158
|
+
check_policy('POST', 'https://event-bridge.twilio.com/v1/wschannels/AC123/CI123', Hash[post.map { |k, v| [k.to_s, v] }])
|
162
159
|
end
|
163
160
|
|
164
161
|
it 'default worker policies' do
|
165
162
|
@policies = Twilio::JWT::TaskRouterCapability::TaskRouterUtils.worker_policies('WK123', 'WT123')
|
166
|
-
payload = @policies.map
|
167
|
-
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Activities', Hash[payload[0].map{ |k, v| [k.to_s, v]}])
|
168
|
-
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Tasks/**', Hash[payload[1].map{ |k, v| [k.to_s, v]}])
|
169
|
-
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Workers/WT123/Reservations/**', Hash[payload[2].map{ |k, v| [k.to_s, v]}])
|
170
|
-
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Workers/WT123', Hash[payload[3].map{ |k, v| [k.to_s, v]}])
|
163
|
+
payload = @policies.map(&:_generate_payload)
|
164
|
+
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Activities', Hash[payload[0].map { |k, v| [k.to_s, v] }])
|
165
|
+
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Tasks/**', Hash[payload[1].map { |k, v| [k.to_s, v] }])
|
166
|
+
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Workers/WT123/Reservations/**', Hash[payload[2].map { |k, v| [k.to_s, v] }])
|
167
|
+
check_policy('GET', 'https://taskrouter.twilio.com/v1/Workspaces/WK123/Workers/WT123', Hash[payload[3].map { |k, v| [k.to_s, v] }])
|
171
168
|
end
|
172
169
|
end
|
173
170
|
end
|
174
171
|
end
|
175
172
|
end
|
176
|
-
|
177
|
-
|
@@ -3,36 +3,36 @@ require 'rack/mock'
|
|
3
3
|
|
4
4
|
describe Rack::TwilioWebhookAuthentication do
|
5
5
|
before do
|
6
|
-
@app =
|
6
|
+
@app = ->(_env) { [200, { 'Content-Type' => 'text/plain' }, ['Hello']] }
|
7
7
|
end
|
8
8
|
|
9
9
|
describe 'new' do
|
10
10
|
it 'should initialize with an app, auth token and a path' do
|
11
|
-
expect
|
11
|
+
expect do
|
12
12
|
Rack::TwilioWebhookAuthentication.new(@app, 'ABC', /\/voice/)
|
13
|
-
|
13
|
+
end.not_to raise_error
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should initialize with an app, auth token and paths' do
|
17
|
-
expect
|
17
|
+
expect do
|
18
18
|
Rack::TwilioWebhookAuthentication.new(@app, 'ABC', /\/voice/, /\/sms/)
|
19
|
-
|
19
|
+
end.not_to raise_error
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should initialize with an app, dynamic token and paths' do
|
23
|
-
expect
|
23
|
+
expect do
|
24
24
|
Rack::TwilioWebhookAuthentication.new(@app, nil, /\/voice/, /\/sms/)
|
25
|
-
|
25
|
+
end.not_to raise_error
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
describe 'calling against one path with dynamic auth token' do
|
30
30
|
it 'should allow a request through if it validates' do
|
31
31
|
auth_token = 'qwerty'
|
32
|
-
account_sid =
|
32
|
+
account_sid = 12_345
|
33
33
|
expect_any_instance_of(Rack::Request).to receive(:post?).and_return(true)
|
34
|
-
expect_any_instance_of(Rack::Request).to receive(:POST).and_return({'AccountSid' => account_sid})
|
35
|
-
@middleware = Rack::TwilioWebhookAuthentication.new(@app, nil, /\/voice/) { |asid| auth_token}
|
34
|
+
expect_any_instance_of(Rack::Request).to receive(:POST).and_return({ 'AccountSid' => account_sid })
|
35
|
+
@middleware = Rack::TwilioWebhookAuthentication.new(@app, nil, /\/voice/) { |asid| auth_token }
|
36
36
|
request_validator = double('RequestValidator')
|
37
37
|
expect(Twilio::Security::RequestValidator).to receive(:new).with(auth_token).and_return(request_validator)
|
38
38
|
expect(request_validator).to receive(:validate).and_return(true)
|
@@ -44,9 +44,7 @@ describe Rack::TwilioWebhookAuthentication do
|
|
44
44
|
|
45
45
|
describe 'calling against one path' do
|
46
46
|
before do
|
47
|
-
@middleware = Rack::TwilioWebhookAuthentication.new(
|
48
|
-
@app, 'ABC', /\/voice/
|
49
|
-
)
|
47
|
+
@middleware = Rack::TwilioWebhookAuthentication.new(@app, 'ABC', /\/voice/)
|
50
48
|
end
|
51
49
|
|
52
50
|
it 'should not intercept when the path doesn\'t match' do
|
@@ -77,9 +75,7 @@ describe Rack::TwilioWebhookAuthentication do
|
|
77
75
|
|
78
76
|
describe 'calling against many paths' do
|
79
77
|
before do
|
80
|
-
@middleware = Rack::TwilioWebhookAuthentication.new(
|
81
|
-
@app, 'ABC', /\/voice/, /\/sms/
|
82
|
-
)
|
78
|
+
@middleware = Rack::TwilioWebhookAuthentication.new(@app, 'ABC', /\/voice/, /\/sms/)
|
83
79
|
end
|
84
80
|
|
85
81
|
it 'should not intercept when the path doesn\'t match' do
|
data/spec/spec_helper.rb
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
3
3
|
require 'bundler'
|
4
4
|
Bundler.setup
|
5
5
|
|
6
|
-
Dir.glob(File.expand_path(
|
6
|
+
Dir.glob(File.expand_path('../support/**/*.rb', __FILE__), &method(:require))
|
7
7
|
|
8
8
|
require_relative './holodeck/holodeck.rb'
|
9
9
|
require_relative './holodeck/hologram.rb'
|
@@ -17,7 +17,7 @@ RSpec.configure do |config|
|
|
17
17
|
end
|
18
18
|
|
19
19
|
config.before(:each) do
|
20
|
-
@client = Twilio::REST::Client.new('AC' + 'a'*32, 'AUTHTOKEN')
|
20
|
+
@client = Twilio::REST::Client.new('AC' + 'a' * 32, 'AUTHTOKEN')
|
21
21
|
@holodeck = Holodeck.new
|
22
22
|
@client.http_client = @holodeck
|
23
23
|
end
|
data/spec/support/fakeweb.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
require 'fakeweb'
|
2
|
-
FakeWeb.allow_net_connect = false
|
2
|
+
FakeWeb.allow_net_connect = false
|
@@ -43,8 +43,9 @@ describe Twilio::TwiML::VoiceResponse do
|
|
43
43
|
|
44
44
|
# For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
|
45
45
|
# Ruby 2.4 generates an empty tag
|
46
|
-
expect(r.to_s)
|
47
|
-
|
46
|
+
expect(r.to_s)
|
47
|
+
.to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Say></Say></Response>')
|
48
|
+
.or(eq('<?xml version="1.0" encoding="UTF-8"?><Response><Say/></Response>'))
|
48
49
|
end
|
49
50
|
|
50
51
|
it 'should allow populated say' do
|
@@ -90,8 +91,9 @@ describe Twilio::TwiML::VoiceResponse do
|
|
90
91
|
|
91
92
|
# For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
|
92
93
|
# Ruby 2.4 generates an empty tag
|
93
|
-
expect(r.to_s)
|
94
|
-
|
94
|
+
expect(r.to_s)
|
95
|
+
.to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Play></Play></Response>')
|
96
|
+
.or(eq('<?xml version="1.0" encoding="UTF-8"?><Response><Play/></Response>'))
|
95
97
|
end
|
96
98
|
|
97
99
|
it 'should play hello' do
|
@@ -114,8 +116,9 @@ describe Twilio::TwiML::VoiceResponse do
|
|
114
116
|
|
115
117
|
# For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
|
116
118
|
# Ruby 2.4 generates an empty tag
|
117
|
-
expect(r.to_s)
|
118
|
-
|
119
|
+
expect(r.to_s)
|
120
|
+
.to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Play digits="w123"></Play></Response>')
|
121
|
+
.or(eq('<?xml version="1.0" encoding="UTF-8"?><Response><Play digits="w123"/></Response>'))
|
119
122
|
end
|
120
123
|
end
|
121
124
|
|
@@ -129,21 +132,21 @@ describe Twilio::TwiML::VoiceResponse do
|
|
129
132
|
|
130
133
|
it 'should allow action and method' do
|
131
134
|
r = Twilio::TwiML::VoiceResponse.new
|
132
|
-
r.record
|
135
|
+
r.record(action: 'example.com', method: 'GET')
|
133
136
|
|
134
137
|
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Record action="example.com" method="GET"/></Response>')
|
135
138
|
end
|
136
139
|
|
137
140
|
it 'should allow max_length, finish_on_key, and timeout' do
|
138
141
|
r = Twilio::TwiML::VoiceResponse.new
|
139
|
-
r.record
|
142
|
+
r.record(timeout: 4, finish_on_key: '#', max_length: 30)
|
140
143
|
|
141
144
|
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Record finishOnKey="#" maxLength="30" timeout="4"/></Response>')
|
142
145
|
end
|
143
146
|
|
144
147
|
it 'should allow transcribe' do
|
145
148
|
r = Twilio::TwiML::VoiceResponse.new
|
146
|
-
r.record
|
149
|
+
r.record(transcribe_callback: 'example.com')
|
147
150
|
|
148
151
|
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Record transcribeCallback="example.com"/></Response>')
|
149
152
|
end
|
@@ -156,20 +159,21 @@ describe Twilio::TwiML::VoiceResponse do
|
|
156
159
|
|
157
160
|
# For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
|
158
161
|
# Ruby 2.4 generates an empty tag
|
159
|
-
expect(r.to_s)
|
160
|
-
|
162
|
+
expect(r.to_s)
|
163
|
+
.to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Redirect></Redirect></Response>')
|
164
|
+
.or(eq('<?xml version="1.0" encoding="UTF-8"?><Response><Redirect/></Response>'))
|
161
165
|
end
|
162
166
|
|
163
167
|
it 'should allow method' do
|
164
168
|
r = Twilio::TwiML::VoiceResponse.new
|
165
|
-
r.redirect
|
169
|
+
r.redirect('example.com', method: 'POST')
|
166
170
|
|
167
171
|
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Redirect method="POST">example.com</Redirect></Response>')
|
168
172
|
end
|
169
173
|
|
170
174
|
it 'should allow method and params' do
|
171
175
|
r = Twilio::TwiML::VoiceResponse.new
|
172
|
-
r.redirect
|
176
|
+
r.redirect('example.com?id=34&action=hey', method: 'POST')
|
173
177
|
|
174
178
|
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Redirect method="POST">example.com?id=34&action=hey</Redirect></Response>')
|
175
179
|
end
|
@@ -209,8 +213,9 @@ describe Twilio::TwiML::VoiceResponse do
|
|
209
213
|
|
210
214
|
# For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
|
211
215
|
# Ruby 2.4 generates an empty tag
|
212
|
-
expect(r.to_s)
|
213
|
-
|
216
|
+
expect(r.to_s)
|
217
|
+
.to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Sms></Sms></Response>')
|
218
|
+
.or(eq('<?xml version="1.0" encoding="UTF-8"?><Response><Sms/></Response>'))
|
214
219
|
end
|
215
220
|
|
216
221
|
it 'should allow SMS body' do
|
@@ -222,7 +227,7 @@ describe Twilio::TwiML::VoiceResponse do
|
|
222
227
|
|
223
228
|
it 'should allow to, from, action, and status_callback' do
|
224
229
|
r = Twilio::TwiML::VoiceResponse.new
|
225
|
-
r.sms('Hello, World', to:
|
230
|
+
r.sms('Hello, World', to: 1_231_231_234, from: 3_453_453_456, status_callback: 'example.com?id=34&action=hey')
|
226
231
|
|
227
232
|
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Sms from="3453453456" statusCallback="example.com?id=34&action=hey" to="1231231234">Hello, World</Sms></Response>')
|
228
233
|
end
|
@@ -317,7 +322,7 @@ describe Twilio::TwiML::VoiceResponse do
|
|
317
322
|
|
318
323
|
it 'should allow Enqueue.task with a dictionary and appending Enqueue' do
|
319
324
|
e = Twilio::TwiML::Enqueue.new(nil, workflow_sid: '123123123')
|
320
|
-
e.task({account_sid: 'AC123123123'})
|
325
|
+
e.task({ account_sid: 'AC123123123' })
|
321
326
|
|
322
327
|
r = Twilio::TwiML::VoiceResponse.new
|
323
328
|
r.append(e)
|
@@ -413,8 +418,9 @@ describe Twilio::TwiML::VoiceResponse do
|
|
413
418
|
|
414
419
|
# For Ruby 2.0, 2.1, 2.2 both opening and closing tags are generated
|
415
420
|
# Ruby 2.4 generates an empty tag
|
416
|
-
expect(r.to_s)
|
417
|
-
|
421
|
+
expect(r.to_s)
|
422
|
+
.to eq('<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Client></Client></Dial></Response>')
|
423
|
+
.or(eq('<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Client/></Dial></Response>'))
|
418
424
|
end
|
419
425
|
|
420
426
|
it 'should allow populated Dial.client' do
|
@@ -455,7 +461,14 @@ describe Twilio::TwiML::VoiceResponse do
|
|
455
461
|
r = Twilio::TwiML::VoiceResponse.new
|
456
462
|
r.append(g)
|
457
463
|
|
458
|
-
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"
|
464
|
+
expect(r.to_s).to eq('<?xml version="1.0" encoding="UTF-8"?>' \
|
465
|
+
'<Response>' \
|
466
|
+
'<Gather>' \
|
467
|
+
'<Say>Hey</Say>' \
|
468
|
+
'<Play>hey.mp3</Play>' \
|
469
|
+
'<Pause/>' \
|
470
|
+
'</Gather>' \
|
471
|
+
'</Response>')
|
459
472
|
end
|
460
473
|
end
|
461
474
|
end
|