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
@@ -7,9 +7,15 @@ describe Auth0::Api::V2::Users do
7
7
  end
8
8
 
9
9
  context '.users' do
10
- it { expect(@instance).to respond_to(:users) }
11
- it { expect(@instance).to respond_to(:get_users) }
12
- it 'is expected to call /api/v2/users' do
10
+ it 'is expected to respond to a users method' do
11
+ expect(@instance).to respond_to(:users)
12
+ end
13
+
14
+ it 'is expected to respond to a get_users method' do
15
+ expect(@instance).to respond_to(:get_users)
16
+ end
17
+
18
+ it 'is expected to get /api/v2/users' do
13
19
  expect(@instance).to receive(:get).with(
14
20
  '/api/v2/users',
15
21
  per_page: nil,
@@ -19,132 +25,237 @@ describe Auth0::Api::V2::Users do
19
25
  connection: nil,
20
26
  fields: nil,
21
27
  include_fields: nil,
22
- q: nil
28
+ q: nil,
29
+ search_engine: nil
23
30
  )
24
31
  expect { @instance.users }.not_to raise_error
25
32
  end
33
+
34
+ it 'is expected to get /api/v2/users with custom parameters' do
35
+ expect(@instance).to receive(:get).with(
36
+ '/api/v2/users',
37
+ per_page: 10,
38
+ page: 1,
39
+ include_totals: true,
40
+ sort: nil,
41
+ connection: 'auth0',
42
+ fields: 'name,email',
43
+ include_fields: nil,
44
+ q: nil,
45
+ search_engine: 'v3'
46
+ )
47
+ expect do
48
+ @instance.users(
49
+ search_engine: 'v3',
50
+ per_page: 10,
51
+ page: 1,
52
+ include_totals: true,
53
+ connection: 'auth0',
54
+ fields: 'name,email'
55
+ )
56
+ end.not_to raise_error
57
+ end
26
58
  end
27
59
 
28
60
  context '.user' do
29
- it { expect(@instance).to respond_to(:user) }
61
+ it 'is expected to respond to a user method' do
62
+ expect(@instance).to respond_to(:user)
63
+ end
64
+
30
65
  it 'is expected to call get request to /api/v2/users/USER_ID' do
31
- expect(@instance).to receive(:get).with('/api/v2/users/USER_ID', fields: nil, include_fields: true)
66
+ expect(@instance).to receive(:get).with(
67
+ '/api/v2/users/USER_ID',
68
+ fields: nil,
69
+ include_fields: true
70
+ )
32
71
  expect { @instance.user('USER_ID') }.not_to raise_error
33
72
  end
34
- it { expect { @instance.user('') }.to raise_error 'Must supply a valid user_id' }
73
+
74
+ it 'is expected to raise an exception when the user ID is empty' do
75
+ expect { @instance.user(nil) }.to raise_exception(Auth0::MissingUserId)
76
+ end
35
77
  end
36
78
 
37
79
  context '.create_user' do
38
- it { expect(@instance).to respond_to(:create_user) }
39
- it 'is expected to call post to /api/v2/users' do
80
+ it 'is expected to respond to a create_user method' do
81
+ expect(@instance).to respond_to(:create_user)
82
+ end
83
+
84
+ it 'is expected to post to /api/v2/users' do
40
85
  expect(@instance).to receive(:post).with(
41
86
  '/api/v2/users',
42
87
  email: 'test@test.com',
43
88
  password: 'password',
44
- connection: 'conn',
45
- name: 'name'
46
- )
47
- @instance.create_user(
48
- 'name',
49
- email: 'test@test.com',
50
- password: 'password',
51
89
  connection: 'conn'
52
90
  )
