auth0 5.2.0 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/CHANGELOG.md +48 -0
  4. data/Gemfile +1 -0
  5. data/README.md +10 -8
  6. data/auth0.gemspec +2 -1
  7. data/lib/auth0/api/authentication_endpoints.rb +40 -16
  8. data/lib/auth0/api/v2/actions.rb +210 -0
  9. data/lib/auth0/api/v2/branding.rb +0 -1
  10. data/lib/auth0/api/v2/grants.rb +49 -0
  11. data/lib/auth0/api/v2/logs.rb +2 -2
  12. data/lib/auth0/api/v2/organizations.rb +19 -3
  13. data/lib/auth0/api/v2/roles.rb +7 -3
  14. data/lib/auth0/api/v2.rb +4 -0
  15. data/lib/auth0/exception.rb +12 -0
  16. data/lib/auth0/mixins/api_token_struct.rb +0 -1
  17. data/lib/auth0/mixins/httpproxy.rb +77 -34
  18. data/lib/auth0/mixins/initializer.rb +2 -3
  19. data/lib/auth0/mixins/token_management.rb +32 -0
  20. data/lib/auth0/mixins/validation.rb +1 -1
  21. data/lib/auth0/mixins.rb +2 -0
  22. data/lib/auth0/version.rb +1 -1
  23. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +53 -23
  24. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +49 -18
  25. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +49 -18
  26. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +46 -15
  27. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +49 -79
  28. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +49 -80
  29. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +74 -21
  30. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +53 -14
  31. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +106 -48
  32. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +62 -19
  33. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +57 -22
  34. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +38 -20
  35. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +37 -19
  36. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +38 -23
  37. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +42 -26
  38. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +42 -26
  39. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +38 -20
  40. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +39 -27
  41. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +44 -82
  42. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +39 -27
  43. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +38 -20
  44. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +38 -20
  45. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +43 -56
  46. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +39 -28
  47. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +43 -57
  48. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +43 -24
  49. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +236 -96
  50. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +52 -27
  51. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +39 -25
  52. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +235 -96
  53. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +38 -20
  54. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +43 -57
  55. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +45 -82
  56. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +15 -16
  57. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +15 -16
  58. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +15 -16
  59. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +14 -15
  60. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +14 -15
  61. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +14 -15
  62. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +15 -15
  63. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +15 -15
  64. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +15 -16
  65. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +29 -27
  66. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +15 -16
  67. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +16 -17
  68. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +40 -32
  69. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +40 -30
  70. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +40 -32
  71. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +38 -20
  72. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +37 -28
  73. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +37 -19
  74. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +34 -16
  75. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +36 -27
  76. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +36 -28
  77. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +36 -28
  78. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +36 -28
  79. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +37 -19
  80. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +38 -23
  81. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +76 -46
  82. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +46 -25
  83. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +84 -48
  84. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +77 -47
  85. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +116 -71
  86. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +76 -39
  87. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +76 -43
  88. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +43 -23
  89. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +224 -196
  90. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +224 -196
  91. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +38 -25
  92. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +39 -39
  93. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +41 -40
  94. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +38 -26
  95. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +229 -189
  96. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +40 -32
  97. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +38 -20
  98. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +38 -20
  99. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +38 -20
  100. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +38 -20
  101. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +39 -24
  102. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +39 -24
  103. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +146 -23
  104. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +146 -23
  105. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +131 -24
  106. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +40 -25
  107. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +38 -20
  108. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +39 -32
  109. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +38 -31
  110. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +42 -30
  111. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +38 -30
  112. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +37 -30
  113. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +37 -30
  114. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +37 -30
  115. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +37 -30
  116. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +37 -29
  117. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +39 -29
  118. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +37 -30
  119. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +38 -31
  120. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +39 -31
  121. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +38 -31
  122. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +36 -26
  123. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +36 -26
  124. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +38 -20
  125. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +38 -20
  126. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +40 -27
  127. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +40 -27
  128. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +39 -26
  129. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +40 -27
  130. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +80 -24
  131. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +82 -25
  132. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +59 -27
  133. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +68 -26
  134. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +78 -49
  135. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +84 -28
  136. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +40 -27
  137. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +42 -29
  138. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +42 -29
  139. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +38 -23
  140. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +38 -27
  141. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +72 -59
  142. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +38 -25
  143. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +38 -25
  144. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +72 -58
  145. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +72 -58
  146. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +39 -26
  147. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +39 -26
  148. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +40 -32
  149. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +38 -20
  150. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +39 -35
  151. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +37 -25
  152. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +36 -24
  153. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +36 -24
  154. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +36 -24
  155. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +37 -28
  156. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +37 -28
  157. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +37 -28
  158. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +38 -28
  159. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +36 -24
  160. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +38 -29
  161. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +38 -28
  162. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +39 -27
  163. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +39 -27
  164. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +37 -28
  165. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +37 -28
  166. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +37 -28
  167. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +37 -28
  168. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +37 -28
  169. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +42 -30
  170. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v2_search_engine_query.yml +36 -27
  171. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v3_search_engine_query.yml +36 -27
  172. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +36 -27
  173. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +36 -27
  174. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +36 -27
  175. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +36 -27
  176. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +37 -27
  177. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +38 -29
  178. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +38 -29
  179. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +39 -29
  180. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +38 -29
  181. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +36 -24
  182. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +42 -28
  183. data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +0 -9
  184. data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +3 -3
  185. data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +0 -31
  186. data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +4 -4
  187. data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +5 -5
  188. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +3 -3
  189. data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +4 -4
  190. data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +8 -5
  191. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +6 -33
  192. data/spec/lib/auth0/api/v2/actions_spec.rb +312 -0
  193. data/spec/lib/auth0/api/v2/grants_spec.rb +91 -0
  194. data/spec/lib/auth0/api/v2/organizations_spec.rb +31 -6
  195. data/spec/lib/auth0/api/v2/roles_spec.rb +5 -1
  196. data/spec/lib/auth0/client_spec.rb +3 -3
  197. data/spec/lib/auth0/mixins/httpproxy_spec.rb +320 -25
  198. data/spec/lib/auth0/mixins/initializer_spec.rb +87 -0
  199. data/spec/lib/auth0/mixins/token_management_spec.rb +125 -0
  200. data/spec/spec_helper.rb +1 -1
  201. data/spec/support/dummy_class_for_proxy.rb +2 -2
  202. data/spec/support/dummy_class_for_tokens.rb +17 -0
  203. metadata +30 -30
  204. data/.yardoc/checksums +0 -22
  205. data/.yardoc/complete +0 -0
  206. data/.yardoc/object_types +0 -0
  207. data/.yardoc/objects/root.dat +0 -0
  208. data/.yardoc/proxy_types +0 -0
  209. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_check_if_ip_is_blocked/should_return_200_response_code.yml +0 -65
  210. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_remove_ip_block/should_remove_an_IP_successfully.yml +0 -60
  211. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_first_page_of_one_result.yml +0 -66
  212. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_delete_device_credential/should_delete_the_test_credential_without_an_error.yml +0 -54
  213. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/_filter_by_type/should_exclude_the_test_credential.yml +0 -59
  214. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_have_at_least_1_entry.yml +0 -62
  215. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_include_the_test_credential.yml +0 -62
  216. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_credential.yml +0 -54
  217. data/spec/integration/lib/auth0/api/v2/api_anomaly_spec.rb +0 -17
  218. data/spec/integration/lib/auth0/api/v2/api_device_credentials_spec.rb +0 -128
