freeclimb 4.9.0 → 5.1.0

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 (442) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +49 -27
  5. data/README.md +44 -51
  6. data/docs/AddToConferenceNotificationWebhook.md +42 -0
  7. data/docs/AddToQueueNotificationWebhook.md +34 -0
  8. data/docs/BargeInReason.md +18 -0
  9. data/docs/CallControlWebhook.md +26 -0
  10. data/docs/CallEndedReason.md +38 -0
  11. data/docs/CallStatusWebhook.md +36 -0
  12. data/docs/CompletionResult.md +1 -1
  13. data/docs/CompletionResultStatus.md +17 -0
  14. data/docs/ConferenceRecordingStatusWebhook.md +42 -0
  15. data/docs/ConferenceResult.md +1 -1
  16. data/docs/ConferenceStatusWebhook.md +42 -0
  17. data/docs/CreateConference.md +1 -1
  18. data/docs/CreateConferenceRequest.md +1 -1
  19. data/docs/CreateConferenceWebhook.md +42 -0
  20. data/docs/DequeueWebhook.md +38 -0
  21. data/docs/GetDigitsReason.md +19 -0
  22. data/docs/GetDigitsWebhook.md +40 -0
  23. data/docs/GetSpeechWebhook.md +50 -0
  24. data/docs/InboundCallWebhook.md +36 -0
  25. data/docs/LeaveConferenceWebhook.md +34 -0
  26. data/docs/MachineDetectedWebhook.md +38 -0
  27. data/docs/MachineType.md +2 -2
  28. data/docs/MessageDeliveryWebhook.md +36 -0
  29. data/docs/MessageResult.md +7 -1
  30. data/docs/MessageStatusWebhook.md +38 -0
  31. data/docs/OutDialApiConnectWebhook.md +36 -0
  32. data/docs/OutDialConnectWebhook.md +36 -0
  33. data/docs/OutDialStartWebhook.md +38 -0
  34. data/docs/QueueWaitWebhook.md +40 -0
  35. data/docs/RecordWebhook.md +50 -0
  36. data/docs/RedirectWebhook.md +36 -0
  37. data/docs/RemoveFromQueueNotificationWebhook.md +38 -0
  38. data/docs/SMSTenDLCBrand.md +6 -6
  39. data/docs/SMSTenDLCBrandAltBusinessIdType.md +19 -0
  40. data/docs/SMSTenDLCBrandEntityType.md +20 -0
  41. data/docs/SMSTenDLCBrandIdentityStatus.md +19 -0
  42. data/docs/SMSTenDLCBrandRelationship.md +20 -0
  43. data/docs/SMSTenDLCBrandStockExchange.md +42 -0
  44. data/docs/SMSTenDLCCampaign.md +1 -1
  45. data/docs/SMSTenDLCCampaignStatus.md +17 -0
  46. data/docs/SMSTenDLCPartnerCampaign.md +1 -1
  47. data/docs/SMSTenDLCPartnerCampaignStatus.md +17 -0
  48. data/docs/SMSTollFreeCampaign.md +1 -1
  49. data/docs/SMSTollFreeCampaignRegistrationStatus.md +20 -0
  50. data/docs/TFNCampaign.md +34 -0
  51. data/docs/TranscribeReason.md +20 -0
  52. data/docs/TranscribeTermReason.md +17 -0
  53. data/docs/TranscribeUtterance.md +2 -2
  54. data/docs/TranscribeWebhook.md +62 -0
  55. data/docs/UpdateConferenceRequest.md +1 -1
  56. data/docs/Webhook.md +18 -0
  57. data/freeclimb.gemspec +1 -1
  58. data/lib/freeclimb/api/default_api.rb +18 -18
  59. data/lib/freeclimb/api_client.rb +1 -1
  60. data/lib/freeclimb/api_error.rb +1 -1
  61. data/lib/freeclimb/configuration.rb +2 -4
  62. data/lib/freeclimb/models/account_request.rb +1 -3
  63. data/lib/freeclimb/models/account_result.rb +23 -4
  64. data/lib/freeclimb/models/account_status.rb +1 -1
  65. data/lib/freeclimb/models/account_type.rb +1 -1
  66. data/lib/freeclimb/models/add_to_conference.rb +1 -4
  67. data/lib/freeclimb/models/add_to_conference_notification_webhook.rb +384 -0
  68. data/lib/freeclimb/models/{conference_participant_result_all_of.rb → add_to_queue_notification_webhook.rb} +112 -59
  69. data/lib/freeclimb/models/answered_by.rb +1 -1
  70. data/lib/freeclimb/models/application_list.rb +1 -4
  71. data/lib/freeclimb/models/application_request.rb +1 -3
  72. data/lib/freeclimb/models/application_result.rb +1 -4
  73. data/lib/freeclimb/models/available_number.rb +1 -3
  74. data/lib/freeclimb/models/available_number_list.rb +1 -4
  75. data/lib/freeclimb/models/barge_in_reason.rb +38 -0
  76. data/lib/freeclimb/models/buy_incoming_number_request.rb +1 -3
  77. data/lib/freeclimb/models/{recording_result_all_of.rb → call_control_webhook.rb} +57 -45
  78. data/lib/freeclimb/models/call_direction.rb +1 -1
  79. data/lib/freeclimb/models/call_ended_reason.rb +58 -0
  80. data/lib/freeclimb/models/call_list.rb +1 -4
  81. data/lib/freeclimb/models/call_result.rb +23 -4
  82. data/lib/freeclimb/models/call_status.rb +1 -1
  83. data/lib/freeclimb/models/call_status_webhook.rb +354 -0
  84. data/lib/freeclimb/models/capabilities.rb +1 -3
  85. data/lib/freeclimb/models/completion_request.rb +1 -3
  86. data/lib/freeclimb/models/completion_result.rb +2 -15
  87. data/lib/freeclimb/models/completion_result_status.rb +37 -0
  88. data/lib/freeclimb/models/conference_list.rb +1 -4
  89. data/lib/freeclimb/models/conference_participant_list.rb +1 -4
  90. data/lib/freeclimb/models/conference_participant_result.rb +1 -4
  91. data/lib/freeclimb/models/conference_recording_status_webhook.rb +384 -0
  92. data/lib/freeclimb/models/conference_result.rb +23 -6
  93. data/lib/freeclimb/models/conference_status.rb +1 -1
  94. data/lib/freeclimb/models/conference_status_webhook.rb +387 -0
  95. data/lib/freeclimb/models/create_conference.rb +23 -6
  96. data/lib/freeclimb/models/create_conference_request.rb +23 -5
  97. data/lib/freeclimb/models/create_conference_webhook.rb +387 -0
  98. data/lib/freeclimb/models/create_web_rtc_token.rb +1 -3
  99. data/lib/freeclimb/models/dequeue.rb +3 -7
  100. data/lib/freeclimb/models/dequeue_webhook.rb +365 -0
  101. data/lib/freeclimb/models/enqueue.rb +1 -4
  102. data/lib/freeclimb/models/filter_logs_request.rb +1 -3
  103. data/lib/freeclimb/models/get_digits.rb +1 -4
  104. data/lib/freeclimb/models/get_digits_reason.rb +39 -0
  105. data/lib/freeclimb/models/get_digits_webhook.rb +373 -0
  106. data/lib/freeclimb/models/get_speech.rb +23 -4
  107. data/lib/freeclimb/models/get_speech_reason.rb +1 -1
  108. data/lib/freeclimb/models/get_speech_webhook.rb +423 -0
  109. data/lib/freeclimb/models/grammar_file_built_in.rb +1 -1
  110. data/lib/freeclimb/models/grammar_type.rb +1 -1
  111. data/lib/freeclimb/models/hangup.rb +1 -4
  112. data/lib/freeclimb/models/if_machine.rb +1 -1
  113. data/lib/freeclimb/models/inbound_call_webhook.rb +355 -0
  114. data/lib/freeclimb/models/incoming_number_list.rb +1 -4
  115. data/lib/freeclimb/models/incoming_number_request.rb +1 -3
  116. data/lib/freeclimb/models/incoming_number_result.rb +1 -4
  117. data/lib/freeclimb/models/language.rb +1 -1
  118. data/lib/freeclimb/models/{conference_result_all_of.rb → leave_conference_webhook.rb} +110 -89
  119. data/lib/freeclimb/models/log_level.rb +1 -1
  120. data/lib/freeclimb/models/log_list.rb +1 -4
  121. data/lib/freeclimb/models/log_result.rb +23 -3
  122. data/lib/freeclimb/models/{call_result_all_of.rb → machine_detected_webhook.rb} +96 -119
  123. data/lib/freeclimb/models/machine_type.rb +3 -3
  124. data/lib/freeclimb/models/make_call_request.rb +1 -3
  125. data/lib/freeclimb/models/{message_result_all_of.rb → message_delivery_webhook.rb} +71 -87
  126. data/lib/freeclimb/models/message_direction.rb +1 -1
  127. data/lib/freeclimb/models/message_request.rb +1 -4
  128. data/lib/freeclimb/models/message_result.rb +59 -9
  129. data/lib/freeclimb/models/message_status.rb +1 -1
  130. data/lib/freeclimb/models/{incoming_number_result_all_of.rb → message_status_webhook.rb} +117 -107
  131. data/lib/freeclimb/models/messages_list.rb +1 -4
  132. data/lib/freeclimb/models/mutable_resource_model.rb +1 -3
  133. data/lib/freeclimb/models/out_dial.rb +23 -4
  134. data/lib/freeclimb/models/out_dial_api_connect_webhook.rb +355 -0
  135. data/lib/freeclimb/models/out_dial_connect_webhook.rb +355 -0
  136. data/lib/freeclimb/models/out_dial_start_webhook.rb +366 -0
  137. data/lib/freeclimb/models/pagination_model.rb +1 -3
  138. data/lib/freeclimb/models/park.rb +1 -4
  139. data/lib/freeclimb/models/pause.rb +1 -4
  140. data/lib/freeclimb/models/percl_command.rb +3 -5
  141. data/lib/freeclimb/models/percl_script.rb +2 -4
  142. data/lib/freeclimb/models/play.rb +2 -5
  143. data/lib/freeclimb/models/play_beep.rb +1 -1
  144. data/lib/freeclimb/models/play_early_media.rb +2 -5
  145. data/lib/freeclimb/models/queue_list.rb +2 -5
  146. data/lib/freeclimb/models/queue_member.rb +1 -3
  147. data/lib/freeclimb/models/queue_member_list.rb +2 -5
  148. data/lib/freeclimb/models/queue_request.rb +1 -3
  149. data/lib/freeclimb/models/queue_result.rb +2 -5
  150. data/lib/freeclimb/models/queue_result_status.rb +1 -1
  151. data/lib/freeclimb/models/queue_wait_webhook.rb +375 -0
  152. data/lib/freeclimb/models/record_utterance.rb +2 -5
  153. data/lib/freeclimb/models/record_utterance_term_reason.rb +1 -1
  154. data/lib/freeclimb/models/record_webhook.rb +424 -0
  155. data/lib/freeclimb/models/recording_list.rb +2 -5
  156. data/lib/freeclimb/models/recording_result.rb +2 -5
  157. data/lib/freeclimb/models/redirect.rb +2 -5
  158. data/lib/freeclimb/models/redirect_webhook.rb +355 -0
  159. data/lib/freeclimb/models/reject.rb +2 -5
  160. data/lib/freeclimb/models/remove_from_conference.rb +3 -7
  161. data/lib/freeclimb/models/remove_from_queue_notification_webhook.rb +364 -0
  162. data/lib/freeclimb/models/request_type.rb +1 -1
  163. data/lib/freeclimb/models/say.rb +2 -5
  164. data/lib/freeclimb/models/send_digits.rb +2 -5
  165. data/lib/freeclimb/models/set_dtmf_pass_through.rb +2 -5
  166. data/lib/freeclimb/models/set_listen.rb +2 -5
  167. data/lib/freeclimb/models/set_talk.rb +2 -5
  168. data/lib/freeclimb/models/sms.rb +2 -5
  169. data/lib/freeclimb/models/sms_ten_dlc_brand.rb +6 -67
  170. data/lib/freeclimb/models/sms_ten_dlc_brand_alt_business_id_type.rb +39 -0
  171. data/lib/freeclimb/models/sms_ten_dlc_brand_entity_type.rb +40 -0
  172. data/lib/freeclimb/models/sms_ten_dlc_brand_identity_status.rb +39 -0
  173. data/lib/freeclimb/models/sms_ten_dlc_brand_relationship.rb +40 -0
  174. data/lib/freeclimb/models/sms_ten_dlc_brand_stock_exchange.rb +62 -0
  175. data/lib/freeclimb/models/sms_ten_dlc_brands_list_result.rb +2 -5
  176. data/lib/freeclimb/models/sms_ten_dlc_campaign.rb +2 -15
  177. data/lib/freeclimb/models/sms_ten_dlc_campaign_status.rb +37 -0
  178. data/lib/freeclimb/models/sms_ten_dlc_campaigns_list_result.rb +2 -5
  179. data/lib/freeclimb/models/sms_ten_dlc_partner_campaign.rb +2 -15
  180. data/lib/freeclimb/models/sms_ten_dlc_partner_campaign_brand.rb +1 -3
  181. data/lib/freeclimb/models/sms_ten_dlc_partner_campaign_status.rb +37 -0
  182. data/lib/freeclimb/models/sms_ten_dlc_partner_campaigns_list_result.rb +2 -5
  183. data/lib/freeclimb/models/sms_toll_free_campaign.rb +2 -15
  184. data/lib/freeclimb/models/sms_toll_free_campaign_registration_status.rb +40 -0
  185. data/lib/freeclimb/models/sms_toll_free_campaigns_list_result.rb +2 -5
  186. data/lib/freeclimb/models/start_record_call.rb +3 -7
  187. data/lib/freeclimb/models/terminate_conference.rb +3 -7
  188. data/lib/freeclimb/models/tfn.rb +1 -3
  189. data/lib/freeclimb/models/{application_result_all_of.rb → tfn_campaign.rb} +129 -72
  190. data/lib/freeclimb/models/transcribe_reason.rb +40 -0
  191. data/lib/freeclimb/models/transcribe_term_reason.rb +37 -0
  192. data/lib/freeclimb/models/transcribe_utterance.rb +4 -7
  193. data/lib/freeclimb/models/{transcribe_utterance_all_of_record.rb → transcribe_utterance_record.rb} +8 -10
  194. data/lib/freeclimb/models/transcribe_webhook.rb +481 -0
  195. data/lib/freeclimb/models/unpark.rb +3 -7
  196. data/lib/freeclimb/models/update_call_request.rb +23 -3
  197. data/lib/freeclimb/models/update_call_request_status.rb +1 -1
  198. data/lib/freeclimb/models/update_conference_participant_request.rb +1 -3
  199. data/lib/freeclimb/models/update_conference_request.rb +23 -5
  200. data/lib/freeclimb/models/update_conference_request_status.rb +1 -1
  201. data/lib/freeclimb/models/{call_list_all_of.rb → webhook.rb} +18 -17
  202. data/lib/freeclimb/utils/request_verifier.rb +51 -51
  203. data/lib/freeclimb/utils/signature_information.rb +34 -34
  204. data/lib/freeclimb/version.rb +2 -2
  205. data/lib/freeclimb.rb +42 -49
  206. data/openapi.json +1756 -648
  207. data/package.json +3 -1
  208. data/spec/api/default_api_spec.rb +97 -149
  209. data/spec/factories.rb +78 -78
  210. data/spec/models/account_request_spec.rb +168 -19
  211. data/spec/models/account_result_spec.rb +878 -91
  212. data/spec/models/account_status_spec.rb +2 -1
  213. data/spec/models/account_type_spec.rb +2 -1
  214. data/spec/models/add_to_conference_notification_webhook_spec.rb +1515 -0
  215. data/spec/models/add_to_conference_spec.rb +725 -43
  216. data/spec/models/add_to_queue_notification_webhook_spec.rb +1106 -0
  217. data/spec/models/answered_by_spec.rb +2 -1
  218. data/spec/models/application_list_spec.rb +504 -41
  219. data/spec/models/application_request_spec.rb +553 -34
  220. data/spec/models/application_result_spec.rb +997 -52
  221. data/spec/models/available_number_list_spec.rb +504 -41
  222. data/spec/models/available_number_spec.rb +536 -49
  223. data/spec/models/barge_in_reason_spec.rb +78 -0
  224. data/spec/models/buy_incoming_number_request_spec.rb +245 -22
  225. data/spec/models/call_control_webhook_spec.rb +664 -0
  226. data/spec/models/call_direction_spec.rb +2 -1
  227. data/spec/models/call_ended_reason_spec.rb +398 -0
  228. data/spec/models/call_list_spec.rb +504 -41
  229. data/spec/models/call_result_spec.rb +1712 -272
  230. data/spec/models/call_status_spec.rb +2 -1
  231. data/spec/models/call_status_webhook_spec.rb +1292 -0
  232. data/spec/models/capabilities_spec.rb +309 -28
  233. data/spec/models/completion_request_spec.rb +89 -17
  234. data/spec/models/completion_result_spec.rb +184 -47
  235. data/spec/models/completion_result_status_spec.rb +62 -0
  236. data/spec/models/conference_list_spec.rb +504 -41
  237. data/spec/models/conference_participant_list_spec.rb +504 -41
  238. data/spec/models/conference_participant_result_spec.rb +804 -48
  239. data/spec/models/conference_recording_status_webhook_spec.rb +1515 -0
  240. data/spec/models/conference_result_spec.rb +1215 -224
  241. data/spec/models/conference_status_spec.rb +2 -1
  242. data/spec/models/conference_status_webhook_spec.rb +1515 -0
  243. data/spec/models/create_conference_request_spec.rb +391 -46
  244. data/spec/models/create_conference_spec.rb +450 -49
  245. data/spec/models/create_conference_webhook_spec.rb +1515 -0
  246. data/spec/models/create_web_rtc_token_spec.rb +227 -22
  247. data/spec/models/dequeue_spec.rb +2 -1
  248. data/spec/models/dequeue_webhook_spec.rb +1300 -0
  249. data/spec/models/enqueue_spec.rb +322 -25
  250. data/spec/models/filter_logs_request_spec.rb +91 -16
  251. data/spec/models/get_digits_reason_spec.rb +94 -0
  252. data/spec/models/get_digits_spec.rb +581 -44
  253. data/spec/models/get_digits_webhook_spec.rb +1426 -0
  254. data/spec/models/get_speech_reason_spec.rb +2 -1
  255. data/spec/models/get_speech_spec.rb +856 -69
  256. data/spec/models/get_speech_webhook_spec.rb +1927 -0
  257. data/spec/models/grammar_file_built_in_spec.rb +2 -1
  258. data/spec/models/grammar_type_spec.rb +2 -1
  259. data/spec/models/hangup_spec.rb +91 -16
  260. data/spec/models/if_machine_spec.rb +2 -1
  261. data/spec/models/inbound_call_webhook_spec.rb +1211 -0
  262. data/spec/models/incoming_number_list_spec.rb +504 -41
  263. data/spec/models/incoming_number_request_spec.rb +245 -22
  264. data/spec/models/incoming_number_result_spec.rb +1430 -235
  265. data/spec/models/language_spec.rb +2 -1
  266. data/spec/models/leave_conference_webhook_spec.rb +1106 -0
  267. data/spec/models/log_level_spec.rb +2 -1
  268. data/spec/models/log_list_spec.rb +504 -41
  269. data/spec/models/log_result_spec.rb +556 -57
  270. data/spec/models/machine_detected_webhook_spec.rb +1313 -0
  271. data/spec/models/machine_type_spec.rb +11 -10
  272. data/spec/models/make_call_request_spec.rb +749 -44
  273. data/spec/models/message_delivery_webhook_spec.rb +1189 -0
  274. data/spec/models/message_direction_spec.rb +2 -1
  275. data/spec/models/message_request_spec.rb +672 -41
  276. data/spec/models/message_result_spec.rb +1644 -204
  277. data/spec/models/message_status_spec.rb +2 -1
  278. data/spec/models/message_status_webhook_spec.rb +1327 -0
  279. data/spec/models/messages_list_spec.rb +504 -41
  280. data/spec/models/mutable_resource_model_spec.rb +304 -25
  281. data/spec/models/out_dial_api_connect_webhook_spec.rb +1211 -0
  282. data/spec/models/out_dial_connect_webhook_spec.rb +1211 -0
  283. data/spec/models/out_dial_spec.rb +759 -62
  284. data/spec/models/out_dial_start_webhook_spec.rb +1316 -0
  285. data/spec/models/pagination_model_spec.rb +445 -34
  286. data/spec/models/park_spec.rb +245 -22
  287. data/spec/models/pause_spec.rb +73 -16
  288. data/spec/models/percl_command_spec.rb +88 -16
  289. data/spec/models/percl_script_spec.rb +73 -20
  290. data/spec/models/play_beep_spec.rb +2 -1
  291. data/spec/models/play_early_media_spec.rb +91 -16
  292. data/spec/models/play_spec.rb +209 -22
  293. data/spec/models/queue_list_spec.rb +504 -41
  294. data/spec/models/queue_member_list_spec.rb +504 -41
  295. data/spec/models/queue_member_spec.rb +363 -28
  296. data/spec/models/queue_request_spec.rb +150 -19
  297. data/spec/models/queue_result_spec.rb +801 -52
  298. data/spec/models/queue_result_status_spec.rb +2 -1
  299. data/spec/models/queue_wait_webhook_spec.rb +1389 -0
  300. data/spec/models/record_utterance_spec.rb +463 -34
  301. data/spec/models/record_utterance_term_reason_spec.rb +2 -1
  302. data/spec/models/record_webhook_spec.rb +1917 -0
  303. data/spec/models/recording_list_spec.rb +504 -41
  304. data/spec/models/recording_result_spec.rb +672 -41
  305. data/spec/models/redirect_spec.rb +91 -16
  306. data/spec/models/redirect_webhook_spec.rb +1211 -0
  307. data/spec/models/reject_spec.rb +91 -16
  308. data/spec/models/remove_from_conference_spec.rb +2 -1
  309. data/spec/models/remove_from_queue_notification_webhook_spec.rb +1305 -0
  310. data/spec/models/request_type_spec.rb +2 -1
  311. data/spec/models/say_spec.rb +286 -25
  312. data/spec/models/send_digits_spec.rb +209 -22
  313. data/spec/models/set_dtmf_pass_through_spec.rb +73 -16
  314. data/spec/models/set_listen_spec.rb +73 -16
  315. data/spec/models/set_talk_spec.rb +73 -16
  316. data/spec/models/sms_spec.rb +322 -25
  317. data/spec/models/sms_ten_dlc_brand_alt_business_id_type_spec.rb +94 -0
  318. data/spec/models/sms_ten_dlc_brand_entity_type_spec.rb +110 -0
  319. data/spec/models/sms_ten_dlc_brand_identity_status_spec.rb +94 -0
  320. data/spec/models/sms_ten_dlc_brand_relationship_spec.rb +110 -0
  321. data/spec/models/sms_ten_dlc_brand_spec.rb +2585 -484
  322. data/spec/models/sms_ten_dlc_brand_stock_exchange_spec.rb +462 -0
  323. data/spec/models/sms_ten_dlc_brands_list_result_spec.rb +504 -41
  324. data/spec/models/sms_ten_dlc_campaign_spec.rb +2604 -274
  325. data/spec/models/sms_ten_dlc_campaign_status_spec.rb +62 -0
  326. data/spec/models/sms_ten_dlc_campaigns_list_result_spec.rb +504 -41
  327. data/spec/models/sms_ten_dlc_partner_campaign_brand_spec.rb +835 -55
  328. data/spec/models/sms_ten_dlc_partner_campaign_spec.rb +2078 -166
  329. data/spec/models/sms_ten_dlc_partner_campaign_status_spec.rb +62 -0
  330. data/spec/models/sms_ten_dlc_partner_campaigns_list_result_spec.rb +504 -41
  331. data/spec/models/sms_toll_free_campaign_registration_status_spec.rb +110 -0
  332. data/spec/models/sms_toll_free_campaign_spec.rb +555 -71
  333. data/spec/models/sms_toll_free_campaigns_list_result_spec.rb +504 -41
  334. data/spec/models/start_record_call_spec.rb +2 -1
  335. data/spec/models/terminate_conference_spec.rb +2 -1
  336. data/spec/models/tfn_campaign_spec.rb +1089 -0
  337. data/spec/models/tfn_spec.rb +91 -16
  338. data/spec/models/transcribe_reason_spec.rb +110 -0
  339. data/spec/models/transcribe_term_reason_spec.rb +62 -0
  340. data/spec/models/{transcribe_utterance_all_of_record_spec.rb → transcribe_utterance_record_spec.rb} +214 -45
  341. data/spec/models/transcribe_utterance_spec.rb +424 -47
  342. data/spec/models/transcribe_webhook_spec.rb +2418 -0
  343. data/spec/models/unpark_spec.rb +2 -1
  344. data/spec/models/update_call_request_spec.rb +101 -34
  345. data/spec/models/update_call_request_status_spec.rb +2 -1
  346. data/spec/models/update_conference_participant_request_spec.rb +219 -19
  347. data/spec/models/update_conference_request_spec.rb +265 -58
  348. data/spec/models/update_conference_request_status_spec.rb +2 -1
  349. data/spec/models/webhook_spec.rb +228 -0
  350. data/spec/quickstart_spec.rb +7 -7
  351. data/spec/spec_helper.rb +1 -1
  352. data/spec/utils/request_verifier_spec.rb +123 -123
  353. data/spec/utils/signature_information_spec.rb +36 -36
  354. data/yarn.lock +91 -91
  355. metadata +247 -186
  356. data/docs/AccountResultAllOf.md +0 -30
  357. data/docs/AddToConferenceAllOf.md +0 -36
  358. data/docs/ApplicationListAllOf.md +0 -18
  359. data/docs/ApplicationResultAllOf.md +0 -34
  360. data/docs/AvailableNumberListAllOf.md +0 -18
  361. data/docs/CallListAllOf.md +0 -18
  362. data/docs/CallResultAllOf.md +0 -48
  363. data/docs/ConferenceListAllOf.md +0 -18
  364. data/docs/ConferenceParticipantListAllOf.md +0 -18
  365. data/docs/ConferenceParticipantResultAllOf.md +0 -30
  366. data/docs/ConferenceResultAllOf.md +0 -36
  367. data/docs/CreateConferenceAllOf.md +0 -28
  368. data/docs/EnqueueAllOf.md +0 -24
  369. data/docs/GetDigitsAllOf.md +0 -34
  370. data/docs/GetSpeechAllOf.md +0 -42
  371. data/docs/HangupAllOf.md +0 -18
  372. data/docs/IncomingNumberListAllOf.md +0 -18
  373. data/docs/IncomingNumberResultAllOf.md +0 -42
  374. data/docs/LogListAllOf.md +0 -18
  375. data/docs/MessageRequestAllOf.md +0 -26
  376. data/docs/MessageResultAllOf.md +0 -40
  377. data/docs/MessagesListAllOf.md +0 -18
  378. data/docs/OutDialAllOf.md +0 -36
  379. data/docs/ParkAllOf.md +0 -22
  380. data/docs/PauseAllOf.md +0 -18
  381. data/docs/PlayAllOf.md +0 -22
  382. data/docs/PlayEarlyMediaAllOf.md +0 -18
  383. data/docs/QueueListAllOf.md +0 -18
  384. data/docs/QueueMemberListAllOf.md +0 -18
  385. data/docs/QueueResultAllOf.md +0 -30
  386. data/docs/RecordUtteranceAllOf.md +0 -30
  387. data/docs/RecordingListAllOf.md +0 -18
  388. data/docs/RecordingResultAllOf.md +0 -26
  389. data/docs/RedirectAllOf.md +0 -18
  390. data/docs/RejectAllOf.md +0 -18
  391. data/docs/RemoveFromConferenceAllOf.md +0 -18
  392. data/docs/SMSTenDLCBrandsListResultAllOf.md +0 -18
  393. data/docs/SMSTenDLCCampaignsListResultAllOf.md +0 -18
  394. data/docs/SMSTenDLCPartnerCampaignsListResultAllOf.md +0 -18
  395. data/docs/SMSTollFreeCampaignsListResultAllOf.md +0 -18
  396. data/docs/SayAllOf.md +0 -24
  397. data/docs/SendDigitsAllOf.md +0 -22
  398. data/docs/SetDTMFPassThroughAllOf.md +0 -18
  399. data/docs/SetListenAllOf.md +0 -18
  400. data/docs/SetTalkAllOf.md +0 -18
  401. data/docs/SmsAllOf.md +0 -24
  402. data/docs/TerminateConferenceAllOf.md +0 -18
  403. data/docs/TranscribeUtteranceAllOf.md +0 -28
  404. data/docs/TranscribeUtteranceAllOfRecord.md +0 -22
  405. data/lib/freeclimb/models/account_result_all_of.rb +0 -289
  406. data/lib/freeclimb/models/add_to_conference_all_of.rb +0 -318
  407. data/lib/freeclimb/models/application_list_all_of.rb +0 -226
  408. data/lib/freeclimb/models/available_number_list_all_of.rb +0 -226
  409. data/lib/freeclimb/models/conference_list_all_of.rb +0 -226
  410. data/lib/freeclimb/models/conference_participant_list_all_of.rb +0 -226
  411. data/lib/freeclimb/models/create_conference_all_of.rb +0 -280
  412. data/lib/freeclimb/models/enqueue_all_of.rb +0 -266
  413. data/lib/freeclimb/models/get_digits_all_of.rb +0 -310
  414. data/lib/freeclimb/models/get_speech_all_of.rb +0 -354
  415. data/lib/freeclimb/models/hangup_all_of.rb +0 -224
  416. data/lib/freeclimb/models/incoming_number_list_all_of.rb +0 -226
  417. data/lib/freeclimb/models/log_list_all_of.rb +0 -226
  418. data/lib/freeclimb/models/message_request_all_of.rb +0 -279
  419. data/lib/freeclimb/models/messages_list_all_of.rb +0 -227
  420. data/lib/freeclimb/models/out_dial_all_of.rb +0 -329
  421. data/lib/freeclimb/models/park_all_of.rb +0 -252
  422. data/lib/freeclimb/models/pause_all_of.rb +0 -228
  423. data/lib/freeclimb/models/play_all_of.rb +0 -248
  424. data/lib/freeclimb/models/play_early_media_all_of.rb +0 -228
  425. data/lib/freeclimb/models/queue_list_all_of.rb +0 -226
  426. data/lib/freeclimb/models/queue_member_list_all_of.rb +0 -226
  427. data/lib/freeclimb/models/queue_result_all_of.rb +0 -291
  428. data/lib/freeclimb/models/record_utterance_all_of.rb +0 -288
  429. data/lib/freeclimb/models/recording_list_all_of.rb +0 -226
  430. data/lib/freeclimb/models/redirect_all_of.rb +0 -228
  431. data/lib/freeclimb/models/reject_all_of.rb +0 -224
  432. data/lib/freeclimb/models/say_all_of.rb +0 -260
  433. data/lib/freeclimb/models/send_digits_all_of.rb +0 -248
  434. data/lib/freeclimb/models/set_dtmf_pass_through_all_of.rb +0 -224
  435. data/lib/freeclimb/models/set_listen_all_of.rb +0 -224
  436. data/lib/freeclimb/models/set_talk_all_of.rb +0 -224
  437. data/lib/freeclimb/models/sms_all_of.rb +0 -266
  438. data/lib/freeclimb/models/sms_ten_dlc_brands_list_result_all_of.rb +0 -226
  439. data/lib/freeclimb/models/sms_ten_dlc_campaigns_list_result_all_of.rb +0 -226
  440. data/lib/freeclimb/models/sms_ten_dlc_partner_campaigns_list_result_all_of.rb +0 -226
  441. data/lib/freeclimb/models/sms_toll_free_campaigns_list_result_all_of.rb +0 -226
  442. data/lib/freeclimb/models/transcribe_utterance_all_of.rb +0 -281
