auth0 4.4.0 → 5.1.2

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 (289) hide show
  1. checksums.yaml +4 -4
  2. data/.bundle/config +3 -2
  3. data/.circleci/config.yml +44 -0
  4. data/.env.example +2 -0
  5. data/.github/CODEOWNERS +1 -0
  6. data/.github/ISSUE_TEMPLATE/config.yml +8 -0
  7. data/.github/ISSUE_TEMPLATE/feature_request.md +39 -0
  8. data/.github/ISSUE_TEMPLATE/report_a_bug.md +55 -0
  9. data/.github/PULL_REQUEST_TEMPLATE.md +35 -0
  10. data/.github/stale.yml +20 -0
  11. data/.gitignore +1 -2
  12. data/.rubocop.yml +2 -0
  13. data/.yardoc/checksums +22 -0
  14. data/.yardoc/complete +0 -0
  15. data/.yardoc/object_types +0 -0
  16. data/.yardoc/objects/root.dat +0 -0
  17. data/.yardoc/proxy_types +0 -0
  18. data/CHANGELOG.md +334 -19
  19. data/CODE_OF_CONDUCT.md +3 -0
  20. data/DEPLOYMENT.md +56 -9
  21. data/Gemfile +10 -3
  22. data/README.md +260 -37
  23. data/Rakefile +4 -23
  24. data/auth0.gemspec +10 -9
  25. data/codecov.yml +22 -0
  26. data/examples/ruby-api/.gitignore +0 -6
  27. data/lib/auth0/algorithm.rb +5 -0
  28. data/lib/auth0/api/authentication_endpoints.rb +244 -237
  29. data/lib/auth0/api/v2/anomaly.rb +36 -0
  30. data/lib/auth0/api/v2/branding.rb +66 -0
  31. data/lib/auth0/api/v2/client_grants.rb +14 -5
  32. data/lib/auth0/api/v2/clients.rb +9 -6
  33. data/lib/auth0/api/v2/connections.rb +19 -7
  34. data/lib/auth0/api/v2/device_credentials.rb +5 -4
  35. data/lib/auth0/api/v2/guardian.rb +142 -0
  36. data/lib/auth0/api/v2/jobs.rb +77 -13
  37. data/lib/auth0/api/v2/log_streams.rb +78 -0
  38. data/lib/auth0/api/v2/logs.rb +11 -11
  39. data/lib/auth0/api/v2/organizations.rb +335 -0
  40. data/lib/auth0/api/v2/prompts.rb +70 -0
  41. data/lib/auth0/api/v2/resource_servers.rb +32 -8
  42. data/lib/auth0/api/v2/roles.rb +172 -0
  43. data/lib/auth0/api/v2/rules.rb +6 -2
  44. data/lib/auth0/api/v2/tickets.rb +55 -8
  45. data/lib/auth0/api/v2/users.rb +168 -28
  46. data/lib/auth0/api/v2/users_by_email.rb +3 -2
  47. data/lib/auth0/api/v2.rb +16 -2
  48. data/lib/auth0/client.rb +1 -1
  49. data/lib/auth0/exception.rb +34 -9
  50. data/lib/auth0/mixins/access_token_struct.rb +20 -0
  51. data/lib/auth0/mixins/api_token_struct.rb +10 -0
  52. data/lib/auth0/mixins/headers.rb +35 -0
  53. data/lib/auth0/mixins/httpproxy.rb +37 -14
  54. data/lib/auth0/mixins/initializer.rb +10 -26
  55. data/lib/auth0/mixins/permission_struct.rb +3 -0
  56. data/lib/auth0/mixins/validation.rb +346 -0
  57. data/lib/auth0/mixins.rb +9 -1
  58. data/lib/auth0/version.rb +1 -1
  59. data/lib/auth0.rb +1 -0
  60. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +63 -0
  61. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +54 -0
  62. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +54 -0
  63. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +55 -0
  64. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +117 -0
  65. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +119 -0
  66. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +57 -0
  67. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +55 -0
  68. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +118 -0
  69. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +55 -0
  70. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +58 -0
  71. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +54 -0
  72. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_check_if_ip_is_blocked/should_return_200_response_code.yml +65 -0
  73. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_remove_ip_block/should_remove_an_IP_successfully.yml +60 -0
  74. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +56 -0
  75. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +59 -0
  76. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +62 -0
  77. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_first_page_of_one_result.yml +66 -0
  78. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +62 -0
  79. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +54 -0
  80. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +64 -0
  81. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +118 -0
  82. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +64 -0
  83. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +54 -0
  84. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +54 -0
  85. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +91 -0
  86. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +63 -0
  87. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +92 -0
  88. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +60 -0
  89. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +132 -0
  90. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +63 -0
  91. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +65 -0
  92. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +132 -0
  93. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +54 -0
  94. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +94 -0
  95. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +118 -0
  96. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +63 -0
  97. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +61 -0
  98. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +63 -0
  99. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +59 -0
  100. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +59 -0
  101. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +59 -0
  102. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +59 -0
  103. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +59 -0
  104. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +54 -0
  105. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +110 -0
  106. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +66 -0
  107. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +65 -0
  108. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +68 -0
  109. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_delete_device_credential/should_delete_the_test_credential_without_an_error.yml +54 -0
  110. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/_filter_by_type/should_exclude_the_test_credential.yml +59 -0
  111. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_have_at_least_1_entry.yml +62 -0
  112. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_include_the_test_credential.yml +62 -0
  113. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +62 -0
  114. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +68 -0
  115. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_credential.yml +54 -0
  116. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +54 -0
  117. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +63 -0
  118. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +54 -0
  119. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +51 -0
  120. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +60 -0
  121. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +61 -0
  122. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +61 -0
  123. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +63 -0
  124. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +54 -0
  125. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +61 -0
  126. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +117 -0
  127. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +60 -0
  128. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +116 -0
  129. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +119 -0
  130. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +175 -0
  131. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +109 -0
  132. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +110 -0
  133. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +59 -0
  134. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +265 -0
  135. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +265 -0
  136. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +61 -0
  137. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +75 -0
  138. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +76 -0
  139. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +62 -0
  140. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +258 -0
  141. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +68 -0
  142. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +54 -0
  143. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +54 -0
  144. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +54 -0
  145. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +54 -0
  146. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +61 -0
  147. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +59 -0
  148. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +59 -0
  149. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +59 -0
  150. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +64 -0
  151. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +61 -0
  152. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +54 -0
  153. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +69 -0
  154. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +69 -0
  155. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +62 -0
  156. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +67 -0
  157. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +67 -0
  158. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +67 -0
  159. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +67 -0
  160. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +67 -0
  161. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +67 -0
  162. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +64 -0
  163. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +69 -0
  164. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +69 -0
  165. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +69 -0
  166. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +69 -0
  167. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +62 -0
  168. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +62 -0
  169. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +54 -0
  170. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +54 -0
  171. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +62 -0
  172. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +62 -0
  173. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +61 -0
  174. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +62 -0
  175. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +60 -0
  176. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +61 -0
  177. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +63 -0
  178. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +62 -0
  179. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +128 -0
  180. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +64 -0
  181. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +64 -0
  182. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +65 -0
  183. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +65 -0
  184. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +59 -0
  185. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +63 -0
  186. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +95 -0
  187. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +61 -0
  188. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +61 -0
  189. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +96 -0
  190. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +96 -0
  191. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +63 -0
  192. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +63 -0
  193. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +68 -0
  194. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +54 -0
  195. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +67 -0
  196. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +62 -0
  197. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +60 -0
  198. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +60 -0
  199. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +60 -0
  200. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +65 -0
  201. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +65 -0
  202. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +65 -0
  203. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +65 -0
  204. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +62 -0
  205. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +67 -0
  206. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +68 -0
  207. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +62 -0
  208. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +62 -0
  209. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +65 -0
  210. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +65 -0
  211. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +65 -0
  212. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +65 -0
  213. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +65 -0
  214. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +69 -0
  215. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v2_search_engine_query.yml +65 -0
  216. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v3_search_engine_query.yml +65 -0
  217. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +65 -0
  218. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +65 -0
  219. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +65 -0
  220. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +65 -0
  221. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +65 -0
  222. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +67 -0
  223. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +67 -0
  224. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +67 -0
  225. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +67 -0
  226. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +60 -0
  227. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +60 -0
  228. data/spec/integration/lib/auth0/api/api_authentication_spec.rb +96 -54
  229. data/spec/integration/lib/auth0/api/v2/api_anomaly_spec.rb +17 -0
  230. data/spec/integration/lib/auth0/api/v2/api_blacklist_spec.rb +18 -5
  231. data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +46 -33
  232. data/spec/integration/lib/auth0/api/v2/api_clients_spec.rb +115 -61
  233. data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +117 -103
  234. data/spec/integration/lib/auth0/api/v2/api_device_credentials_spec.rb +101 -58
  235. data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +72 -77
  236. data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +113 -60
  237. data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +46 -38
  238. data/spec/integration/lib/auth0/api/v2/api_resource_servers_spec.rb +110 -40
  239. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +145 -0
  240. data/spec/integration/lib/auth0/api/v2/api_rules_spec.rb +119 -62
  241. data/spec/integration/lib/auth0/api/v2/api_stats_spec.rb +11 -14
  242. data/spec/integration/lib/auth0/api/v2/api_tenants_spec.rb +40 -34
  243. data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +42 -28
  244. data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +1 -1
  245. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +252 -120
  246. data/spec/integration/lib/auth0/auth0_client_spec.rb +32 -26
  247. data/spec/lib/auth0/api/v2/anomaly_spec.rb +26 -0
  248. data/spec/lib/auth0/api/v2/branding_spec.rb +70 -0
  249. data/spec/lib/auth0/api/v2/client_grants_spec.rb +34 -2
  250. data/spec/lib/auth0/api/v2/clients_spec.rb +50 -5
  251. data/spec/lib/auth0/api/v2/connections_spec.rb +49 -1
  252. data/spec/lib/auth0/api/v2/guardian_spec.rb +154 -0
  253. data/spec/lib/auth0/api/v2/jobs_spec.rb +109 -6
  254. data/spec/lib/auth0/api/v2/log_streams_spec.rb +84 -0
  255. data/spec/lib/auth0/api/v2/organizations_spec.rb +593 -0
  256. data/spec/lib/auth0/api/v2/prompts_spec.rb +88 -0
  257. data/spec/lib/auth0/api/v2/resource_servers_spec.rb +23 -0
  258. data/spec/lib/auth0/api/v2/roles_spec.rb +362 -0
  259. data/spec/lib/auth0/api/v2/rules_spec.rb +23 -1
  260. data/spec/lib/auth0/api/v2/tickets_spec.rb +95 -5
  261. data/spec/lib/auth0/api/v2/users_spec.rb +465 -61
  262. data/spec/lib/auth0/client_spec.rb +196 -18
  263. data/spec/lib/auth0/mixins/httpproxy_spec.rb +83 -4
  264. data/spec/lib/auth0/mixins/initializer_spec.rb +1 -0
  265. data/spec/lib/auth0/mixins/validation_spec.rb +498 -0
  266. data/spec/spec_helper.rb +54 -11
  267. data/spec/support/credentials.rb +6 -18
  268. data/spec/support/dummy_class.rb +7 -3
  269. data/spec/support/dummy_class_for_proxy.rb +1 -0
  270. data/spec/support/stub_response.rb +1 -1
  271. metadata +497 -53
  272. data/.travis.yml +0 -18
  273. data/build_travis.sh +0 -7
  274. data/deploy_documentation.sh +0 -29
  275. data/doc_config/templates/default/fulldoc/html/css/full_list.css +0 -79
  276. data/doc_config/templates/default/fulldoc/html/css/style.css +0 -546
  277. data/doc_config/templates/default/layout/html/breadcrumb.erb +0 -11
  278. data/doc_config/templates/default/layout/html/footer.erb +0 -115
  279. data/doc_config/templates/default/layout/html/headers.erb +0 -17
  280. data/doc_config/templates/default/layout/html/layout.erb +0 -27
  281. data/lib/auth0/api/v1/clients.rb +0 -48
  282. data/lib/auth0/api/v1/connections.rb +0 -53
  283. data/lib/auth0/api/v1/logs.rb +0 -34
  284. data/lib/auth0/api/v1/rules.rb +0 -45
  285. data/lib/auth0/api/v1/users.rb +0 -164
  286. data/lib/auth0/api/v1.rb +0 -19
  287. data/spec/lib/auth0/api/authentication_endpoints_spec.rb +0 -348
  288. data/spec/spec_helper_full.rb +0 -45
  289. data/spec/spec_helper_unit.rb +0 -3