@@ -40,8 +40,20 @@ module Auth0
40
40
  class MissingClientId < Auth0::Exception; end
41
41
  # exception for unset organization_id
42
42
  class MissingOrganizationId < Auth0::Exception; end
43
+ # exception for unset trigger_id
44
+ class MissingTriggerId < Auth0::Exception; end
45
+ # exception for unset action_name
46
+ class MissingActionName < Auth0::Exception; end
47
+ # exception for unset action_id
48
+ class MissingActionId < Auth0::Exception; end
49
+ # exception for unset execution_id
50
+ class MissingExecutionId < Auth0::Exception; end
51
+ # exception for unset trigger_id
52
+ class MissingTriggerId < Auth0::Exception; end
43
53
  # exception for an unset parameter
44
54
  class MissingParameter < Auth0::Exception; end
55
+ # exception for unset version_id
56
+ class MissingVersionId < Auth0::Exception; end
45
57
  # Api v2 access denied
46
58
  class AccessDenied < Auth0::HTTPError; end
47
59
  # Invalid parameter passed, e.g. empty where ID is required
@@ -1,5 +1,4 @@
1
1
  Auth0::ApiToken = Struct.new :access_token, :scope, :expires_in do
2
-
3
2
  def token
4
3
  access_token
5
4
  end
@@ -1,51 +1,53 @@
1
1
  require "addressable/uri"
2
+ require "retryable"
3
+ require_relative "../exception.rb"
2
4
 
3
5
  module Auth0
4
6
  module Mixins
5
7
  # here's the proxy for Rest calls based on rest-client, we're building all request on that gem
6
8
  # for now, if you want to feel free to use your own http client
7
9
  module HTTPProxy
8
- attr_accessor :headers, :base_uri, :timeout
10
+ attr_accessor :headers, :base_uri, :timeout, :retry_count
11
+ DEAFULT_RETRIES = 3
12
+ MAX_ALLOWED_RETRIES = 10
13
+ MAX_REQUEST_RETRY_JITTER = 250
14
+ MAX_REQUEST_RETRY_DELAY = 1000
15
+ MIN_REQUEST_RETRY_DELAY = 100
9
16
 