data/spec/spec_helper.rb CHANGED
@@ -6,7 +6,7 @@
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@freeclimb.com
8
8
  Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 5.4.0
9
+ OpenAPI Generator version: 7.9.0
10
10
 
11
11
  =end
12
12
 
@@ -1,149 +1,149 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'RequestVerifier' do
4
- before do
5
- @request_verifier_object = Freeclimb::RequestVerifier.new()
6
- end
4
+ before do
5
+ @request_verifier_object = Freeclimb::RequestVerifier.new()
6
+ end
7
7
 
8
- describe '#check_request_body' do
9
- context 'Request Body is empty' do
10
- it 'throws "Request Body cannot be empty or null"' do
11
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
12
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
13
- tolerance = 5 * 60
14
- request_body = ""
15
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Request Body cannot be empty or null")
16
- end
17
- end
18
- context 'Request Body is nil' do
19
- it 'throws "Request Body cannot be empty or null"' do
20
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
21
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
22
- tolerance = 5 * 60
23
- request_body = nil
24
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Request Body cannot be empty or null")
25
- end
8
+ describe '#check_request_body' do
9
+ context 'Request Body is empty' do
10
+ it 'throws "Request Body cannot be empty or null"' do
11
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
12
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
13
+ tolerance = 5 * 60
14
+ request_body = ""
15
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Request Body cannot be empty or null")
26
16
  end