@@ -1,112 +1,166 @@
1
1
  require 'spec_helper'
2
+
2
3
  describe Auth0::Api::V2::Clients do
3
- let(:client) { Auth0Client.new(v2_creds) }
4
- let(:existing_client) do
5
- sleep 1
6
- client.create_client("existing#{entity_suffix}")
7
- end
8
- let(:client_name) { "ClientV2#{entity_suffix}" }
4
+ attr_reader :client, :test_client_name, :test_client
9
5
 
10
- it do
11
- sleep 1
12
- expect(client.clients).to_not be_empty
6
+ before(:all) do
7
+ @client ||= Auth0Client.new(v2_creds)
8
+ @test_client_name = "TestClient-#{entity_suffix}"
9
+
10
+ VCR.use_cassette('Auth0_Api_V2_Clients/create_test_client') do
11
+ @test_client ||= client.create_client(
12
+ test_client_name,
13
+ custom_login_page_on: false,
14
+ description: 'Client description'
15
+ )
16
+ end
13
17
  end
14
18
 
15
- describe '.clients' do
19
+ describe '.create_client', vcr: true do
20
+ it 'should raise an error with a missing client_id' do
21
+ expect do
22
+ client.create_client('', custom_login_page_on: false)
23
+ end.to raise_error Auth0::MissingParameter
24
+ end
25
+
26
+ it 'should create a new client with the specified attributes' do
27
+ expect(test_client).to(
28
+ include(
29
+ 'name' => test_client_name,
30
+ 'custom_login_page_on' => false,
31
+ 'description' => 'Client description'
32
+ )
33
+ )
34
+ end
35
+ end
36
+
37
+ describe '.clients', vcr: true do
16
38
  let(:clients) do