10
17
  # proxying requests from instance methods to HTTP class methods
11
18
  %i(get post post_file put patch delete delete_with_body).each do |method|
12
- define_method(method) do |path, body = {}, extra_headers = {}|
13
- safe_path = Addressable::URI.escape(path)
19
+ define_method(method) do |uri, body = {}, extra_headers = {}|
14
20
  body = body.delete_if { |_, v| v.nil? }
15
- result = if method == :get
16
- # Mutate the headers property to add parameters.
17
- add_headers({params: body})
18
- # Merge custom headers into existing ones for this req.
19
- # This prevents future calls from using them.
20
- get_headers = headers.merge extra_headers
21
- # Make the call with extra_headers, if provided.
22
- call(:get, url(safe_path), timeout, get_headers)
23
- elsif method == :delete
24
- call(:delete, url(safe_path), timeout, add_headers({params: body}))
25
- elsif method == :delete_with_body
26
- call(:delete, url(safe_path), timeout, headers, body.to_json)
27
- elsif method == :post_file
28
- body.merge!(multipart: true)
29
- # Ignore the default Content-Type headers and let the HTTP client define them
30
- post_file_headers = headers.slice(*headers.keys - ['Content-Type'])
31
- # Actual call with the altered headers
32
- call(:post, url(safe_path), timeout, post_file_headers, body)
33
- else
34
- call(method, url(safe_path), timeout, headers, body.to_json)
35
- end
36
- case result.code
37
- when 200...226 then safe_parse_json(result.body)
38
- when 400 then raise Auth0::BadRequest.new(result.body, code: result.code, headers: result.headers)
39
- when 401 then raise Auth0::Unauthorized.new(result.body, code: result.code, headers: result.headers)
40
- when 403 then raise Auth0::AccessDenied.new(result.body, code: result.code, headers: result.headers)
41
- when 404 then raise Auth0::NotFound.new(result.body, code: result.code, headers: result.headers)
42
- when 429 then raise Auth0::RateLimitEncountered.new(result.body, code: result.code, headers: result.headers)
43
- when 500 then raise Auth0::ServerError.new(result.body, code: result.code, headers: result.headers)
44
- else raise Auth0::Unsupported.new(result.body, code: result.code, headers: result.headers)
45
- end
21
+ token = get_token()
22
+ authorization_header(token) unless token.nil?
23
+ request_with_retry(method, uri, body, extra_headers)
46
24
  end
47
25
  end
48
26
 
27
+ def retry_options
28
+ sleep_timer = lambda do |attempt|
29
+ wait = 1000 * 2**attempt # Exponential delay with each subsequent request attempt.
30
+ wait += rand(wait..wait+MAX_REQUEST_RETRY_JITTER) # Add jitter to the delay window.
31
+ wait = [MAX_REQUEST_RETRY_DELAY, wait].min # Cap delay at MAX_REQUEST_RETRY_DELAY.
32
+ wait = [MIN_REQUEST_RETRY_DELAY, wait].max # Ensure delay is no less than MIN_REQUEST_RETRY_DELAY.
33
+ wait / 1000.to_f.round(2) # convert ms to seconds
34
+ end
35
+
36
+ tries = 1 + [Integer(retry_count || DEAFULT_RETRIES), MAX_ALLOWED_RETRIES].min # Cap retries at MAX_ALLOWED_RETRIES
37
+
38
+ {
39
+ tries: tries,
40
+ sleep: sleep_timer,
41
+ on: Auth0::RateLimitEncountered
42
+ }
43
+ end
44
+
45
+ def encode_uri(uri)
46
+ # if a base_uri is set then the uri can be encoded as a path
47
+ path = base_uri ? Addressable::URI.new(path: uri).normalized_path : Addressable::URI.escape(uri)
48
+ url(path)
49
+ end
50
+
49
51
  def url(path)
50
52
  "#{base_uri}#{path}"
51
53
  end
@@ -62,6 +64,47 @@ module Auth0
62
64
  body
63
65
  end
64
66
 