27
17
  end
18
+ context 'Request Body is nil' do
19
+ it 'throws "Request Body cannot be empty or null"' do
20
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
21
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
22
+ tolerance = 5 * 60
23
+ request_body = nil
24
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Request Body cannot be empty or null")
25
+ end
26
+ end
27
+ end
28
28
 
29
- describe '#check_request_header' do
30
- context 'signatures are not present' do
31
- it 'throws "Error with request header, signatures are not present"' do
32
- request_header = "t=1679944186,"
33
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
34
- tolerance = 5 * 60
35
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
36
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Error with request header, signatures are not present")
37
- end
38
- end
39
- context 'timestamp is not present' do
40
- it 'throws "Error with request header, timestamp is not present"' do
41
- request_header = "v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
42
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
43
- tolerance = 5 * 60
44
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
45
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Error with request header, timestamp is not present")
46
- end
47
- end
48
- context 'Request header is empty' do
49
- it 'throws "Error with request header, Request header is empty"' do
50
- request_header = ""
51
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
52
- tolerance = 5 * 60
53
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
54
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Error with request header, Request header is empty")
55
- end
29
+ describe '#check_request_header' do
30
+ context 'signatures are not present' do
31
+ it 'throws "Error with request header, signatures are not present"' do
32
+ request_header = "t=1679944186,"
33
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
34
+ tolerance = 5 * 60
35
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
36
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Error with request header, signatures are not present")
56
37
  end