17
- sleep 1
18
39
  client.clients
19
40
  end
20
41
 
21
- it do
22
- sleep 1
42
+ it 'should get at least one client' do
23
43
  expect(clients.size).to be > 0
24
44
  end
25
45
 
26
46
  context '#filters' do
27
- it do
28
- sleep 1
29
- expect(client.clients(fields: [:name, :callbacks].join(',')).first).to(include('name', 'callbacks'))
47
+ it 'should include the specified fields' do
48
+ expect(client.clients(
49
+ fields: [:name, :callbacks].join(',')
50
+ ).first).to(include('name', 'callbacks'))
51
+ end
52
+
53
+ it 'should exclude fields not specified' do
54
+ expect(client.clients(
55
+ fields: [:callbacks].join(',')).first
56
+ ).to_not(include('name'))
30
57
  end
31
- it do
32
- sleep 1
33
- expect(client.clients(fields: [:callbacks].join(',')).first).to_not(include('name'))
58
+
59
+ it 'should exclude the specified fields' do
60
+ expect(client.clients(
61
+ fields: [:callbacks].join(','),
62
+ include_fields: false
63
+ ).first).to_not(include('callbacks'))
34
64
  end
35
- it do
36
- sleep 1
37
- expect(client.clients(fields: [:callbacks].join(','), include_fields: false).first).to_not(include('callbacks'))
65
+
66
+ it 'should paginate results' do
67
+ results = client.clients(
68
+ fields: :name,
69
+ page: 0,
70
+ per_page: 1
71
+ )
72
+ expect(results.first).to equal(results.last)
38
73
  end