67
+ def request_with_retry(method, uri, body = {}, extra_headers = {})
68
+ Retryable.retryable(retry_options) do
69
+ request(method, uri, body, extra_headers)
70
+ end
71
+ end
72
+
73
+ def request(method, uri, body = {}, extra_headers = {})
74
+ result = if method == :get
75
+ # Mutate the headers property to add parameters.
76
+ add_headers({params: body})
77
+ # Merge custom headers into existing ones for this req.
78
+ # This prevents future calls from using them.
79
+ get_headers = headers.merge extra_headers
80
+ # Make the call with extra_headers, if provided.
81
+ call(:get, encode_uri(uri), timeout, get_headers)
82
+ elsif method == :delete
83
+ call(:delete, encode_uri(uri), timeout, add_headers({params: body}))
84
+ elsif method == :delete_with_body
85
+ call(:delete, encode_uri(uri), timeout, headers, body.to_json)
86
+ elsif method == :post_file
87
+ body.merge!(multipart: true)
88
+ # Ignore the default Content-Type headers and let the HTTP client define them
89
+ post_file_headers = headers.slice(*headers.keys - ['Content-Type'])
90
+ # Actual call with the altered headers
91
+ call(:post, encode_uri(uri), timeout, post_file_headers, body)
92
+ else
93
+ call(method, encode_uri(uri), timeout, headers, body.to_json)
94
+ end
95
+
96
+ case result.code
97
+ when 200...226 then safe_parse_json(result.body)
98
+ when 400 then raise Auth0::BadRequest.new(result.body, code: result.code, headers: result.headers)
99
+ when 401 then raise Auth0::Unauthorized.new(result.body, code: result.code, headers: result.headers)
100
+ when 403 then raise Auth0::AccessDenied.new(result.body, code: result.code, headers: result.headers)
101
+ when 404 then raise Auth0::NotFound.new(result.body, code: result.code, headers: result.headers)
102
+ when 429 then raise Auth0::RateLimitEncountered.new(result.body, code: result.code, headers: result.headers)
103
+ when 500 then raise Auth0::ServerError.new(result.body, code: result.code, headers: result.headers)
104
+ else raise Auth0::Unsupported.new(result.body, code: result.code, headers: result.headers)
105
+ end
106
+ end
107
+
65
108
  def call(method, url, timeout, headers, body = nil)
66
109
  RestClient::Request.execute(
67
110
  method: method,
@@ -15,6 +15,7 @@ module Auth0
15
15
  @base_uri = base_url(options)
16
16
  @headers = client_headers
17
17
  @timeout = options[:timeout] || 10
18
+ @retry_count = options[:retry_count]
18
19
  extend Auth0::Api::AuthenticationEndpoints
19
20
  @client_id = options[:client_id]
20
21
  @client_secret = options[:client_secret]
@@ -58,9 +59,7 @@ module Auth0
58
59
 
59
60
  def initialize_v2(options)
60
61
  extend Auth0::Api::V2
61
- @token = options[:access_token] || options[:token]
62
- api_identifier = options[:api_identifier] || "https://#{@domain}/api/v2/"
63
- @token = api_token(audience: api_identifier).token if @token.nil? && @client_id && @client_secret
62
+ initialize_token(options)
64
63
  end
65
64
 
66
65
  def api_v2?(options)
@@ -0,0 +1,32 @@
1
+ module Auth0
2
+ module Mixins
3
+ module TokenManagement
4
+
5
+ private
6
+
7
+ def initialize_token(options)
8
+ @token = options[:access_token] || options[:token]
9
+
10
+ # default expiry to an hour if a token was given but no expires_at
11
+ @token_expires_at = @token ? options[:token_expires_at] || Time.now.to_i + 3600 : nil
12
+
13
+ @audience = options[:api_identifier] || "https://#{@domain}/api/v2/"
14
+ get_token() if @token.nil?
15
+ end
16
+
17
+ def get_token
18
+ has_expired = @token && @token_expires_at ? @token_expires_at < (Time.now.to_i + 10) : false
19
+
20
+ if (@token.nil? || has_expired) && @client_id && @client_secret
21
+ response = api_token(audience: @audience)
22
+ @token = response.token
23
+ @token_expires_at = response.expires_in ? Time.now.to_i + response.expires_in : nil
24
+
25
+ @token
26
+ else
27
+ @token
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -335,7 +335,7 @@ module Auth0
335
335
  private
336
336
 
337
337
  def fetch_jwks
338
- result = get(@jwks_url)
338
+ result = request_with_retry(:get, @jwks_url, {}, {})
339
339
  @did_fetch_jwks = result.is_a?(Hash) && result.key?('keys')
340
340
  result if @did_fetch_jwks
341
341
  end
data/lib/auth0/mixins.rb CHANGED
@@ -9,6 +9,7 @@ require 'auth0/mixins/httpproxy'
9
9
  require 'auth0/mixins/initializer'
10
10
  require 'auth0/mixins/permission_struct'
11
11
  require 'auth0/mixins/validation'
12
+ require 'auth0/mixins/token_management'
12
13
 
13
14
  require 'auth0/api/authentication_endpoints'
14
15
  require 'auth0/api/v2'
@@ -17,6 +18,7 @@ module Auth0
17
18
  # Collecting dependencies here
18
19
  module Mixins
19
20
  include Auth0::Mixins::Headers
21
+ include Auth0::Mixins::TokenManagement
20
22
  include Auth0::Mixins::HTTPProxy
21
23
  include Auth0::Mixins::Initializer
22
24
  end
data/lib/auth0/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # current version of gem
2
2
  module Auth0
3
- VERSION = '5.2.0'.freeze
3
+ VERSION = '5.6.0'.freeze
4
4
  end
@@ -5,22 +5,22 @@ http_interactions:
5
5
  uri: https://auth0-sdk-tests.auth0.com/dbconnections/change_password
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"email":"rubytest-username-1@auth0.com","password":"","connection":"Username-Password-Authentication","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI"}'
8
+ string: '{"email":"rubytest-210908-username-1@auth0.com","password":"","connection":"Username-Password-Authentication","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI"}'
9
9
  headers:
10
10
  Accept:
11
11
  - "*/*"
12
- Accept-Encoding:
13
- - gzip, deflate
14
12
  User-Agent:
15
- - Ruby/2.5.1
13
+ - rest-client/2.1.0 (darwin19.6.0 x86_64) ruby/2.7.0p0
16
14
  Content-Type:
17
15
  - application/json
18
16
  Auth0-Client:
19
- - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI0LjUuMCJ9
17
+ - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI1LjUuMCIsImVudiI6eyJydWJ5IjoiMi43LjAifX0=
20
18
  Authorization:
21
19
  - Bearer API_TOKEN
22
20
  Content-Length:
23
- - '150'
21
+ - '157'
22
+ Accept-Encoding:
23
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
24
24
  Host:
25
25
  - auth0-sdk-tests.auth0.com
26
26
  response:
@@ -29,35 +29,65 @@ http_interactions:
29
29
  message: OK
30
30
  headers:
31
31
  Date:
32
- - Wed, 10 Oct 2018 23:19:59 GMT
32
+ - Fri, 03 Sep 2021 20:16:11 GMT
33
33
  Content-Type:
34
34
  - text/html; charset=utf-8
35
35
  Transfer-Encoding:
36
36
  - chunked
37
37
  Connection:
38
38
  - keep-alive
39
+ Cf-Ray:
40
+ - 6891a783fa1aeb79-LAX
41
+ Access-Control-Allow-Origin:
42
+ - "*"
43
+ Cache-Control:
44
+ - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0, no-transform
45
+ Etag:
46
+ - W/"34-isurgRF3drpbztqj/kuLX3wcQN4"
47
+ Set-Cookie:
48
+ - did=s%3Av0%3Ac7c670e0-0cf3-11ec-8fcc-b1ac7dd7e8e6.SMKCwsFbZxS1wgznun%2Bc4MrNN8Yb7eXSJYergKRIbm4;
49
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:10 GMT; HttpOnly;
50
+ Secure; SameSite=None
51
+ - did_compat=s%3Av0%3Ac7c670e0-0cf3-11ec-8fcc-b1ac7dd7e8e6.SMKCwsFbZxS1wgznun%2Bc4MrNN8Yb7eXSJYergKRIbm4;
52
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:11 GMT; HttpOnly;
53
+ Secure
54
+ Strict-Transport-Security:
55
+ - max-age=31536000
39
56
  Vary:
40
- - Accept-Encoding
57
+ - Accept-Encoding, Origin
58
+ Cf-Cache-Status:
59
+ - DYNAMIC
60
+ Access-Control-Allow-Credentials:
61
+ - 'false'
62
+ Access-Control-Expose-Headers:
63
+ - X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
64
+ Expect-Ct:
65
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
66
+ Ot-Baggage-Auth0-Request-Id:
67
+ - 6891a783fa1aeb79
68
+ Ot-Tracer-Sampled:
69
+ - 'true'
70
+ Ot-Tracer-Spanid:
71
+ - 73ed236e3e952604
72
+ Ot-Tracer-Traceid:
73
+ - 75dde96b4f4143d1
41
74
  X-Auth0-Requestid:
42
- - b1edcce5da4346cf4e72
75
+ - 46bd91e5c530f4b3a9f7
76
+ X-Content-Type-Options:
77
+ - nosniff
43
78
  X-Ratelimit-Limit:
44
79
  - '10'
45
80
  X-Ratelimit-Remaining:
46
81
  - '9'
47
82
  X-Ratelimit-Reset:
48
- - '1539213660'
49
- Cache-Control:
50
- - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
51
- Strict-Transport-Security:
52
- - max-age=15724800
53
- X-Robots-Tag:
54
- - noindex, nofollow, nosnippet, noarchive
55
- Content-Encoding:
56
- - gzip
83
+ - '1630700231'
84
+ Server:
85
+ - cloudflare
86
+ Alt-Svc:
87
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400, h3=":443";
88
+ ma=86400
57
89
  body:
58
90
  encoding: ASCII-8BIT