57
38
  end
39
+ context 'timestamp is not present' do
40
+ it 'throws "Error with request header, timestamp is not present"' do
41
+ request_header = "v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
42
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
43
+ tolerance = 5 * 60
44
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
45
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Error with request header, timestamp is not present")
46
+ end
47
+ end
48
+ context 'Request header is empty' do
49
+ it 'throws "Error with request header, Request header is empty"' do
50
+ request_header = ""
51
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
52
+ tolerance = 5 * 60
53
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
54
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Error with request header, Request header is empty")
55
+ end
56
+ end
57
+ end
58
58
 
59
- describe '#check_signing_secret' do
60
- context 'Signing secret is empty' do
61
- it 'throws "Signing secret cannot be empty or null"' do
62
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
63
- signing_secret = ""
64
- tolerance = 5 * 60
65
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
66
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Signing secret cannot be empty or null")
67
- end
68
- end
69
- context 'Signing secret is nil' do
70
- it 'throws "Signing secret cannot be empty or null"' do
71
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
72
- signing_secret = nil
73
- tolerance = 5 * 60
74
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
75
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Signing secret cannot be empty or null")
76
- end
59
+ describe '#check_signing_secret' do
60
+ context 'Signing secret is empty' do
61
+ it 'throws "Signing secret cannot be empty or null"' do
62
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
63
+ signing_secret = ""
64
+ tolerance = 5 * 60
65
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
66
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Signing secret cannot be empty or null")
77
67
  end