91
+ expect do
92
+ @instance.create_user(
93
+ 'conn',
94
+ email: 'test@test.com',
95
+ password: 'password'
96
+ )
97
+ end.not_to raise_error
98
+ end
99
+
100
+ it 'is expected to raise error if connection is not specified' do
101
+ expect(@instance).not_to receive(:delete)
102
+ expect {
103
+ @instance.create_user(
104
+ email: 'test@test.com',
105
+ password: 'password'
106
+ )
107
+ }.to raise_exception(
108
+ Auth0::MissingParameter
109
+ )
53
110
  end
54
111
  end
55
112
 
56
113
  context '.delete_users' do
57
- it { expect(@instance).to respond_to :delete_users }
114
+ it 'is expected to respond to a delete_users method' do
115
+ expect(@instance).to respond_to :delete_users
116
+ end
117
+
58
118
  it 'is expected to call delete to /api/v2/users' do
59
119
  expect(@instance).to receive(:delete).with('/api/v2/users')
60
- @instance.delete_users
120
+ expect { @instance.delete_users }.not_to raise_error
61
121
  end
62
122
  end
63
123
 
64
124
  context '.delete_user' do
65
- it { expect(@instance).to respond_to(:delete_user) }
66
- it 'is expected to call delete to /api/v2/users/userId' do
67
- expect(@instance).to receive(:delete).with('/api/v2/users/userId')
68
- @instance.delete_user('userId')
125
+ it 'is expected to respond to a delete_user method' do
126
+ expect(@instance).to respond_to(:delete_user)
127
+ end
128
+
129
+ it 'is expected to delete /api/v2/users/USER_ID' do
130
+ expect(@instance).to receive(:delete).with('/api/v2/users/USER_ID')
131
+ @instance.delete_user('USER_ID')
69
132
  end
70
133
 
71
- it 'is expected not to call delete to /api/v2/users if user_id is blank' do
134
+ it 'is expected not to delete /api/v2/users if user_id is blank' do
72
135
  expect(@instance).not_to receive(:delete)