59
- string: !binary |-
60
- H4sIAAAAAAAAAwtPVS9LVcgqLS5RKE7NK1GozC9VSMxTSM1NzMxRKMlXKEotTgWLFikUJBYXl+cXpegBAKHKLwA0AAAA
61
- http_version:
62
- recorded_at: Wed, 10 Oct 2018 23:19:59 GMT
63
- recorded_with: VCR 4.0.0
91
+ string: We've just sent you an email to reset your password.
92
+ recorded_at: Fri, 03 Sep 2021 20:16:10 GMT
93
+ recorded_with: VCR 6.0.0
@@ -5,22 +5,22 @@ http_interactions:
5
5
  uri: https://auth0-sdk-tests.auth0.com/oauth/token
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"username":"rubytest-username-1@auth0.com_invalid","password":"23kejn2jk3en2jke2jk3be2jk3ber","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI","client_secret":"CLIENT_SECRET","scope":"openid","grant_type":"password"}'
8
+ string: '{"username":"rubytest-210908-username-1@auth0.com_invalid","password":"23kejn2jk3en2jke2jk3be2jk3ber","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI","client_secret":"CLIENT_SECRET","scope":"openid","grant_type":"password"}'
9
9
  headers:
10
10
  Accept:
11
11
  - "*/*"
12
- Accept-Encoding:
13
- - gzip, deflate
14
12
  User-Agent:
15
- - Ruby/2.5.1
13
+ - rest-client/2.1.0 (darwin19.6.0 x86_64) ruby/2.7.0p0
16
14
  Content-Type:
17
15
  - application/json
18
16
  Auth0-Client:
19
- - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI0LjUuMCJ9
17
+ - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI1LjUuMCIsImVudiI6eyJydWJ5IjoiMi43LjAifX0=
20
18
  Authorization:
21
19
  - Bearer API_TOKEN
22
20
  Content-Length:
23
- - '266'
21
+ - '273'
22
+ Accept-Encoding:
23
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
24
24
  Host:
25
25
  - auth0-sdk-tests.auth0.com
26
26
  response:
@@ -29,26 +29,57 @@ http_interactions:
29
29
  message: Forbidden
30
30
  headers:
31
31
  Date:
32
- - Wed, 17 Oct 2018 17:17:52 GMT
32
+ - Fri, 03 Sep 2021 20:16:12 GMT
33
33
  Content-Type:
34
34
  - application/json
35
- Content-Length:
36
- - '72'
35
+ Transfer-Encoding:
36
+ - chunked
37
37
  Connection:
38
38
  - keep-alive
39
+ Cf-Ray:
40
+ - 6891a78eaa9d04b4-LAX
41
+ Cache-Control:
42
+ - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0, no-transform
43
+ Set-Cookie:
44
+ - did=s%3Av0%3Ac8c67bc0-0cf3-11ec-a06b-fb16f7884f9b.SifCcrmcjM8PKlpAAH8qLYoWeyeN%2FqvtDC0ZweexKDY;
45
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:12 GMT; HttpOnly;
46
+ Secure; SameSite=None
47
+ - did_compat=s%3Av0%3Ac8c67bc0-0cf3-11ec-a06b-fb16f7884f9b.SifCcrmcjM8PKlpAAH8qLYoWeyeN%2FqvtDC0ZweexKDY;
48
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:12 GMT; HttpOnly;
49
+ Secure
50
+ Strict-Transport-Security:
51
+ - max-age=31536000
52
+ Vary:
53
+ - Accept-Encoding, Origin
54
+ Cf-Cache-Status:
55
+ - DYNAMIC
56
+ Expect-Ct:
57
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
58
+ Ot-Baggage-Auth0-Request-Id:
59
+ - 6891a78eaa9d04b4
60
+ Ot-Tracer-Sampled:
61
+ - 'true'
62
+ Ot-Tracer-Spanid:
63
+ - 238a8dd0640d43a0
64
+ Ot-Tracer-Traceid:
65
+ - 431cac8f77136f2c
39
66
  X-Auth0-Requestid:
40
- - b6bab16857282fef5757
67
+ - b0a5dc12c514c43e1e72
68
+ X-Content-Type-Options:
69
+ - nosniff
41
70
  X-Ratelimit-Limit:
42
71
  - '100'
43
72
  X-Ratelimit-Remaining:
44
- - '94'
73
+ - '97'
45
74
  X-Ratelimit-Reset:
46
- - '1539801484'
47
- Cache-Control:
48
- - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
75
+ - '1630702765'
76
+ Server:
77
+ - cloudflare
78
+ Alt-Svc:
79
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400, h3=":443";
80
+ ma=86400
49
81
  body:
50
- encoding: UTF-8
82
+ encoding: ASCII-8BIT
51
83
  string: '{"error":"invalid_grant","error_description":"Wrong email or password."}'