39
74
  end
40
75
  end
41
76
 
42
- describe '.client' do
43
- it do
44
- sleep 1
45
- expect(client.client(existing_client['client_id'])).to include('client_id' => existing_client['client_id'])
77
+ describe '.client', vcr: true do
78
+
79
+ it 'should raise an error with a missing client_id' do
80
+ expect do
81
+ client.client('')
82
+ end.to raise_error Auth0::MissingClientId
83
+ end
84
+
85
+ it 'should get the test client' do
86
+ expect(
87
+ client.client(test_client['client_id'])
88
+ ).to include('client_id' => test_client['client_id'])
46
89
  end
47
- it do
48
- sleep 1
90
+
91
+ it 'should raise an error when passing an empty client_id' do
49
92
  expect { client.client '' }.to raise_error(Auth0::MissingClientId)
50
93
  end
51
94
 
52
95
  context '#filters' do
53
96
  let(:client_include) do
54
- sleep 1
55
- client.client(existing_client['client_id'], fields: [:name, :client_secret, :jwt_configuration].join(','))
97
+ client.client(
98
+ test_client['client_id'],
99
+ fields: [:name, :client_secret, :jwt_configuration].join(',')
100
+ )
56
101
  end
102
+
57
103
  let(:client_not_include) do
58
- sleep 1
59
- client.client(existing_client['client_id'], fields: :jwt_configuration, include_fields: false)
104
+ client.client(
105
+ test_client['client_id'],
106
+ fields: :jwt_configuration,
107
+ include_fields: false
108
+ )
60
109
  end
61
110
 
62
- it do
63
- sleep 1
64
- expect(client_include).to(include('name', 'client_secret', 'jwt_configuration'))
111
+ it 'should include the specified fields' do
112
+ expect(
113
+ client_include
114
+ ).to(include('name', 'client_secret', 'jwt_configuration'))
65
115
  end
66
116
 
67
- it do
68
- sleep 1
117
+ it 'should exclude and include fields properly' do
69
118
  expect(client_not_include).to(include('name', 'client_secret'))
70
119
  expect(client_not_include).to_not(include('jwt_configuration'))
71
120
  end
72
121
  end
73
122
  end
74
123
 