78
68
  end
69
+ context 'Signing secret is nil' do
70
+ it 'throws "Signing secret cannot be empty or null"' do
71
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
72
+ signing_secret = nil
73
+ tolerance = 5 * 60
74
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
75
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Signing secret cannot be empty or null")
76
+ end
77
+ end
78
+ end
79
79
 
80
- describe '#check_tolerance' do
81
- context 'Tolerance value is a negative value' do
82
- it 'throws "Tolerance value must be a positive integer"' do
83
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
84
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
85
- tolerance = -5
86
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
87
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Tolerance value must be a positive integer")
88
- end
89
- end
90
- context 'Tolerance value is 0' do
91
- it 'throws "Tolerance value must be a positive integer"' do
92
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
93
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
94
- tolerance = 0
95
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
96
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Tolerance value must be a positive integer")
97
- end
98
- end
99
- context 'Tolerance value is NaN' do
100
- it 'throws "Tolerance value must be a positive integer"' do
101
- request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
102
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
103
- tolerance = Float::NAN
104
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
105
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Tolerance value must be a positive integer")
106
- end
80
+ describe '#check_tolerance' do
81
+ context 'Tolerance value is a negative value' do
82
+ it 'throws "Tolerance value must be a positive integer"' do
83
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
84
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
85
+ tolerance = -5
86
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
87
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Tolerance value must be a positive integer")
107
88
  end