52
- http_version:
53
- recorded_at: Wed, 17 Oct 2018 17:17:52 GMT
54
- recorded_with: VCR 4.0.0
84
+ recorded_at: Fri, 03 Sep 2021 20:16:12 GMT
85
+ recorded_with: VCR 6.0.0
@@ -5,22 +5,22 @@ http_interactions:
5
5
  uri: https://auth0-sdk-tests.auth0.com/oauth/token
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"username":"rubytest-username-1@auth0.com","password":"23kejn2jk3en2jke2jk3be2jk3ber_invalid","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI","client_secret":"CLIENT_SECRET","scope":"openid","grant_type":"password"}'
8
+ string: '{"username":"rubytest-210908-username-1@auth0.com","password":"23kejn2jk3en2jke2jk3be2jk3ber_invalid","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI","client_secret":"CLIENT_SECRET","scope":"openid","grant_type":"password"}'
9
9
  headers:
10
10
  Accept:
11
11
  - "*/*"
12
- Accept-Encoding:
13
- - gzip, deflate
14
12
  User-Agent:
15
- - Ruby/2.5.1
13
+ - rest-client/2.1.0 (darwin19.6.0 x86_64) ruby/2.7.0p0
16
14
  Content-Type:
17
15
  - application/json
18
16
  Auth0-Client:
19
- - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI0LjUuMCJ9
17
+ - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI1LjUuMCIsImVudiI6eyJydWJ5IjoiMi43LjAifX0=
20
18
  Authorization:
21
19
  - Bearer API_TOKEN
22
20
  Content-Length:
23
- - '266'
21
+ - '273'
22
+ Accept-Encoding:
23
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
24
24
  Host:
25
25
  - auth0-sdk-tests.auth0.com
26
26
  response:
@@ -29,26 +29,57 @@ http_interactions:
29
29
  message: Forbidden
30
30
  headers:
31
31
  Date:
32
- - Wed, 17 Oct 2018 17:17:54 GMT
32
+ - Fri, 03 Sep 2021 20:16:13 GMT
33
33
  Content-Type:
34
34
  - application/json
35
- Content-Length:
36
- - '72'
35
+ Transfer-Encoding:
36
+ - chunked
37
37
  Connection:
38
38
  - keep-alive
39
+ Cf-Ray:
40
+ - 6891a7909a3d0530-LAX
41
+ Cache-Control:
42
+ - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0, no-transform
43
+ Set-Cookie:
44
+ - did=s%3Av0%3Ac8f6b380-0cf3-11ec-9d25-4bf507f98d94.d6L80rutoTPSmv9XC2R7DPJl5KSUnlZAB%2FcTap6lKm4;
45
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:12 GMT; HttpOnly;
46
+ Secure; SameSite=None
47
+ - did_compat=s%3Av0%3Ac8f6b380-0cf3-11ec-9d25-4bf507f98d94.d6L80rutoTPSmv9XC2R7DPJl5KSUnlZAB%2FcTap6lKm4;
48
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:13 GMT; HttpOnly;
49
+ Secure
50
+ Strict-Transport-Security:
51
+ - max-age=31536000
52
+ Vary:
53
+ - Accept-Encoding, Origin
54
+ Cf-Cache-Status:
55
+ - DYNAMIC
56
+ Expect-Ct:
57
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
58
+ Ot-Baggage-Auth0-Request-Id:
59
+ - 6891a7909a3d0530
60
+ Ot-Tracer-Sampled:
61
+ - 'true'
62
+ Ot-Tracer-Spanid:
63
+ - 16bebfba4e1fa102
64
+ Ot-Tracer-Traceid:
65
+ - 13743fb227610c73
39
66
  X-Auth0-Requestid:
40
- - 5c2a84511dca461182fa
67
+ - 6cf36d3579971bd6c4b9
68
+ X-Content-Type-Options:
69
+ - nosniff
41
70
  X-Ratelimit-Limit:
42
71
  - '100'
43
72
  X-Ratelimit-Remaining:
44
- - '93'
73
+ - '96'
45
74
  X-Ratelimit-Reset:
46
- - '1539802348'
47
- Cache-Control:
48
- - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
75
+ - '1630703629'
76
+ Server:
77
+ - cloudflare
78
+ Alt-Svc:
79
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400, h3=":443";
80
+ ma=86400
49
81
  body:
50
- encoding: UTF-8
82
+ encoding: ASCII-8BIT
51
83
  string: '{"error":"invalid_grant","error_description":"Wrong email or password."}'