75
- describe '.create_client' do
76
- it do
77
- sleep 1
78
- expect(client.create_client(client_name, custom_login_page_on: false)).to(
79
- include('name' => client_name, 'custom_login_page_on' => false)
80
- )
124
+ describe '.patch_client', vcr: true do
125
+ it 'should raise an error with a missing client_id' do
126
+ expect do
127
+ client.patch_client('', custom_login_page_on: false)
128
+ end.to raise_error Auth0::MissingClientId
129
+ end
130
+
131
+ it 'should raise an error with a missing client_id' do
132
+ expect do
133
+ client.patch_client('__test_client_id__', '')
134
+ end.to raise_error Auth0::MissingParameter
81
135
  end
82
- it { expect { client.create_client('', custom_login_page_on: false) }.to raise_error(Auth0::MissingParameter) }
83
- end
84
136
 
85
- describe '.patch_client' do
86
- it do
87
- sleep 1
137
+ it 'should update the client with the correct attributes' do
88
138
  expect(
89
139
  client.patch_client(
90
- existing_client['client_id'],
140
+ test_client['client_id'],
91
141
  custom_login_page_on: false,
92
142
  sso: true
93
143
  )
94
- ).to(include('custom_login_page_on' => false, 'sso' => true))
95
- end
96
- it do
97
- sleep 1
98
- expect { client.patch_client('', custom_login_page_on: false) }.to raise_error(Auth0::MissingClientId)
144
+ ).to(
145
+ include(
146
+ 'custom_login_page_on' => false,
147
+ 'sso' => true
148
+ )
149
+ )
99
150
  end
100
151
  end
101
152
 
102
- describe '.delete_rule' do
103
- it do
104
- sleep 1
105
- expect { client.delete_client(existing_client['client_id']) }.to_not raise_error
153
+ describe '.delete_client', vcr: true do
154
+ it 'should raise an error with an empty client_id' do
155
+ expect do
156
+ client.delete_client ''
157
+ end.to raise_error Auth0::MissingClientId
106
158
  end
107
- it do
108
- sleep 1
109
- expect { client.delete_client '' }.to raise_error(Auth0::MissingClientId)
159
+
160
+ it 'should delete the test client without an error' do
161
+ expect do
162
+ client.delete_client(test_client['client_id'])
163
+ end.to_not raise_error
110
164
  end
111
165
  end
112
166
  end
@@ -1,145 +1,159 @@
1
1
  require 'spec_helper'
2
2
  describe Auth0::Api::V2::Connections do
3
- attr_reader :client, :connection, :strategy, :name, :enabled_clients, :options
3
+ attr_reader :client,
4
+ :test_user_name, :test_user_email,
5
+ :test_con_name, :test_con_strategy, :test_conn
4
6
 
5
7
  before(:all) do
6
- @client = Auth0Client.new(v2_creds)
7
- @name = "#{SecureRandom.uuid[0..25]}#{entity_suffix}"
8
- @strategy = 'google-oauth2'
9
- @options = {}
10
- @enabled_clients = []
11
- @connection = client.create_connection(name: name,
12
- strategy: strategy,
13
- options: options,
14
- enabled_clients: enabled_clients)
15
- end
8
+ @client ||= Auth0Client.new(v2_creds)
9
+ @test_user_name = "#{entity_suffix}-username"
10
+ @test_user_email = "#{entity_suffix}-#{test_user_name}@auth0.com"
11
+ @test_con_name = "TestConnection-#{entity_suffix}"
12
+ @test_con_strategy = 'auth0'
16
13
 
17
- describe '.connections' do
18
- let(:connections) do
19
- sleep 1
20
- client.connections
14
+ VCR.use_cassette(
15
+ 'Auth0_Api_V2_Connections/create_test_connection'
16
+ ) do
17
+ @test_conn ||= client.create_connection(
18
+ name: test_con_name,
19
+ strategy: test_con_strategy
20
+ )
21
21
  end
22
22
 
23
- it do
24
- sleep 1
25
- expect(connections.size).to be > 0
23
+ VCR.use_cassette(
24
+ 'Auth0_Api_V2_Connections/create_test_user'
25
+ ) do
26
+ @test_user ||= client.create_user(
27
+ test_user_name,
28
+ email: test_user_email,
29
+ password: Faker::Internet.password,
30
+ connection: Auth0::Api::AuthenticationEndpoints::UP_AUTH
31
+ )
26
32
  end
27
- it do
28
- sleep 1
29
- expect(connections.find { |con| con['name'] == name }).to_not be_empty
33
+ end
34
+
35
+ describe '.create_connection', vcr: true do
36
+ let(:subject) { test_conn }
37
+
38
+ it 'should return specific fields upon creation' do
39
+ should include('id', 'name', 'options', 'strategy')
30
40
  end