73
- expect { @instance.delete_user('') }.to raise_exception(
136
+ expect { @instance.delete_user(nil) }.to raise_exception(
74
137
  Auth0::MissingUserId
75
138
  )
76
139
  end
77
140
  end
78
141
 
79
142
  context '.delete_user_provider' do
80
- it { expect(@instance).to respond_to(:delete_user_provider) }
81
- it 'is expected to call delete to /api/v2/users/userId/multifactor/provider' do
82
- expect(@instance).to receive(:delete).with('/api/v2/users/userId/multifactor/provider')
83
- @instance.delete_user_provider('userId', 'provider')
143
+ it 'is expected to respond to a delete_user_provider method' do
144
+ expect(@instance).to respond_to(:delete_user_provider)
145
+ end
146
+
147
+ it 'is expected to delete /api/v2/users/userId/multifactor/provider' do
148
+ expect(@instance).to receive(:delete).with('/api/v2/users/USER_ID/multifactor/PROVIDER_NAME')
149
+ @instance.delete_user_provider('USER_ID', 'PROVIDER_NAME')
150
+ end
151
+
152
+ it 'is expected to raise an exception when the user ID is empty' do
153
+ expect { @instance.delete_user_provider(nil, 'PROVIDER_NAME') }.to raise_exception(Auth0::MissingUserId)
154
+ end
155
+
156
+ it 'is expected to raise an exception when the provider name is empty' do
157
+ expect { @instance.delete_user_provider('USER_ID', nil) }.to raise_error 'Must supply a valid provider name'
84
158
  end
85
159
  end
86
160
 
87
161
  context '.patch_user' do
88
- it { expect(@instance).to respond_to(:patch_user) }
89
- it 'is expected to call patch to /api/v2/users/userID' do
162
+ it 'is expected to respond to a patch_user method' do
163
+ expect(@instance).to respond_to(:patch_user)
164
+ end
165
+
166
+ it 'is expected to respond to a update_user method' do
167
+ expect(@instance).to respond_to(:update_user)
168
+ end
169
+
170
+ it 'is expected to patch /api/v2/users/USER_ID' do
90
171
  expect(@instance).to receive(:patch).with(
91
- '/api/v2/users/UserID',
172
+ '/api/v2/users/USER_ID',
92
173
  email: 'test@test.com',
93
174
  password: 'password',
94
175
  connection: 'conn',
95
176
  name: 'name'
96
177
  )
97
178
  @instance.patch_user(
98
- 'UserID',
179
+ 'USER_ID',
99
180
  email: 'test@test.com',
100
181
  password: 'password',
101
182
  connection: 'conn',
102
183
  name: 'name'
103
184
  )
104
185
  end
105
- it { expect { @instance.patch_user('', 'body') }.to raise_error 'Must supply a valid user_id' }
106
- it { expect { @instance.patch_user('UserId', '') }.to raise_error 'Must supply a valid body' }
186
+
187
+ it 'is expected to raise an exception when the user ID is empty' do
188
+ expect { @instance.patch_user(nil, 'BODY') }.to raise_exception(Auth0::MissingUserId)
189
+ end
190
+
191
+ it 'is expected to raise an error when the body is empty' do
192
+ expect { @instance.patch_user('USER_ID', nil) }.to raise_error 'Must supply a valid body'
193
+ end
107
194
  end
108
195
 
109
196
  context '.link_user_account' do
110
- it { expect(@instance).to respond_to(:link_user_account) }
111
- it 'is expected to call post to /api/v2/users/UserId/identities' do
112
- expect(@instance).to receive(:post).with('/api/v2/users/UserID/identities', body: 'json body')
113
- @instance.link_user_account('UserID', body: 'json body')
197
+ it 'is expected to respond to a link_user_account method' do
198
+ expect(@instance).to respond_to(:link_user_account)
199
+ end
200
+
201
+ it 'is expected to post to /api/v2/users/UserId/identities' do
202
+ expect(@instance).to receive(:post).with('/api/v2/users/USER_ID/identities', body: 'json body')
203
+ @instance.link_user_account('USER_ID', body: 'json body')
114
204
  end
115
- it { expect { @instance.link_user_account('', 'body') }.to raise_error 'Must supply a valid user_id' }
116
- it { expect { @instance.link_user_account('UserId', '') }.to raise_error 'Must supply a valid body' }
117
- end
118
205
 
119
- context '.unlink_users_account' do
120
- it { expect(@instance).to respond_to(:unlink_users_account) }
121
- it 'is expected to call delete to /api/v2/users/UserId/identities' do
122
- expect(@instance).to receive(:delete).with('/api/v2/users/UserID/identities/provider_name/Secondary_User_ID')
123
- @instance.unlink_users_account('UserID', 'provider_name', 'Secondary_User_ID')
206
+ it 'is expected to raise an exception when the user ID is empty' do
207
+ expect { @instance.link_user_account(nil, 'BODY') }.to raise_exception(Auth0::MissingUserId)
124
208
  end
125
- it { expect { @instance.unlink_users_account('', 'pro', 'SUserID') }.to raise_error 'Must supply a valid user_id' }
126
- it { expect { @instance.unlink_users_account('UID', nil, 'SUID') }.to raise_error 'Must supply a valid provider' }
127
- it do
128
- expect { @instance.unlink_users_account('UID', 'pro', nil) }.to raise_error 'Must supply a valid secondary user_id'
209
+
210
+ it 'is expected to raise an error when the body is empty' do
211
+ expect { @instance.link_user_account('USER_ID', nil) }.to raise_error 'Must supply a valid body'
129
212
  end
130
213
  end
131
214
 
132
- context '.delete_user_provider' do
133
- it { expect(@instance).to respond_to(:delete_user_provider) }
134
- it 'is expected to call delete to /api/v2/users/User_ID/multifactor/provider_name' do
135
- expect(@instance).to receive(:delete).with('/api/v2/users/User_ID/multifactor/provider_name')
136
- @instance.delete_user_provider('User_ID', 'provider_name')
215
+ context '.unlink_user_account' do
216
+ it 'is expected to respond to a unlink_user_account method' do
217
+ expect(@instance).to respond_to(:unlink_user_account)
218
+ end
219
+ it 'is expected to respond to a unlink_users_account alias' do
220
+ expect(@instance).to respond_to(:unlink_users_account)
221
+ end
222
+
223
+ it 'is expected to delete /api/v2/users/UserId/identities' do
224
+ expect(@instance).to receive(:delete).with('/api/v2/users/USER_ID_1/identities/PROVIDER_NAME/USER_ID_2')
225
+ @instance.unlink_users_account('USER_ID_1', 'PROVIDER_NAME', 'USER_ID_2')
226
+ end
227
+
228
+ it 'is expected to raise an exception when the user ID is empty' do
229
+ expect do
230
+ @instance.unlink_users_account(nil, 'PROVIDER_NAME', 'USER_ID_2')
231
+ end.to raise_error 'Must supply a valid user_id'
232
+ end
233
+
234
+ it 'is expected to raise an exception when the provider is empty' do
235
+ expect do
236
+ @instance.unlink_users_account('USER_ID_1', nil, 'USER_ID_2')
237
+ end.to raise_error 'Must supply a valid provider'
238
+ end
239
+
240
+ it 'is expected to raise an exception when the secondary user ID is empty' do
241
+ expect do
242
+ @instance.unlink_users_account('USER_ID_1', 'PROVIDER_NAME', nil)
243
+ end.to raise_error 'Must supply a valid secondary user_id'
137
244
  end
138
- it { expect { @instance.delete_user_provider(nil, 'test') }.to raise_error 'Must supply a valid user_id' }
139
245
  end
140
246
 
141
247
  context '.user_logs' do
142
- it { expect(@instance).to respond_to(:user_logs) }
143
- it { expect(@instance).to respond_to(:get_user_log_events) }
144
- it 'is expected to call /api/v2/USER_ID/logs' do
248
+ it 'is expected to respond to a user_logs method' do
249
+ expect(@instance).to respond_to(:user_logs)
250
+ end
251
+
252
+ it 'is expected to respond to a get_user_log_events method' do
253
+ expect(@instance).to respond_to(:get_user_log_events)
254
+ end
255
+
256
+ it 'is expected to get /api/v2/USER_ID/logs' do
145
257
  expect(@instance).to receive(:get).with(
146
258
  '/api/v2/users/USER_ID/logs',
147
- user_id: 'USER_ID',
148
259
  per_page: nil,
149
260
  page: nil,
150
261
  include_totals: nil,
@@ -152,16 +263,309 @@ describe Auth0::Api::V2::Users do
152
263
  )
153
264
  expect { @instance.user_logs('USER_ID') }.not_to raise_error
154
265
  end
155
- it { expect { @instance.user_logs('') }.to raise_error 'Must supply a valid user_id' }
266
+
267
+ it 'is expected to raise an exception when the user ID is empty' do
268
+ expect { @instance.user_logs(nil) }.to raise_exception(Auth0::MissingUserId)
269
+ end
270
+
156
271
  it 'is expected to raise an error when per_page is higher than 100' do
157
272
  expect { @instance.user_logs('USER_ID', per_page: rand(101..2000)) }.to raise_error(
158
273
  'The total amount of entries per page should be less than 100'
159
274
  )
160
275
  end
276
+
161
277
  it 'is expected to raise an error when sort does not match pattern' do
162
278
  expect { @instance.user_logs('USER_ID', sort: 'no match') }.to raise_error(
163
279
  'Sort does not match pattern ^(([a-zA-Z0-9_\\.]+))\\:(1|-1)$'
164
280
  )
165
281
  end
166
282
  end
283
+
284
+ context '.get_roles' do
285
+ it 'is expected to respond to a get_roles method' do
286
+ expect(@instance).to respond_to(:get_user_roles)
287
+ end
288
+
289
+ it 'is expected to raise an exception when the user ID is empty' do
290
+ expect { @instance.get_user_roles(nil) }.to raise_exception(Auth0::MissingUserId)
291
+ end
292
+
293
+ it 'is expected to get roles with default parameters' do
294
+ expect(@instance).to receive(:get).with(
295
+ '/api/v2/users/USER_ID/roles',
296
+ per_page: nil,
297
+ page: nil,
298
+ include_totals: nil
299
+ )
300
+ expect { @instance.get_user_roles('USER_ID') }.not_to raise_error
301
+ end
302
+
303
+ it 'is expected to get roles with custom parameters' do
304
+ expect(@instance).to receive(:get).with(
305
+ '/api/v2/users/USER_ID/roles',
306
+ per_page: 20,
307
+ page: 2,
308
+ include_totals: true
309
+ )
310
+ expect do
311
+ @instance.get_user_roles('USER_ID', per_page: 20, page: 2, include_totals: true)
312
+ end.not_to raise_error
313
+ end
314
+ end
315
+
316
+ context '.remove_user_roles' do
317
+ it 'is expected to respond to a remove_user_roles method' do
318
+ expect(@instance).to respond_to(:remove_user_roles)
319
+ end
320
+
321
+ it 'is expected to raise an exception when the user ID is empty' do
322
+ expect { @instance.remove_user_roles(nil, 'ROLES') }.to raise_exception(Auth0::MissingUserId)
323
+ end
324
+
325
+ it 'is expected to raise an exception when the roles are not an array' do
326
+ expect { @instance.remove_user_roles('USER_ID', 'ROLES') }.to raise_exception(Auth0::InvalidParameter)
327
+ end
328
+
329
+ it 'is expected to raise an exception when the roles are empty' do
330
+ expect { @instance.remove_user_roles('USER_ID', []) }.to raise_exception(Auth0::MissingParameter)
331
+ end
332
+
333
+ it 'is expected to raise an exception when the roles are empty' do
334
+ expect { @instance.remove_user_roles('USER_ID', [1, 2]) }.to raise_exception(Auth0::InvalidParameter)
335
+ end
336
+
337
+ it 'is expected to remove roles' do
338
+ expect(@instance).to receive(:delete_with_body).with(
339
+ '/api/v2/users/USER_ID/roles',
340
+ roles: %w[test-role-01 test-role-02]
341
+ )
342
+ expect do
343
+ @instance.remove_user_roles('USER_ID', %w[test-role-01 test-role-02])
344
+ end.not_to raise_error
345
+ end
346
+ end
347
+
348
+ context '.add_roles' do
349
+ it 'is expected to respond to a add_roles method' do
350
+ expect(@instance).to respond_to(:add_user_roles)
351
+ end
352
+
353
+ it 'is expected to raise an exception when the user ID is empty' do
354
+ expect { @instance.add_user_roles(nil, 'ROLES') }.to raise_exception(Auth0::MissingUserId)
355
+ end
356
+
357
+ it 'is expected to raise an exception when the user ID is empty' do
358
+ expect { @instance.add_user_roles('USER_ID', 'ROLES') }.to raise_exception(Auth0::InvalidParameter)
359
+ end
360
+
361
+ it 'is expected to raise an exception when the roles are empty' do
362
+ expect { @instance.add_user_roles('USER_ID', [3, 4]) }.to raise_exception(Auth0::InvalidParameter)
363
+ end
364
+
365
+ it 'is expected to add roles' do
366
+ expect(@instance).to receive(:post).with(
367
+ '/api/v2/users/USER_ID/roles',
368
+ roles: %w[test-role-03 test-role-04]
369
+ )
370
+ expect do
371
+ @instance.add_user_roles('USER_ID', %w[test-role-03 test-role-04])
372
+ end.not_to raise_error
373
+ end
374
+ end
375
+
376
+ context '.get_enrollments' do
377
+ it 'is expected to respond to a get_enrollments method' do
378
+ expect(@instance).to respond_to(:get_enrollments)
379
+ end
380
+
381
+ it 'is expected to raise an exception when the user ID is empty' do
382
+ expect { @instance.get_enrollments(nil) }.to raise_exception(Auth0::MissingUserId)
383
+ end
384
+
385
+ it 'is expected to get enrollments' do
386
+ expect(@instance).to receive(:get).with('/api/v2/users/USER_ID/enrollments')
387
+ expect do
388
+ @instance.get_enrollments('USER_ID')
389
+ end.not_to raise_error
390
+ end
391
+ end
392
+
393
+ context '.get_permissions' do
394
+ it 'is expected to respond to a get_permissions method' do
395
+ expect(@instance).to respond_to(:get_user_permissions)
396
+ end
397
+
398
+ it 'is expected to raise an exception when the user ID is empty' do
399
+ expect { @instance.get_user_permissions(nil) }.to raise_exception(Auth0::MissingUserId)
400
+ end
401
+
402
+ it 'is expected to get permissions' do
403
+ expect(@instance).to receive(:get).with(
404
+ '/api/v2/users/USER_ID/permissions',
405
+ per_page: nil,
406
+ page: nil,
407
+ include_totals: nil,
408
+ )
409
+ expect do
410
+ @instance.get_user_permissions('USER_ID')
411
+ end.not_to raise_error
412
+ end
413
+
414
+ it 'is expected to get permissions with custom parameters' do
415
+ expect(@instance).to receive(:get).with(
416
+ '/api/v2/users/USER_ID/permissions',
417
+ per_page: 10,
418
+ page: 3,
419
+ include_totals: true
420
+ )
421
+ expect do
422
+ @instance.get_user_permissions('USER_ID', per_page: 10, page: 3, include_totals: true)
423
+ end.not_to raise_error
424
+ end
425
+ end
426
+
427
+ context '.remove_permissions' do
428
+ it 'is expected to respond to a remove_permissions method' do
429
+ expect(@instance).to respond_to(:remove_user_permissions)
430
+ end
431
+
432
+ it 'is expected to raise an exception when the user ID is empty' do
433
+ expect { @instance.remove_user_permissions(nil, 'PERMISSIONS') }.to raise_exception(Auth0::MissingUserId)
434
+ end
435
+
436
+ it 'is expected to raise an exception when the permissions are empty' do
437
+ expect { @instance.remove_user_permissions('USER_ID', []) }.to raise_exception(Auth0::MissingParameter)
438
+ end
439
+
440
+ it 'is expected to raise an exception when the array does not consist of Permissions' do
441
+ expect do
442
+ @instance.remove_user_permissions('USER_ID', %w[permission-01 permission02])
443
+ end.to raise_exception(Auth0::InvalidParameter)
444
+ end
445
+
446
+ it 'is expected to remove permissions' do
447
+ expect(@instance).to receive(:delete_with_body).with(
448
+ '/api/v2/users/USER_ID/permissions',
449
+ permissions: [
450
+ {
451
+ permission_name: 'permission-name-1',
452
+ resource_server_identifier: 'server-id-1'
453
+ },
454
+ {
455
+ permission_name: 'permission-name-2',
456
+ resource_server_identifier: 'server-id-2'
457
+ }
458
+ ]
459
+ )
460
+ expect do
461
+ @instance.remove_user_permissions(
462
+ 'USER_ID',
463
+ [
464
+ Auth0::Permission.new('permission-name-1', 'server-id-1'),
465
+ Auth0::Permission.new('permission-name-2', 'server-id-2')
466
+ ]
467
+ )
468
+ end.not_to raise_error
469
+ end
470
+ end
471
+
472
+ context '.add_permissions' do
473
+ it 'is expected to respond to a add_permissions method' do
474
+ expect(@instance).to respond_to(:add_user_permissions)
475
+ end
476
+
477
+ it 'is expected to raise an exception when the user ID is empty' do
478
+ expect { @instance.add_user_permissions(nil, 'PERMISSIONS') }.to raise_exception(Auth0::MissingUserId)
479
+ end
480
+
481
+ it 'is expected to raise an exception when the permissions are empty' do
482
+ expect { @instance.add_user_permissions('USER_ID', []) }.to raise_exception(Auth0::MissingParameter)
483
+ end
484
+
485
+ it 'is expected to raise an exception when the permissions are not Permission structs' do
486
+ expect do
487
+ @instance.add_user_permissions('USER_ID', %w[permission-01 permission02])
488
+ end.to raise_exception(Auth0::InvalidParameter)
489
+ end
490
+
491
+ it 'is expected to add permissions' do
492
+ expect(@instance).to receive(:post).with(
493
+ '/api/v2/users/USER_ID/permissions',
494
+ permissions: [
495
+ {
496
+ permission_name: 'permission-name-1',
497
+ resource_server_identifier: 'server-id-1'
498
+ },
499
+ {
500
+ permission_name: 'permission-name-2',
501
+ resource_server_identifier: 'server-id-2'
502
+ }
503
+ ]
504
+ )
505
+ expect do
506
+ @instance.add_user_permissions(
507
+ 'USER_ID',
508
+ [
509
+ Auth0::Permission.new('permission-name-1', 'server-id-1'),
510
+ Auth0::Permission.new('permission-name-2', 'server-id-2')
511
+ ]
512
+ )
513
+ end.not_to raise_error
514
+ end
515
+ end
516
+
517
+ context '.generate_recovery_code' do
518
+ it 'is expected to respond to a generate_recovery_code method' do
519
+ expect(@instance).to respond_to(:generate_recovery_code)
520
+ end
521
+
522
+ it 'is expected to raise an exception when the user ID is empty' do
523
+ expect { @instance.generate_recovery_code(nil) }.to raise_exception(Auth0::MissingUserId)
524
+ end
525
+
526
+ it 'is expected to get generate a recovery code' do
527
+ expect(@instance).to receive(:post).with('/api/v2/users/USER_ID/recovery-code-regeneration')
528
+ expect do
529
+ @instance.generate_recovery_code('USER_ID')
530
+ end.not_to raise_error
531
+ end
532
+ end
533
+
534
+ context '.invalidate_browsers' do
535
+ it 'is expected to respond to a invalidate_browsers method' do
536
+ expect(@instance).to respond_to(:invalidate_browsers)
537
+ end
538
+
539
+ it 'is expected to raise an exception when the user ID is empty' do
540
+ expect { @instance.invalidate_browsers(nil) }.to raise_exception(Auth0::MissingUserId)
541
+ end
542
+
543
+ it 'is expected to invalidate remembered browsers' do
544
+ expect(@instance).to receive(:post).with(
545
+ '/api/v2/users/USER_ID/multifactor/actions/invalidate-remember-browser'
546
+ )
547
+ expect do
548
+ @instance.invalidate_browsers('USER_ID')
549
+ end.not_to raise_error
550
+ end
551
+ end
552
+
553
+ context '.get_user_organizations' do
554
+ it 'is expected to respond to a get_user_organizations method' do
555
+ expect(@instance).to respond_to(:get_user_organizations)
556
+ end
557
+
558
+ it 'is expected to raise an exception when the user ID is empty' do
559
+ expect { @instance.get_user_organizations(nil) }.to raise_exception(Auth0::MissingUserId)
560
+ end
561
+
562
+ it 'is expected to get users organizations' do
563
+ expect(@instance).to receive(:get).with(
564
+ '/api/v2/users/USER_ID/organizations'
565
+ )
566
+ expect do
567
+ @instance.get_user_organizations('USER_ID')
568
+ end.not_to raise_error
569
+ end
570
+ end
167
571
  end