52
- http_version:
53
- recorded_at: Wed, 17 Oct 2018 17:17:54 GMT
54
- recorded_with: VCR 4.0.0
84
+ recorded_at: Fri, 03 Sep 2021 20:16:13 GMT
85
+ recorded_with: VCR 6.0.0
@@ -5,22 +5,22 @@ http_interactions:
5
5
  uri: https://auth0-sdk-tests.auth0.com/oauth/token
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"username":"rubytest-username-1@auth0.com","password":"23kejn2jk3en2jke2jk3be2jk3ber","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI","client_secret":"CLIENT_SECRET","scope":"test:scope","audience":"https://brucke.club/invalid/api/v1/","grant_type":"password"}'
8
+ string: '{"username":"rubytest-210908-username-1@auth0.com","password":"23kejn2jk3en2jke2jk3be2jk3ber","client_id":"2cnWuug6zaFX1j0ge1P99jAUn0F4XSuI","client_secret":"CLIENT_SECRET","scope":"test:scope","audience":"https://brucke.club/invalid/api/v1/","grant_type":"password"}'
9
9
  headers:
10
10
  Accept:
11
11
  - "*/*"
12
- Accept-Encoding:
13
- - gzip, deflate
14
12
  User-Agent:
15
- - Ruby/2.5.1
13
+ - rest-client/2.1.0 (darwin19.6.0 x86_64) ruby/2.7.0p0
16
14
  Content-Type:
17
15
  - application/json
18
16
  Auth0-Client:
19
- - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI0LjUuMCJ9
17
+ - eyJuYW1lIjoicnVieS1hdXRoMCIsInZlcnNpb24iOiI1LjUuMCIsImVudiI6eyJydWJ5IjoiMi43LjAifX0=
20
18
  Authorization:
21
19
  - Bearer API_TOKEN
22
20
  Content-Length:
23
- - '311'
21
+ - '318'
22
+ Accept-Encoding:
23
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
24
24
  Host:
25
25
  - auth0-sdk-tests.auth0.com
26
26
  response:
@@ -29,27 +29,58 @@ http_interactions:
29
29
  message: Bad Request
30
30
  headers:
31
31
  Date:
32
- - Wed, 17 Oct 2018 17:17:59 GMT
32
+ - Fri, 03 Sep 2021 20:16:13 GMT
33
33
  Content-Type:
34
34
  - application/json
35
35
  Content-Length:
36
36
  - '104'
37
37
  Connection:
38
38
  - keep-alive
39
+ Cf-Ray:
40
+ - 6891a794fdc45251-LAX
41
+ Cache-Control:
42
+ - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0, no-transform
43
+ Set-Cookie:
44
+ - did=s%3Av0%3Ac9613520-0cf3-11ec-8999-619415867d7d.ko8DJYu1RDBGsrmNAoLhW%2Fzzg4uXXxVhAGlZqlMFJfQ;
45
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:13 GMT; HttpOnly;
46
+ Secure; SameSite=None
47
+ - did_compat=s%3Av0%3Ac9613520-0cf3-11ec-8999-619415867d7d.ko8DJYu1RDBGsrmNAoLhW%2Fzzg4uXXxVhAGlZqlMFJfQ;
48
+ Max-Age=31557600; Path=/; Expires=Sun, 04 Sep 2022 02:16:13 GMT; HttpOnly;
49
+ Secure
50
+ Strict-Transport-Security:
51
+ - max-age=31536000
52
+ Vary:
53
+ - Origin, Accept-Encoding
54
+ Cf-Cache-Status:
55
+ - DYNAMIC
56
+ Expect-Ct:
57
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
58
+ Ot-Baggage-Auth0-Request-Id:
59
+ - 6891a794fdc45251
60
+ Ot-Tracer-Sampled:
61
+ - 'true'
62
+ Ot-Tracer-Spanid:
63
+ - 544dccce2b60c403
64
+ Ot-Tracer-Traceid:
65
+ - 4de0c0937ff7c4ed
39
66
  X-Auth0-Requestid:
40
- - 4e25e371ed76da7184c9
67
+ - 25d6b1d98c7216c1d4ec
68
+ X-Content-Type-Options:
69
+ - nosniff
41
70
  X-Ratelimit-Limit:
42
71
  - '100'
43
72
  X-Ratelimit-Remaining:
44
- - '92'
73
+ - '95'
45
74
  X-Ratelimit-Reset:
46
- - '1539803212'
47
- Cache-Control:
48
- - private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
75
+ - '1630704494'
76
+ Server:
77
+ - cloudflare
78
+ Alt-Svc:
79
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400, h3=":443";
80
+ ma=86400
49
81
  body:
50
82
  encoding: UTF-8
51
83
  string: '{"error":"invalid_request","error_description":"invalid audience specified
52
84
  for password grant exchange"}'
53
- http_version:
54
- recorded_at: Wed, 17 Oct 2018 17:17:59 GMT
55
- recorded_with: VCR 4.0.0
85
+ recorded_at: Fri, 03 Sep 2021 20:16:13 GMT
86
+ recorded_with: VCR 6.0.0