31
41
 
32
- context '#filters' do
33
- it do
34
- sleep 1
35
- expect(client.connections(strategy: strategy).size).to be > 0
36
- end
37
- it do
38
- sleep 1
39
- expect(client.connections(strategy: strategy, fields: [:name].join(',')).first).to include('name')
40
- end
41
- it do
42
- sleep 1
43
- expect(client.connections(strategy: strategy, fields: [:name].join(','), include_fields: false).first).to_not(
44
- include('name')
45
- )
46
- end
42
+ it 'should return the data sent' do
43
+ should include(
44
+ 'name' => test_conn['name'],
45
+ 'strategy' => test_con_strategy,
46
+ )
47
47
  end
48
48
  end
49
49
 
50
- describe '.connection' do
50
+ describe '.connection', vcr: true do
51
51
  let(:subject) do
52
- sleep 1
53
- client.connection(connection['id'])
52
+ client.connection(test_conn['id'])
54
53
  end
55
54
 
56
- it do
57
- sleep 1
58
- should include('name' => connection['name'])
55
+ it 'should find the correct connection' do
56
+ should include('name' => test_conn['name'])
59
57
  end
60
58
 
61
59
  context '#filters' do
62
- it do
63
- sleep 1
64
- expect(client.connection(connection['id'], fields: [:name, :id].join(','))).to include('id', 'name')
60
+ it 'should include the fields indicated' do
61
+ expect(
62
+ client.connection(
63
+ test_conn['id'],
64
+ fields: [:name, :id].join(',')
65
+ )
66
+ ).to include('id', 'name')
65
67
  end