108
89
  end
90
+ context 'Tolerance value is 0' do
91
+ it 'throws "Tolerance value must be a positive integer"' do
92
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
93
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
94
+ tolerance = 0
95
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
96
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Tolerance value must be a positive integer")
97
+ end
98
+ end
99
+ context 'Tolerance value is NaN' do
100
+ it 'throws "Tolerance value must be a positive integer"' do
101
+ request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
102
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
103
+ tolerance = Float::NAN
104
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
105
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Tolerance value must be a positive integer")
106
+ end
107
+ end
108
+ end
109
109
 
110
- describe '#verify_tolerance' do
111
- context 'Request plus tolerance is not less than the current datetime' do
112
- it 'throws "Request time exceeded tolerance threshold. Request: 1900871395, CurrentTime: currentTimeValue, tolerance, toleranceValue"' do
113
- currentTime = DateTime.now.strftime('%s').to_i
114
- timeCalculation = currentTime - (6 * 60)
115
- request_header = "t=#{timeCalculation},v1=1d798c86e977ff734dec3a8b8d67fe8621dcc1df46ef4212e0bfe2e122b01bfd,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
116
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
117
- tolerance = (5 * 60)
118
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
119
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Request time exceeded tolerance threshold. Request: #{timeCalculation}" + ", CurrentTime: " + currentTime.to_s + ", tolerance: " + tolerance.to_s)
120
- end
110
+ describe '#verify_tolerance' do
111
+ context 'Request plus tolerance is not less than the current datetime' do
112
+ it 'throws "Request time exceeded tolerance threshold. Request: 1900871395, CurrentTime: currentTimeValue, tolerance, toleranceValue"' do
113
+ currentTime = DateTime.now.strftime('%s').to_i
114
+ timeCalculation = currentTime - (6 * 60)
115
+ request_header = "t=#{timeCalculation},v1=1d798c86e977ff734dec3a8b8d67fe8621dcc1df46ef4212e0bfe2e122b01bfd,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
116
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
117
+ tolerance = (5 * 60)
118
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
119
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Request time exceeded tolerance threshold. Request: #{timeCalculation}" + ", CurrentTime: " + currentTime.to_s + ", tolerance: " + tolerance.to_s)
121
120
  end