66
- it do
67
- sleep 1
68
- expect(client.connection(connection['id'], fields: [:name, :id].join(','), include_fields: false)).to_not(
68
+
69
+ it 'should exclude the fields indicated' do
70
+ expect(
71
+ client.connection(
72
+ test_conn['id'],
73
+ fields: [:name, :id].join(','),
74
+ include_fields: false
75
+ )
76
+ ).to_not(
69
77
  include('id', 'name')
70
78
  )
71
79
  end
72
80
  end
73
81
  end
74
82
 
75
- describe '.create_connection' do
76
- let(:subject) { connection }
77
-
78
- it do
79
- sleep 1
80
- should include('id', 'name')
81
- end
82
- it do
83
- sleep 1
84
- should include('name' => connection['name'])
83
+ describe '.connections', vcr: true do
84
+ let(:connections) do
85
+ client.connections
85
86
  end
86
- end
87
87
 
88
- describe '.delete_connection' do
89
- it do
90
- sleep 1
91
- expect { client.delete_connection connection['id'] }.to_not raise_error
88
+ it 'should not be empty' do
89
+ expect(connections.size).to be > 0
92
90
  end
93
- end
94
91
 
95
- describe '.update_connection' do
96
- let!(:connection_to_update) do
97
- sleep 1
98
- client.create_connection(name: "#{SecureRandom.uuid[0..25]}#{entity_suffix}",
99
- strategy: strategy,
100
- options: options,
101
- enabled_clients: enabled_clients)
92
+ it 'should include the previously created connection' do
93
+ expect(
94
+ connections.find do |con|
95
+ con['name'] == test_con_name
96
+ end
97
+ ).to_not be_empty
102
98
  end
103
- new_name = SecureRandom.uuid[0..25]
104
- let(:options) { { username: new_name } }
105
- it do
106
- sleep 1
107
- expect(client.update_connection(connection_to_update['id'], 'options' => options)['options']).to include(
108
- 'username' => new_name
109
- )
99
+
100
+ context '#filters' do
101
+ it 'should include previously-created connection when filtered' do
102
+ expect(
103
+ client.connections(strategy: test_con_strategy).size
104
+ ).to be > 0
105
+ end
106
+
107
+ it 'should should include the fields indicated from filtered results' do
108
+ expect(
109
+ client.connections(
110
+ strategy: test_con_strategy,
111
+ fields: [:name].join(',')
112
+ ).first
113
+ ).to include('name')
114
+ end
115
+
116
+ it 'should should exclude the fields indicated from filtered results' do
117
+ expect(
118
+ client.connections(
119
+ strategy: test_con_strategy,
120
+ fields: [:name].join(','),
121
+ include_fields: false
122
+ ).first).to_not include('name')
123
+ end
110
124
  end
111
125
  end
112
126
 
113
- describe '.delete_connection_user' do
114
- let(:username) { Faker::Internet.user_name }
115
- let(:email) { "#{entity_suffix}#{Faker::Internet.safe_email(username)}" }
116
- let(:password) { Faker::Internet.password }
117
- let!(:user_to_delete) do
118
- sleep 1
119
- client.create_user(username, email: email,
120
- password: password,
121
- email_verified: false,
122
- connection: Auth0::Api::AuthenticationEndpoints::UP_AUTH,
123
- app_metadata: {})
124
- end
127
+ describe '.delete_connection_user', vcr: true do
125
128
  let(:connection) do
126
- sleep 1
127
- client.connections.find { |connection| connection['name'] == Auth0::Api::AuthenticationEndpoints::UP_AUTH }
129
+ client.connections.find do |connection|
130
+ connection['name'] == Auth0::Api::AuthenticationEndpoints::UP_AUTH
131
+ end
128
132
  end
129
133
 
130
- it do
131
- sleep 1
132
- expect(client.delete_connection_user(connection['id'], email)).to be_empty
134
+ it 'should delete the user created' do
135
+ expect(
136
+ client.delete_connection_user(connection['id'], test_user_email)
137
+ ).to be_empty
133
138
  end
134
139
  end
135
140
 
136
- after(:all) do
137
- client
138
- .connections
139
- .select { |connection| connection['name'].include?(entity_suffix) }
140
- .each { |connection|
141
- sleep 1
142
- client.delete_connection(connection['id'])
143
- }
141
+ describe '.update_connection', vcr: true do
142
+ it 'should update the connection' do
143
+ new_options = test_conn['options']
144
+ new_options['passwordPolicy'] = 'excellent'
145
+ expect(
146
+ client.update_connection(
147
+ test_conn['id'],
148
+ options: new_options
149
+ )['options']['passwordPolicy']
150
+ ).to eq 'excellent'
151
+ end
152
+ end
153
+
154
+ describe '.delete_connection', vcr: true do
155
+ it 'should delete the connection' do
156
+ expect { client.delete_connection test_conn['id'] }.to_not raise_error
157
+ end
144
158
  end
145
159
  end
@@ -1,85 +1,128 @@
1
1
  require 'spec_helper'
2
2
  require 'base64'
3
3
  describe Auth0::Api::V2::DeviceCredentials do
4
- attr_reader :user, :client, :basic_client, :existing_device_credentials
4
+ attr_reader :test_user, :client, :basic_client, :test_credential
5
5
 
6
6
  before(:all) do
7
7
  @client = Auth0Client.new(v2_creds)
8
- username = Faker::Internet.user_name
9
- email = "#{entity_suffix}#{Faker::Internet.safe_email(username)}"
8
+ test_user_name = "#{entity_suffix}-username"
9
+ email = "#{entity_suffix}-#{test_user_name}@auth0.com"
10
10
  password = Faker::Internet.password
11
- sleep 1
12
- @user = client.create_user(username, 'email' => email,
13
- 'password' => password,
14
- 'email_verified' => true,
15
- 'connection' => Auth0::Api::AuthenticationEndpoints::UP_AUTH,
16
- 'app_metadata' => {})
17
-
18
- basic_creds = { connection_id: Auth0::Api::AuthenticationEndpoints::UP_AUTH,
19
- user: email,
20
- password: password,
21
- authorization: 'Basic' }
11
+
12
+ VCR.use_cassette('Auth0_Api_V2_DeviceCredentials/create_test_user') do
13
+ @test_user = client.create_user(
14
+ test_user_name,
15
+ 'email' => email,
16
+ 'password' => password,
17
+ 'email_verified' => true,
18
+ 'connection' => Auth0::Api::AuthenticationEndpoints::UP_AUTH
19
+ )
20
+ end
21
+
22
+
23
+ basic_creds = {
24
+ connection_id: Auth0::Api::AuthenticationEndpoints::UP_AUTH,
25
+ user: email,
26
+ password: password,
27
+ authorization: 'Basic'
28
+ }
22
29
 
23
30
  @basic_client = Auth0Client.new(v2_creds.merge(basic_creds))
24
- sleep 1
25
- @existing_device_credentials = basic_client.create_device_credential(
26
- "#{user['name']}_phone_1",
27
- 'dmFsdWU=',
28
- '68753A44-4D6F-1226-9C60-0050E4C00067',
29
- ENV['CLIENT_ID']
30
- )
31
+
32
+ VCR.use_cassette('Auth0_Api_V2_DeviceCredentials/create_test_credential') do
33
+ @test_credential = basic_client.create_device_credential(
34
+ "#{test_user['name']}_phone_1",
35
+ 'dmFsdWU=',
36
+ '68753A44-4D6F-1226-9C60-0050E4C00067',
37
+ v2_creds[:client_id]
38
+ )
39
+ end
40
+
31
41
  end
32
42
 
33
43
  after(:all) do
34
- sleep 1
35
- client.delete_user(user['user_id'])
44
+ VCR.use_cassette('Auth0_Api_V2_DeviceCredentials/delete_test_user') do
45
+ client.delete_user(test_user['user_id'])
46
+ end
47
+
48
+ VCR.use_cassette('Auth0_Api_V2_DeviceCredentials/delete_test_credential') do
49
+ client.delete_device_credential(test_credential['id'])
50
+ end
36
51
  end
37
52
 
38
- describe '.device_credentials' do
39
- let(:device_credentials) do
40
- sleep 1
41
- basic_client.device_credentials(ENV['CLIENT_ID'])
53
+ describe '.create_device_credential', vcr: true do
54
+ it 'should create the test credentials' do
55
+ expect(test_credential).to(
56
+ include('id' => test_credential['id'])
57
+ )
42
58
  end
43
- it do
44
- sleep 1
45
- expect(device_credentials.size).to be > 0
59
+
60
+ it 'should raise an error if the device_name is empty' do
61
+ expect do
62
+ basic_client.create_device_credential(
63
+ '', 'value', 'device_id', 'client_id'
64
+ )
65
+ end.to raise_error Auth0::InvalidParameter
46
66
  end
47
- it do
48
- sleep 1
49
- expect(device_credentials.find { |cred| cred['id'] == existing_device_credentials['id'] }).to_not be_empty
67
+
68
+ it 'should raise an error if the value is empty' do
69
+ expect do
70
+ basic_client.create_device_credential(
71
+ 'device_name', '', 'device_id', 'client_id'
72
+ )
73
+ end.to raise_error Auth0::InvalidParameter
50
74
  end
51
- context '#filter_by_type' do
52
- let(:filtered_device_credentials) { basic_client.device_credentials(ENV['CLIENT_ID'], type: 'refresh_token') }
53
- it do
54
- sleep 1
55
- expect(filtered_device_credentials.find do |cred|
56
- cred['id'] == existing_device_credentials['id']
57
- end).to eq nil
58
- end
75
+
76
+ it 'should raise an error if the device_id is empty' do
77
+ expect do
78
+ basic_client.create_device_credential(
79
+ 'device_name', 'value', '', 'client_id'
80
+ )
81
+ end.to raise_error Auth0::InvalidParameter
82
+ end
83
+
84
+ it 'should raise an error if the client_id is empty' do
85
+ expect do
86
+ basic_client.create_device_credential(
87
+ 'device_name', 'value', 'device_id', ''
88
+ )
89
+ end.to raise_error Auth0::InvalidParameter
59
90
  end
60
91
  end
61
92
 
62
- describe '.create_device_credential' do
63
- let!(:new_credentials) do
64
- sleep 1
65
- basic_client.create_device_credential(
66
- "#{user['name']}_phone_2",
67
- 'dmFsdWU=',
68
- '68753A44-4D6F-1226-9C60-0050E4C00067',
69
- ENV['CLIENT_ID']
70
- )
93
+ describe '.device_credentials', vcr: true do
94
+ let(:device_credentials) do
95
+ basic_client.device_credentials(v2_creds[:client_id])
71
96
  end
72
- it do
73
- sleep 1
74
- expect(basic_client.device_credentials(ENV['CLIENT_ID'])
75
- .find { |cred| cred['id'] == new_credentials['id'] }).to_not be_empty
97
+
98
+ it 'should have at least 1 entry' do
99
+ expect(device_credentials.size).to be > 0
100
+ end
101
+
102
+ it 'should include the test credential' do
103
+ expect(
104
+ device_credentials.find do |cred|
105
+ cred['id'] == test_credential['id']
106
+ end).to_not be_empty
107
+ end
108
+
109
+ context '#filter_by_type' do
110
+ it 'should exclude the test credential' do
111
+ expect(
112
+ basic_client.device_credentials(
113
+ v2_creds[:client_id],
114
+ type: 'refresh_token'
115
+ )
116
+ ).to be_empty
117
+ end
76
118
  end
77
119
  end
78
120
 
79
- describe '.delete_device_credential' do
80
- it do
81
- sleep 1
82
- expect { basic_client.delete_device_credential(existing_device_credentials['id']) }.to_not raise_error
121
+ describe '.delete_device_credential', vcr: true do
122
+ it 'should delete the test credential without an error' do
123
+ expect do
124
+ basic_client.delete_device_credential(test_credential['id'])
125
+ end.to_not raise_error
83
126
  end
84
127
  end
85
128
  end