122
121
  end
122
+ end
123
123
 
124
- describe '#verify_signature' do
125
- context 'Signature request is unverified, signing secret does not exist in signatures, potential typo' do
126
- it 'throws "Unverified signature request, If this request was unexpected, it may be from a bad actor. Please proceed with caution. If the request was exepected, please check any typos or issues with the signingSecret"' do
127
- currentTime = DateTime.now.strftime('%s').to_i
128
- request_header = "t=#{currentTime},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
129
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7794"
130
- tolerance = (5 * 60)
131
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
132
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Unverified signature request, If this request was unexpected, it may be from a bad actor. Please proceed with caution. If the request was exepected, please check any typos or issues with the signingSecret")
133
- end
124
+ describe '#verify_signature' do
125
+ context 'Signature request is unverified, signing secret does not exist in signatures, potential typo' do
126
+ it 'throws "Unverified signature request, If this request was unexpected, it may be from a bad actor. Please proceed with caution. If the request was exepected, please check any typos or issues with the signingSecret"' do
127
+ currentTime = DateTime.now.strftime('%s').to_i
128
+ request_header = "t=#{currentTime},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
129
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7794"
130
+ tolerance = (5 * 60)
131
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
132
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.to raise_error("Unverified signature request, If this request was unexpected, it may be from a bad actor. Please proceed with caution. If the request was exepected, please check any typos or issues with the signingSecret")
134
133
  end
135
134
  end
135
+ end
136
136
 
137
- describe '#verify_request_signature' do
138
- context 'Request is valid' do
139
- it 'No errors are thrown' do
140
- request_header = "t=2130000000,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=6835006e70c9b9f610e8fb3a8b36b52b3f28c12d0a2dab75091c46ca7ec11b20"
141
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
142
- tolerance = (5 * 60)
143
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
144
- expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.not_to raise_error
145
- end
137
+ describe '#verify_request_signature' do
138
+ context 'Request is valid' do
139
+ it 'No errors are thrown' do
140
+ request_header = "t=2130000000,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=6835006e70c9b9f610e8fb3a8b36b52b3f28c12d0a2dab75091c46ca7ec11b20"
141
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
142
+ tolerance = (5 * 60)
143
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
144
+ expect { Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance) }.not_to raise_error
146
145
  end
147
146
  end
147
+ end
148
148
 
149
149
  end
@@ -1,45 +1,45 @@
1
1
  require 'spec_helper'
2
2
  $time_stamp = 1679944186
3
- $FIXNUM_MAX = (2**(0.size * 8 -2) -1)
3
+ $FIXNUM_MAX = (2**(0.size * 8 - 2) - 1)
4
4
  describe 'SignatureInformation' do
5
- before do
6
- @request_header = "t=#{$time_stamp},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
5
+ before do
6
+ @request_header = "t=#{$time_stamp},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
7
+ @signature_information_object = Freeclimb::SignatureInformation.new(@request_header)
8
+ end
9
+ describe '#is_request_time_valid' do
10
+ context 'request time is within tolerance threshold' do
11
+ it 'returns true' do
12
+ @time_calculation = DateTime.now.strftime('%s').to_i
13
+ @request_header = "t=#{@time_calculation},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
14
+ @signature_information_object = Freeclimb::SignatureInformation.new(@request_header)
15
+ tolerance = 5 * 60
16
+ expect(@signature_information_object.is_request_time_valid(tolerance)).to be true
17
+ end
18
+ end
19
+ context 'request time is not within tolerance threshold' do
20
+ it 'returns false since it does not match condition of request time being within tolerance threshold' do
21
+ @time_calculation = DateTime.now.strftime('%s').to_i - (600 * 60)
22
+ @request_header = "t=#{@time_calculation},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
7
23
  @signature_information_object = Freeclimb::SignatureInformation.new(@request_header)
24
+ tolerance = 500 * 60
25
+ expect(@signature_information_object.is_request_time_valid(tolerance)).to be false
26
+ end
8
27
  end
9
- describe '#is_request_time_valid' do
10
- context 'request time is within tolerance threshold' do
11
- it 'returns true' do
12
- @time_calculation = DateTime.now.strftime('%s').to_i
13
- @request_header = "t=#{@time_calculation},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
14
- @signature_information_object = Freeclimb::SignatureInformation.new(@request_header)
15
- tolerance = 5 * 60
16
- expect(@signature_information_object.is_request_time_valid(tolerance)).to be true
17
- end
18
- end
19
- context 'request time is not within tolerance threshold' do
20
- it 'returns false since it does not match condition of request time being within tolerance threshold' do
21
- @time_calculation = DateTime.now.strftime('%s').to_i - (600 * 60)
22
- @request_header = "t=#{@time_calculation},v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
23
- @signature_information_object = Freeclimb::SignatureInformation.new(@request_header)
24
- tolerance = 500 * 60
25
- expect(@signature_information_object.is_request_time_valid(tolerance)).to be false
26
- end
28
+ end
29
+ describe '#is_signature_safe' do
30
+ context 'signingSecret exists in signature array' do
31
+ it 'returns true' do
32
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
33
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
34
+ expect(@signature_information_object.is_signature_safe(request_body, signing_secret)).to be true
27
35
  end
28
36
  end
29
- describe '#is_signature_safe' do
30
- context 'signingSecret exists in signature array' do
31
- it 'returns true' do
32
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
33
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
34
- expect(@signature_information_object.is_signature_safe(request_body, signing_secret)).to be true
35
- end
36
- end
37
- context 'signingSecret does not exists in signature array' do
38
- it 'returns false since it does not match condition of signingSecret being within signature array' do
39
- request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
40
- signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7794"
41
- expect(@signature_information_object.is_signature_safe(request_body, signing_secret)).to be false
42
- end
43
- end
37
+ context 'signingSecret does not exists in signature array' do
38
+ it 'returns false since it does not match condition of signingSecret being within signature array' do
39
+ request_body = "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
40
+ signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7794"
41
+ expect(@signature_information_object.is_signature_safe(request_body, signing_secret)).to be false
42
+ end
44
43
  end
44
+ end
45
45
  end