auth0 4.17.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -0
  3. data/CHANGELOG.md +407 -22
  4. data/README.md +80 -178
  5. data/auth0.gemspec +10 -15
  6. data/lib/auth0/api/authentication_endpoints.rb +162 -249
  7. data/lib/auth0/api/v2/actions.rb +209 -0
  8. data/lib/auth0/api/v2/attack_protection.rb +79 -0
  9. data/lib/auth0/api/v2/branding.rb +65 -0
  10. data/lib/auth0/api/v2/client_grants.rb +27 -2
  11. data/lib/auth0/api/v2/clients.rb +42 -0
  12. data/lib/auth0/api/v2/connections.rb +14 -5
  13. data/lib/auth0/api/v2/device_credentials.rb +12 -7
  14. data/lib/auth0/api/v2/grants.rb +49 -0
  15. data/lib/auth0/api/v2/jobs.rb +18 -5
  16. data/lib/auth0/api/v2/logs.rb +2 -2
  17. data/lib/auth0/api/v2/organizations.rb +407 -0
  18. data/lib/auth0/api/v2/refresh_tokens.rb +34 -0
  19. data/lib/auth0/api/v2/roles.rb +7 -3
  20. data/lib/auth0/api/v2/sessions.rb +43 -0
  21. data/lib/auth0/api/v2/tickets.rb +14 -2
  22. data/lib/auth0/api/v2/users.rb +203 -12
  23. data/lib/auth0/api/v2.rb +18 -4
  24. data/lib/auth0/client_assertion.rb +45 -0
  25. data/lib/auth0/exception.rb +17 -8
  26. data/lib/auth0/mixins/access_token_struct.rb +2 -2
  27. data/lib/auth0/mixins/api_token_struct.rb +2 -3
  28. data/lib/auth0/mixins/httpproxy.rb +98 -36
  29. data/lib/auth0/mixins/initializer.rb +6 -9
  30. data/lib/auth0/mixins/permission_struct.rb +2 -2
  31. data/lib/auth0/mixins/token_management.rb +35 -0
  32. data/lib/auth0/mixins/validation.rb +33 -6
  33. data/lib/auth0/mixins.rb +2 -1
  34. data/lib/auth0/version.rb +1 -1
  35. metadata +58 -632
  36. data/.bundle/config +0 -4
  37. data/.circleci/config.yml +0 -23
  38. data/.env.example +0 -2
  39. data/.gemrelease +0 -2
  40. data/.github/CODEOWNERS +0 -1
  41. data/.github/ISSUE_TEMPLATE.md +0 -39
  42. data/.github/PULL_REQUEST_TEMPLATE.md +0 -35
  43. data/.github/stale.yml +0 -20
  44. data/.gitignore +0 -14
  45. data/.rspec +0 -3
  46. data/.rubocop.yml +0 -10
  47. data/.rubocop_todo.yml +0 -5
  48. data/CODE_OF_CONDUCT.md +0 -3
  49. data/DEPLOYMENT.md +0 -61
  50. data/Dockerfile +0 -5
  51. data/Gemfile +0 -19
  52. data/Gemfile.lock +0 -227
  53. data/Guardfile +0 -37
  54. data/RUBYGEM.md +0 -9
  55. data/Rakefile +0 -53
  56. data/codecov.yml +0 -22
  57. data/deploy_documentation.sh +0 -29
  58. data/doc_config/templates/default/fulldoc/html/css/full_list.css +0 -79
  59. data/doc_config/templates/default/fulldoc/html/css/style.css +0 -546
  60. data/doc_config/templates/default/layout/html/breadcrumb.erb +0 -11
  61. data/doc_config/templates/default/layout/html/footer.erb +0 -115
  62. data/doc_config/templates/default/layout/html/headers.erb +0 -17
  63. data/doc_config/templates/default/layout/html/layout.erb +0 -27
  64. data/examples/ruby-api/.env.example +0 -2
  65. data/examples/ruby-api/.gitignore +0 -86
  66. data/examples/ruby-api/Gemfile +0 -8
  67. data/examples/ruby-api/README.md +0 -24
  68. data/examples/ruby-api/config.ru +0 -2
  69. data/examples/ruby-api/main.rb +0 -33
  70. data/examples/ruby-on-rails-api/.env.example +0 -2
  71. data/examples/ruby-on-rails-api/.gitignore +0 -18
  72. data/examples/ruby-on-rails-api/Gemfile +0 -48
  73. data/examples/ruby-on-rails-api/README.md +0 -27
  74. data/examples/ruby-on-rails-api/Rakefile +0 -6
  75. data/examples/ruby-on-rails-api/app/assets/images/.keep +0 -0
  76. data/examples/ruby-on-rails-api/app/assets/javascripts/application.js +0 -16
  77. data/examples/ruby-on-rails-api/app/assets/stylesheets/application.css +0 -15
  78. data/examples/ruby-on-rails-api/app/controllers/application_controller.rb +0 -8
  79. data/examples/ruby-on-rails-api/app/controllers/concerns/.keep +0 -0
  80. data/examples/ruby-on-rails-api/app/controllers/ping_controller.rb +0 -6
  81. data/examples/ruby-on-rails-api/app/controllers/secured_ping_controller.rb +0 -11
  82. data/examples/ruby-on-rails-api/app/helpers/application_helper.rb +0 -3
  83. data/examples/ruby-on-rails-api/app/mailers/.keep +0 -0
  84. data/examples/ruby-on-rails-api/app/models/.keep +0 -0
  85. data/examples/ruby-on-rails-api/app/models/User.rb +0 -5
  86. data/examples/ruby-on-rails-api/app/models/concerns/.keep +0 -0
  87. data/examples/ruby-on-rails-api/app/views/layouts/application.html.erb +0 -14
  88. data/examples/ruby-on-rails-api/bin/bundle +0 -3
  89. data/examples/ruby-on-rails-api/bin/rails +0 -4
  90. data/examples/ruby-on-rails-api/bin/rake +0 -4
  91. data/examples/ruby-on-rails-api/bin/setup +0 -29
  92. data/examples/ruby-on-rails-api/config/application.rb +0 -23
  93. data/examples/ruby-on-rails-api/config/boot.rb +0 -4
  94. data/examples/ruby-on-rails-api/config/database.yml +0 -27
  95. data/examples/ruby-on-rails-api/config/environment.rb +0 -5
  96. data/examples/ruby-on-rails-api/config/environments/development.rb +0 -37
  97. data/examples/ruby-on-rails-api/config/environments/production.rb +0 -83
  98. data/examples/ruby-on-rails-api/config/environments/test.rb +0 -41
  99. data/examples/ruby-on-rails-api/config/initializers/backtrace_silencers.rb +0 -7
  100. data/examples/ruby-on-rails-api/config/initializers/cookies_serializer.rb +0 -3
  101. data/examples/ruby-on-rails-api/config/initializers/dotenv.rb +0 -4
  102. data/examples/ruby-on-rails-api/config/initializers/filter_parameter_logging.rb +0 -4
  103. data/examples/ruby-on-rails-api/config/initializers/inflections.rb +0 -16
  104. data/examples/ruby-on-rails-api/config/initializers/knock.rb +0 -35
  105. data/examples/ruby-on-rails-api/config/initializers/mime_types.rb +0 -4
  106. data/examples/ruby-on-rails-api/config/initializers/session_store.rb +0 -3
  107. data/examples/ruby-on-rails-api/config/initializers/wrap_parameters.rb +0 -14
  108. data/examples/ruby-on-rails-api/config/locales/en.yml +0 -23
  109. data/examples/ruby-on-rails-api/config/routes.rb +0 -58
  110. data/examples/ruby-on-rails-api/config/secrets.yml +0 -28
  111. data/examples/ruby-on-rails-api/config.ru +0 -4
  112. data/examples/ruby-on-rails-api/db/schema.rb +0 -15
  113. data/examples/ruby-on-rails-api/db/seeds.rb +0 -7
  114. data/examples/ruby-on-rails-api/lib/assets/.keep +0 -0
  115. data/examples/ruby-on-rails-api/lib/tasks/.keep +0 -0
  116. data/examples/ruby-on-rails-api/log/.keep +0 -0
  117. data/examples/ruby-on-rails-api/public/404.html +0 -67
  118. data/examples/ruby-on-rails-api/public/422.html +0 -67
  119. data/examples/ruby-on-rails-api/public/500.html +0 -66
  120. data/examples/ruby-on-rails-api/public/favicon.ico +0 -0
  121. data/examples/ruby-on-rails-api/public/robots.txt +0 -5
  122. data/examples/ruby-on-rails-api/test/controllers/.keep +0 -0
  123. data/examples/ruby-on-rails-api/test/fixtures/.keep +0 -0
  124. data/examples/ruby-on-rails-api/test/helpers/.keep +0 -0
  125. data/examples/ruby-on-rails-api/test/integration/.keep +0 -0
  126. data/examples/ruby-on-rails-api/test/mailers/.keep +0 -0
  127. data/examples/ruby-on-rails-api/test/models/.keep +0 -0
  128. data/examples/ruby-on-rails-api/test/ping_controller_test.rb +0 -8
  129. data/examples/ruby-on-rails-api/test/secured_ping_controller_test.rb +0 -26
  130. data/examples/ruby-on-rails-api/test/test_helper.rb +0 -16
  131. data/lib/auth0/api/v1/clients.rb +0 -58
  132. data/lib/auth0/api/v1/connections.rb +0 -68
  133. data/lib/auth0/api/v1/logs.rb +0 -43
  134. data/lib/auth0/api/v1/rules.rb +0 -57
  135. data/lib/auth0/api/v1/users.rb +0 -227
  136. data/lib/auth0/api/v1.rb +0 -19
  137. data/publish_rubygem.sh +0 -10
  138. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +0 -63
  139. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +0 -54
  140. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +0 -54
  141. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +0 -55
  142. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +0 -117
  143. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +0 -119
  144. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +0 -57
  145. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +0 -55
  146. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +0 -118
  147. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +0 -55
  148. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +0 -58
  149. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +0 -54
  150. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_check_if_ip_is_blocked/should_return_200_response_code.yml +0 -65
  151. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_remove_ip_block/should_remove_an_IP_successfully.yml +0 -60
  152. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +0 -56
  153. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +0 -59
  154. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +0 -62
  155. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_first_page_of_one_result.yml +0 -66
  156. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +0 -62
  157. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +0 -54
  158. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +0 -64
  159. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +0 -118
  160. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +0 -64
  161. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +0 -54
  162. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +0 -54
  163. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +0 -91
  164. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +0 -63
  165. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +0 -92
  166. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +0 -60
  167. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +0 -132
  168. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +0 -63
  169. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +0 -65
  170. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +0 -132
  171. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +0 -54
  172. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +0 -94
  173. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +0 -118
  174. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +0 -63
  175. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +0 -61
  176. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +0 -63
  177. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +0 -59
  178. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +0 -59
  179. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +0 -59
  180. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +0 -59
  181. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +0 -59
  182. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +0 -54
  183. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +0 -110
  184. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +0 -66
  185. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +0 -65
  186. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +0 -68
  187. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_delete_device_credential/should_delete_the_test_credential_without_an_error.yml +0 -54
  188. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/_filter_by_type/should_exclude_the_test_credential.yml +0 -59
  189. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_have_at_least_1_entry.yml +0 -62
  190. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_include_the_test_credential.yml +0 -62
  191. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +0 -62
  192. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +0 -68
  193. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_credential.yml +0 -54
  194. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +0 -54
  195. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +0 -63
  196. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +0 -54
  197. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +0 -51
  198. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +0 -60
  199. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +0 -61
  200. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +0 -61
  201. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +0 -63
  202. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +0 -54
  203. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +0 -61
  204. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +0 -117
  205. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +0 -60
  206. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +0 -116
  207. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +0 -119
  208. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +0 -175
  209. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +0 -109
  210. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +0 -110
  211. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +0 -59
  212. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +0 -265
  213. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +0 -265
  214. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +0 -61
  215. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +0 -75
  216. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +0 -76
  217. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +0 -62
  218. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +0 -258
  219. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +0 -68
  220. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +0 -54
  221. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +0 -54
  222. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +0 -54
  223. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +0 -54
  224. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +0 -61
  225. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +0 -59
  226. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +0 -59
  227. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +0 -59
  228. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +0 -64
  229. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +0 -61
  230. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +0 -54
  231. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +0 -69
  232. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +0 -69
  233. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +0 -62
  234. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +0 -67
  235. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +0 -67
  236. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +0 -67
  237. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +0 -67
  238. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +0 -67
  239. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +0 -67
  240. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +0 -64
  241. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +0 -69
  242. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +0 -69
  243. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +0 -69
  244. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +0 -69
  245. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +0 -62
  246. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +0 -62
  247. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +0 -54
  248. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +0 -54
  249. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +0 -62
  250. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +0 -62
  251. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +0 -61
  252. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +0 -62
  253. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +0 -60
  254. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +0 -61
  255. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +0 -63
  256. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +0 -62
  257. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +0 -128
  258. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +0 -64
  259. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +0 -64
  260. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +0 -65
  261. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +0 -65
  262. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +0 -59
  263. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +0 -63
  264. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +0 -95
  265. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +0 -61
  266. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +0 -61
  267. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +0 -96
  268. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +0 -96
  269. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +0 -63
  270. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +0 -63
  271. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +0 -68
  272. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +0 -54
  273. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +0 -67
  274. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +0 -62
  275. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +0 -60
  276. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +0 -60
  277. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +0 -60
  278. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +0 -65
  279. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +0 -65
  280. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +0 -65
  281. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +0 -65
  282. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +0 -62
  283. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +0 -67
  284. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +0 -68
  285. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +0 -62
  286. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +0 -62
  287. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +0 -65
  288. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +0 -65
  289. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +0 -65
  290. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +0 -65
  291. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +0 -65
  292. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +0 -69
  293. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v2_search_engine_query.yml +0 -65
  294. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v3_search_engine_query.yml +0 -65
  295. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +0 -65
  296. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +0 -65
  297. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +0 -65
  298. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +0 -65
  299. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +0 -65
  300. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +0 -67
  301. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +0 -67
  302. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +0 -67
  303. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +0 -67
  304. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +0 -60
  305. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +0 -60
  306. data/spec/integration/lib/auth0/api/api_authentication_spec.rb +0 -120
  307. data/spec/integration/lib/auth0/api/v2/api_anomaly_spec.rb +0 -17
  308. data/spec/integration/lib/auth0/api/v2/api_blacklist_spec.rb +0 -27
  309. data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +0 -75
  310. data/spec/integration/lib/auth0/api/v2/api_clients_spec.rb +0 -166
  311. data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +0 -159
  312. data/spec/integration/lib/auth0/api/v2/api_device_credentials_spec.rb +0 -128
  313. data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +0 -117
  314. data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +0 -124
  315. data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +0 -91
  316. data/spec/integration/lib/auth0/api/v2/api_resource_servers_spec.rb +0 -130
  317. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +0 -145
  318. data/spec/integration/lib/auth0/api/v2/api_rules_spec.rb +0 -177
  319. data/spec/integration/lib/auth0/api/v2/api_stats_spec.rb +0 -22
  320. data/spec/integration/lib/auth0/api/v2/api_tenants_spec.rb +0 -59
  321. data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +0 -59
  322. data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +0 -73
  323. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +0 -300
  324. data/spec/integration/lib/auth0/auth0_client_spec.rb +0 -90
  325. data/spec/lib/auth0/api/authentication_endpoints_spec.rb +0 -703
  326. data/spec/lib/auth0/api/v2/anomaly_spec.rb +0 -26
  327. data/spec/lib/auth0/api/v2/blacklists_spec.rb +0 -25
  328. data/spec/lib/auth0/api/v2/client_grants_spec.rb +0 -76
  329. data/spec/lib/auth0/api/v2/clients_spec.rb +0 -104
  330. data/spec/lib/auth0/api/v2/connections_spec.rb +0 -140
  331. data/spec/lib/auth0/api/v2/device_credentials_spec.rb +0 -73
  332. data/spec/lib/auth0/api/v2/emails_spec.rb +0 -47
  333. data/spec/lib/auth0/api/v2/guardian_spec.rb +0 -154
  334. data/spec/lib/auth0/api/v2/jobs_spec.rb +0 -128
  335. data/spec/lib/auth0/api/v2/log_streams_spec.rb +0 -84
  336. data/spec/lib/auth0/api/v2/logs_spec.rb +0 -48
  337. data/spec/lib/auth0/api/v2/prompts_spec.rb +0 -88
  338. data/spec/lib/auth0/api/v2/resource_servers_spec.rb +0 -86
  339. data/spec/lib/auth0/api/v2/roles_spec.rb +0 -362
  340. data/spec/lib/auth0/api/v2/rules_spec.rb +0 -95
  341. data/spec/lib/auth0/api/v2/stats_spec.rb +0 -22
  342. data/spec/lib/auth0/api/v2/tenants_spec.rb +0 -26
  343. data/spec/lib/auth0/api/v2/tickets_spec.rb +0 -63
  344. data/spec/lib/auth0/api/v2/user_blocks_spec.rb +0 -52
  345. data/spec/lib/auth0/api/v2/users_by_email_spec.rb +0 -21
  346. data/spec/lib/auth0/api/v2/users_spec.rb +0 -542
  347. data/spec/lib/auth0/client_spec.rb +0 -153
  348. data/spec/lib/auth0/mixins/httpproxy_spec.rb +0 -304
  349. data/spec/lib/auth0/mixins/initializer_spec.rb +0 -30
  350. data/spec/lib/auth0/mixins/validation_spec.rb +0 -466
  351. data/spec/spec_helper.rb +0 -63
  352. data/spec/support/credentials.rb +0 -30
  353. data/spec/support/dummy_class.rb +0 -18
  354. data/spec/support/dummy_class_for_proxy.rb +0 -5
  355. data/spec/support/dummy_class_for_restclient.rb +0 -2
  356. data/spec/support/import_users.json +0 -13
  357. data/spec/support/stub_response.rb +0 -1
@@ -1,703 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # rubocop:disable Metrics/BlockLength
4
- require 'spec_helper'
5
- describe Auth0::Api::AuthenticationEndpoints do
6
- UP_AUTH = 'Username-Password-Authentication'.freeze
7
-
8
- before :all do
9
- dummy_instance = DummyClass.new
10
- dummy_instance.extend(Auth0::Api::AuthenticationEndpoints)
11
-
12
- @instance = dummy_instance
13
- end
14
-
15
- subject { @instance }
16
-
17
- context '.api_token' do
18
- it { expect(@instance).to respond_to(:api_token) }
19
- it "is expected to POST to '/oauth/token'" do
20
- allow(@instance).to receive(:post).with(
21
- '/oauth/token',
22
- grant_type: 'client_credentials',
23
- client_id: @instance.client_id,
24
- client_secret: @instance.client_secret,
25
- audience: @instance.audience
26
- ).and_return('access_token' => 'AccessToken')
27
-
28
- expect(@instance.api_token.token).to eql 'AccessToken'
29
- end
30
-
31
- it "is expected to POST to '/oauth/token' with a custom audience" do
32
- allow(@instance).to receive(:post).with(
33
- '/oauth/token',
34
- grant_type: 'client_credentials',
35
- client_id: @instance.client_id,
36
- client_secret: @instance.client_secret,
37
- audience: '__test_audience__'
38
- ).and_return('access_token' => 'AccessToken')
39
-
40
- expect(
41
- @instance.api_token(audience: '__test_audience__').token
42
- ).to eql 'AccessToken'
43
- end
44
- end
45
-
46
- context '.obtain_access_token' do
47
- it { expect(@instance).to respond_to(:obtain_access_token) }
48
- it "is expected to make post request to '/oauth/token'" do
49
- allow(@instance).to receive(:post).with(
50
- '/oauth/token', client_id: @instance.client_id, client_secret: @instance.client_secret, grant_type: 'client_credentials'
51
- )
52
- .and_return('access_token' => 'AccessToken')
53
-
54
- expect(@instance).to receive(:post).with(
55
- '/oauth/token', client_id: @instance.client_id, client_secret: @instance.client_secret, grant_type: 'client_credentials'
56
- )
57
- expect(@instance.obtain_access_token).to eql 'AccessToken'
58
- end
59
- end
60
-
61
- context '.obtain_access_token social' do
62
- it { expect(@instance).to respond_to(:obtain_access_token) }
63
- it "is expected to make post request to '/oauth/access_token'" do
64
- allow(@instance).to receive(:post).with(
65
- '/oauth/access_token', client_id: @instance.client_id, access_token: 'access_token', connection: 'facebook',
66
- scope: 'openid'
67
- )
68
- .and_return('access_token' => 'AccessToken')
69
- expect(@instance).to receive(:post).with(
70
- '/oauth/access_token', client_id: @instance.client_id, access_token: 'access_token', connection: 'facebook',
71
- scope: 'openid'
72
- )
73
- expect(@instance.obtain_access_token('access_token', 'facebook', 'openid')).to eql 'AccessToken'
74
- end
75
- end
76
-
77
- context '.obtain_user_tokens' do
78
- it { expect(@instance).to respond_to(:obtain_user_tokens) }
79
- it "is expected to make post request to '/oauth/token'" do
80
- allow(@instance).to receive(:post).with(
81
- '/oauth/token', client_id: @instance.client_id, client_secret: @instance.client_secret, grant_type: 'authorization_code',
82
- connection: 'facebook', code: 'code', scope: 'openid', redirect_uri: 'uri'
83
- )
84
- .and_return('user_tokens' => 'UserToken')
85
- expect(@instance).to receive(:post).with(
86
- '/oauth/token', client_id: @instance.client_id, client_secret: @instance.client_secret, grant_type: 'authorization_code',
87
- connection: 'facebook', code: 'code', scope: 'openid', redirect_uri: 'uri'
88
- )
89
- expect(@instance.obtain_user_tokens('code', 'uri')['user_tokens']).to eq 'UserToken'
90
- end
91
- it { expect { @instance.obtain_user_tokens('', '') }.to raise_error 'Must supply a valid code' }
92
- it { expect { @instance.obtain_user_tokens('code', '') }.to raise_error 'Must supply a valid redirect_uri' }
93
- end
94
-
95
- context '.exchange_auth_code_for_tokens' do
96
- it { is_expected.to respond_to(:exchange_auth_code_for_tokens) }
97
-
98
- it 'is expected to make post request to /oauth/token with default params' do
99
- allow(@instance).to receive(:post).with(
100
- '/oauth/token',
101
- client_id: @instance.client_id,
102
- client_secret: @instance.client_secret,
103
- grant_type: 'authorization_code',
104
- code: '__test_auth_code__',
105
- redirect_uri: nil
106
- ).and_return('access_token' => 'AccessToken')
107
-
108
- is_expected.to receive(:post).with(
109
- '/oauth/token',
110
- client_id: @instance.client_id,
111
- client_secret: @instance.client_secret,
112
- grant_type: 'authorization_code',
113
- code: '__test_auth_code__',
114
- redirect_uri: nil
115
- )
116
-
117
- expect(
118
- @instance.exchange_auth_code_for_tokens(
119
- '__test_auth_code__'
120
- )['access_token']
121
- ).to eq 'AccessToken'
122
- end
123
-
124
- it 'is expected to make post request to /oauth/token with custom params' do
125
- allow(@instance).to receive(:post).with(
126
- '/oauth/token',
127
- grant_type: 'authorization_code',
128
- client_id: '_test_custom_client_id__',
129
- client_secret: '_test_custom_client_secret__',
130
- code: '__test_auth_code__',
131
- redirect_uri: '__test_redirect_uri__'
132
- ).and_return('access_token' => 'AccessToken')
133
-
134
- is_expected.to receive(:post).with(
135
- '/oauth/token',
136
- grant_type: 'authorization_code',
137
- client_id: '_test_custom_client_id__',
138
- client_secret: '_test_custom_client_secret__',
139
- code: '__test_auth_code__',
140
- redirect_uri: '__test_redirect_uri__'
141
- )
142
-
143
- expect(
144
- @instance.exchange_auth_code_for_tokens(
145
- '__test_auth_code__',
146
- redirect_uri: '__test_redirect_uri__',
147
- client_id: '_test_custom_client_id__',
148
- client_secret: '_test_custom_client_secret__'
149
- )['access_token']
150
- ).to eq 'AccessToken'
151
- end
152
-
153
- it 'is expected to raise an error when the code is empty' do
154
- expect do
155
- @instance.exchange_auth_code_for_tokens(nil)
156
- end.to raise_error 'Must provide an authorization code'
157
- end
158
- end
159
-
160
- context '.exchange_refresh_token' do
161
- it { is_expected.to respond_to(:exchange_refresh_token) }
162
-
163
- it 'is expected to make post request to /oauth/token with default params' do
164
- allow(@instance).to receive(:post).with(
165
- '/oauth/token',
166
- grant_type: 'refresh_token',
167
- client_id: @instance.client_id,
168
- client_secret: @instance.client_secret,
169
- refresh_token: '__test_refresh_token__'
170
- ).and_return('access_token' => 'AccessToken')
171
-
172
- is_expected.to receive(:post).with(
173
- '/oauth/token',
174
- grant_type: 'refresh_token',
175
- client_id: @instance.client_id,
176
- client_secret: @instance.client_secret,
177
- refresh_token: '__test_refresh_token__'
178
- )
179
-
180
- expect(
181
- @instance.exchange_refresh_token(
182
- '__test_refresh_token__'
183
- )['access_token']
184
- ).to eq 'AccessToken'
185
- end
186
-
187
- it 'is expected to make post request to /oauth/token with custom params' do
188
- allow(@instance).to receive(:post).with(
189
- '/oauth/token',
190
- grant_type: 'refresh_token',
191
- client_id: '_test_custom_client_id__',
192
- client_secret: '_test_custom_client_secret__',
193
- refresh_token: '__test_refresh_token__'
194
- ).and_return('access_token' => 'AccessToken')
195
-
196
- is_expected.to receive(:post).with(
197
- '/oauth/token',
198
- grant_type: 'refresh_token',
199
- client_id: '_test_custom_client_id__',
200
- client_secret: '_test_custom_client_secret__',
201
- refresh_token: '__test_refresh_token__'
202
- )
203
-
204
- expect(
205
- @instance.exchange_refresh_token(
206
- '__test_refresh_token__',
207
- client_id: '_test_custom_client_id__',
208
- client_secret: '_test_custom_client_secret__'
209
- )['access_token']
210
- ).to eq 'AccessToken'
211
- end
212
-
213
- it 'is expected to raise an error when the refresh_token is empty' do
214
- expect do
215
- @instance.exchange_refresh_token(nil)
216
- end.to raise_error 'Must provide a refresh token'
217
- end
218
- end
219
-
220
- context '.login_with_resource_owner' do
221
- it 'should respond to the login_with_resource_owner method' do
222
- expect(@instance).to respond_to(:login_with_resource_owner)
223
- end
224
-
225
- it 'should make post to /oauth/token with default params' do
226
- allow(@instance).to receive(:post).with(
227
- '/oauth/token',
228
- username: 'test@test.com',
229
- password: 'test12345',
230
- client_id: @instance.client_id,
231
- client_secret: @instance.client_secret,
232
- realm: nil,
233
- audience: nil,
234
- scope: 'openid',
235
- grant_type: 'password'
236
- ).and_return('access_token' => 'AccessToken')
237
-
238
- expect(
239
- @instance.login_with_resource_owner('test@test.com', 'test12345').token
240
- ).to eq 'AccessToken'
241
- end
242
-
243
- it 'should make post to /oauth/token with custom params' do
244
- allow(@instance).to receive(:post).with(
245
- '/oauth/token',
246
- username: 'test@test.com',
247
- password: 'test12345',
248
- client_id: '__custom_client_id__',
249
- client_secret: '__custom_client_secret_',
250
- realm: '__custom_realm__',
251
- audience: '__custom_audience__',
252
- scope: 'openid email',
253
- grant_type: 'http://auth0.com/oauth/grant-type/password-realm'
254
- ).and_return('access_token' => 'AccessToken')
255
-
256
- expect(
257
- @instance.login_with_resource_owner(
258
- 'test@test.com',
259
- 'test12345',
260
- client_id: '__custom_client_id__',
261
- client_secret: '__custom_client_secret_',
262
- realm: '__custom_realm__',
263
- audience: '__custom_audience__',
264
- scope: 'openid email'
265
- ).token
266
- ).to eq 'AccessToken'
267
- end
268
-
269
- it 'should raise an error with a blank username' do
270
- expect do
271
- @instance.login_with_resource_owner('', 'password')
272
- end.to raise_error 'Must supply a valid login_name'
273
- end
274
-
275
- it 'should raise an error with a blank password' do
276
- expect do
277
- @instance.login_with_resource_owner('username', '')
278
- end.to raise_error 'Must supply a valid password'
279
- end
280
- end
281
-
282
- context '.login' do
283
- it { expect(@instance).to respond_to(:login) }
284
- it 'is expected to make post to /oauth/token' do
285
- expect(@instance).to receive(:post).with(
286
- '/oauth/token',
287
- client_id: @instance.client_id,
288
- username: 'test@test.com',
289
- client_secret: @instance.client_secret,
290
- password: 'test12345', scope: 'openid', connection: 'Username-Password-Authentication',
291
- grant_type: 'password', id_token: nil, device: nil
292
- )
293
- @instance.login('test@test.com', 'test12345')
294
- end
295
- it { expect { @instance.login('', '') }.to raise_error 'Must supply a valid username' }
296
- it { expect { @instance.login('username', '') }.to raise_error 'Must supply a valid password' }
297
- end
298
-
299
- # Auth0::API::AuthenticationEndpoints.signup
300
- context '.signup' do
301
- it { expect(@instance).to respond_to(:signup) }
302
-
303
- it 'is expected to make a post request to /dbconnections/signup' do
304
- expect(@instance).to receive(:post).with(
305
- '/dbconnections/signup',
306
- client_id: @instance.client_id,
307
- email: 'test@test.com',
308
- password: 'password',
309
- connection: 'User'
310
- )
311
- @instance.signup('test@test.com', 'password', 'User')
312
- end
313
-
314
- it 'is expected to raise an error with an empty email' do
315
- expect do
316
- @instance.signup('', '')
317
- end.to raise_error 'Must supply a valid email'
318
- end
319
-
320
- it 'is expected to raise an error with an empty password' do
321
- expect do
322
- @instance.signup('email', '')
323
- end.to raise_error 'Must supply a valid password'
324
- end
325
- end
326
-
327
- # Auth0::API::AuthenticationEndpoints.change_password
328
- context '.change_password' do
329
- it { expect(@instance).to respond_to(:change_password) }
330
-
331
- it 'is expected to make post to /dbconnections/change_password' do
332
- expect(@instance).to receive(:post).with(
333
- '/dbconnections/change_password',
334
- client_id: @instance.client_id,
335
- email: 'test@test.com',
336
- password: 'password',
337
- connection: 'User'
338
- )
339
- @instance.change_password('test@test.com', 'password', 'User')
340
- end
341
-
342
- it 'is expected to raise an error with an empty email' do
343
- expect do
344
- @instance.change_password('', '', '')
345
- end.to raise_error 'Must supply a valid email'
346
- end
347
- end
348
-
349
- # Auth0::API::AuthenticationEndpoints.start_passwordless_email_flow
350
- context '.start_passwordless_email_flow' do
351
- it { expect(@instance).to respond_to(:start_passwordless_email_flow) }
352
-
353
- it 'is expected to make post to /passwordless/start' do
354
- expect(@instance).to receive(:post).with(
355
- '/passwordless/start',
356
- client_id: @instance.client_id,
357
- client_secret: @instance.client_secret,
358
- connection: 'email',
359
- email: 'test@test.com',
360
- send: 'code',
361
- authParams: {
362
- scope: 'scope',
363
- protocol: 'protocol'
364
- }
365
- )
366
- @instance.start_passwordless_email_flow(
367
- 'test@test.com',
368
- 'code',
369
- scope: 'scope',
370
- protocol: 'protocol'
371
- )
372
- end
373
-
374
- it 'is expected to raise an error with an empty email' do
375
- expect do
376
- @instance.start_passwordless_email_flow('', '', '')
377
- end.to raise_error 'Must supply a valid email'
378
- end
379
- end
380
-
381
- # Auth0::API::AuthenticationEndpoints.start_passwordless_sms_flow
382
- context '.start_passwordless_sms_flow' do
383
- let(:phone_number) { Faker::PhoneNumber.cell_phone }
384
-
385
- it { expect(@instance).to respond_to(:start_passwordless_sms_flow) }
386
-
387
- it 'is expected to make post to /passwordless/start' do
388
- expect(@instance).to receive(:post).with(
389
- '/passwordless/start',
390
- client_id: @instance.client_id,
391
- client_secret: @instance.client_secret,
392
- connection: 'sms',
393
- phone_number: phone_number
394
- )
395
- @instance.start_passwordless_sms_flow(phone_number)
396
- end
397
-
398
- it 'is expected to raise an error with an empty phone number' do
399
- expect do
400
- @instance.start_passwordless_sms_flow('')
401
- end.to raise_error 'Must supply a valid phone number'
402
- end
403
- end
404
-
405
- context '.phone_login' do
406
- let(:phone_number) { Faker::PhoneNumber.cell_phone }
407
- let(:code) { Faker::Number.number(10) }
408
- it { expect(@instance).to respond_to(:phone_login) }
409
- it 'is expected to make post to /oauth/ro' do
410
- expect(@instance).to receive(:post).with(
411
- '/oauth/ro',
412
- client_id: @instance.client_id, username: phone_number,
413
- password: code, connection: 'sms',
414
- scope: 'openid', grant_type: 'password'
415
- )
416
- @instance.phone_login(phone_number, code)
417
- end
418
- it { expect { @instance.phone_login('', '') }.to raise_error 'Must supply a valid phone number' }
419
- it { expect { @instance.phone_login('phone', '') }.to raise_error 'Must supply a valid code' }
420
- end
421
-
422
- # Auth0::API::AuthenticationEndpoints.saml_metadata
423
- context '.saml_metadata' do
424
- it { expect(@instance).to respond_to(:saml_metadata) }
425
-
426
- it 'is expected to make post to SAMLP metadata endpoint' do
427
- expect(@instance).to receive(:get).with(
428
- "/samlp/metadata/#{@instance.client_id}"
429
- )
430
- @instance.saml_metadata
431
- end
432
- end
433
-
434
- # Auth0::API::AuthenticationEndpoints.wsfed_metadata
435
- context '.wsfed_metadata' do
436
- it { expect(@instance).to respond_to(:wsfed_metadata) }
437
-
438
- it 'is expected to make post to WS-Fed metadata endpoint' do
439
- expect(@instance).to receive(:get).with(
440
- '/wsfed/FederationMetadata/2007-06/FederationMetadata.xml'
441
- )
442
- @instance.wsfed_metadata
443
- end
444
- end
445
-
446
- context '.token_info' do
447
- it { expect(@instance).to respond_to(:token_info) }
448
- it 'is expected to make post to /tokeinfo' do
449
- expect(@instance).to receive(:post).with('/tokeninfo', id_token: 'SomerandomToken')
450
- @instance.token_info('SomerandomToken')
451
- end
452
- it { expect { @instance.token_info('') }.to raise_error 'Must supply a valid id_token' }
453
- end
454
-
455
- context '.refresh_delegation' do
456
- it { expect(@instance).to respond_to(:refresh_delegation) }
457
- it "is expected to make post request to '/delegation'" do
458
- expect(@instance).to receive(:post).with(
459
- '/delegation',
460
- client_id: @instance.client_id,
461
- grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
462
- refresh_token: 'id_token', target: '', api_type: '', scope: '',
463
- additional_parameter: 'parameter'
464
- )
465
- @instance.refresh_delegation('id_token', '', '', '', additional_parameter: 'parameter')
466
- end
467
- it { expect { @instance.refresh_delegation('', '', '', '') }.to raise_error 'Must supply a valid token to refresh' }
468
- end
469
-
470
- context '.delegation' do
471
- it { expect(@instance).to respond_to(:delegation) }
472
- it "is expected to make post request to '/delegation'" do
473
- expect(@instance).to receive(:post).with(
474
- '/delegation',
475
- client_id: @instance.client_id,
476
- grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
477
- id_token: 'token',
478
- target: 'target',
479
- scope: '',
480
- api_type: 'app'
481
- )
482
- @instance.delegation('token', 'target', '')
483
- end
484
- it "is expected to make post request to '/delegation'
485
- with specified api_type" do
486
- expect(@instance).to receive(:post).with(
487
- '/delegation',
488
- client_id: @instance.client_id,
489
- grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
490
- id_token: 'id_token', target: '', scope: '',
491
- api_type: 'salesforce_api'
492
- )
493
- @instance.delegation('id_token', '', '', 'salesforce_api')
494
- end
495
- it 'allows to pass extra parameters' do
496
- expect(@instance).to receive(:post).with(
497
- '/delegation',
498
- client_id: @instance.client_id,
499
- grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
500
- id_token: 'id_token', target: '', scope: '', api_type: '',
501
- community_name: 'test-community', community_url: 'test-url'
502
- )
503
- @instance.delegation(
504
- 'id_token', '', '', '',
505
- community_name: 'test-community', community_url: 'test-url'
506
- )
507
- end
508
- it { expect { @instance.delegation('', nil, nil, nil) }.to raise_error 'Must supply a valid id_token' }
509
- end
510
-
511
- context '.impersonate' do
512
- let(:user_id) { 'some_user_id' }
513
- let(:impersonator_id) { 'some_other_user_id' }
514
- let(:app_client_id) { 'app_client_id' }
515
- it { expect(@instance).to respond_to(:impersonate) }
516
- it do
517
- expect { @instance.impersonate('', app_client_id, impersonator_id, {}) }.to raise_error(
518
- 'Must supply a valid user_id'
519
- )
520
- end
521
- it do
522
- expect { @instance.impersonate(user_id, app_client_id, '', {}) }.to raise_error(
523
- 'Must supply a valid impersonator_id'
524
- )
525
- end
526
- it do
527
- expect { @instance.impersonate(user_id, '', impersonator_id, {}) }.to raise_error(
528
- 'Must supply a valid app_client_id'
529
- )
530
- end
531
- end
532
-
533
- context '.unlink_user' do
534
- it { expect(@instance).to respond_to(:unlink_user) }
535
- it 'is expected to make post to /unlink' do
536
- expect(@instance).to receive(:post).with('/unlink', access_token: 'access-token', user_id: 'user-id')
537
- @instance.unlink_user('access-token', 'user-id')
538
- end
539
- it { expect { @instance.unlink_user('', '') }.to raise_error 'Must supply a valid access_token' }
540
- it { expect { @instance.unlink_user('token', '') }.to raise_error 'Must supply a valid user_id' }
541
- end
542
-
543
- context '.user_info' do
544
- it { is_expected.to respond_to(:user_info) }
545
- it 'is expected to make post to /userinfo' do
546
- is_expected.to receive(:get).with('/userinfo')
547
- subject.user_info
548
- end
549
- end
550
-
551
- context '.userinfo' do
552
- it { is_expected.to respond_to(:user_info) }
553
- it 'is expected to make a GET request to /userinfo' do
554
- is_expected.to receive(:get).with('/userinfo', {}, { 'Authorization' => 'Bearer access-token' })
555
- subject.userinfo 'access-token'
556
- end
557
- end
558
-
559
- context '.authorization_url' do
560
- let(:redirect_uri) { 'http://redirect.com' }
561
- it { expect(@instance).to respond_to(:authorization_url) }
562
- it 'is expected to return an authorization url' do
563
- expect(@instance.authorization_url(redirect_uri).to_s).to eq(
564
- "https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
565
- 'redirect_uri=http%3A%2F%2Fredirect.com'
566
- )
567
- end
568
- let(:additional_parameters) { { additional_parameters: { aparam1: 'test1' } } }
569
- it 'is expected to return an authorization url with additionalParameters' do
570
- expect(@instance.authorization_url(redirect_uri, additional_parameters).to_s).to eq(
571
- "https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
572
- 'redirect_uri=http%3A%2F%2Fredirect.com&aparam1=test1'
573
- )
574
- end
575
- let(:state) { { state: 'state1' } }
576
- it 'is expected to return an authorization url with additionalParameters' do
577
- expect(@instance.authorization_url(redirect_uri, state).to_s).to eq(
578
- "https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
579
- 'redirect_uri=http%3A%2F%2Fredirect.com&state=state1'
580
- )
581
- end
582
- let(:connection) { { connection: 'connection-1' } }
583
- it 'is expected to return an authorization url with additionalParameters' do
584
- expect(@instance.authorization_url(redirect_uri, connection).to_s).to eq(
585
- "https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
586
- 'connection=connection-1&redirect_uri=http%3A%2F%2Fredirect.com'
587
- )
588
- end
589
- it { expect { @instance.authorization_url('', '') }.to raise_error 'Must supply a valid redirect_uri' }
590
- end
591
-
592
- # Auth0::API::AuthenticationEndpoints.logout_url
593
- context '.logout_url' do
594
- let(:return_to) { 'http://returnto.com' }
595
-
596
- it { expect(@instance).to respond_to(:logout_url) }
597
-
598
- it 'is expected to return a logout url' do
599
- expect(@instance.logout_url(return_to).to_s).to eq(
600
- "https://#{@instance.domain}/v2/logout?" \
601
- 'returnTo=http%3A%2F%2Freturnto.com'
602
- )
603
- end
604
-
605
- it 'is expected to return a logout url with a client ID' do
606
- expect(@instance.logout_url(return_to, include_client: true).to_s).to eq(
607
- "https://#{@instance.domain}/v2/logout" \
608
- "?returnTo=http%3A%2F%2Freturnto.com&client_id=#{@instance.client_id}"
609
- )
610
- end
611
-
612
- it 'is expected to return a logout url with federated parameter' do
613
- expect(@instance.logout_url(return_to, federated: true).to_s).to eq(
614
- "https://#{@instance.domain}/v2/logout?" \
615
- 'returnTo=http%3A%2F%2Freturnto.com&federated=1'
616
- )
617
- end
618
- end
619
-
620
- # Auth0::API::AuthenticationEndpoints.samlp_url
621
- context '.samlp_url' do
622
- it { expect(@instance).to respond_to(:samlp_url) }
623
-
624
- it 'is expected to get the samlp url' do
625
- expect(@instance.samlp_url.to_s).to eq(
626
- "https://#{@instance.domain}/samlp/#{@instance.client_id}" \
627
- '?connection=Username-Password-Authentication'
628
- )
629
- end
630
-
631
- it 'is expected to get the samlp url with fb connection' do
632
- expect(@instance.samlp_url('facebook').to_s).to eq(
633
- "https://#{@instance.domain}/samlp/#{@instance.client_id}" \
634
- '?connection=facebook'
635
- )
636
- end
637
- end
638
-
639
- # Auth0::API::AuthenticationEndpoints.wsfed_url
640
- context '.wsfed_url' do
641
- it { expect(@instance).to respond_to(:wsfed_url) }
642
-
643
- it 'is expected to get the wsfed url' do
644
- expect(@instance.wsfed_url.to_s).to eq(
645
- "https://#{@instance.domain}/wsfed/#{@instance.client_id}" \
646
- "?whr=#{UP_AUTH}"
647
- )
648
- end
649
-
650
- it 'is expected to get the wsfed url with fb connection' do
651
- expect(@instance.wsfed_url('facebook').to_s).to eq(
652
- "https://#{@instance.domain}/wsfed/#{@instance.client_id}?whr=facebook"
653
- )
654
- end
655
-
656
- it 'is expected to get the wsfed url with wctx' do
657
- expect(@instance.wsfed_url(UP_AUTH, { wctx: 'wctx_test' }).to_s).to eq(
658
- "https://#{@instance.domain}/wsfed/#{@instance.client_id}" \
659
- "?whr=#{UP_AUTH}&wctx=wctx_test"
660
- )
661
- end
662
-
663
- it 'is expected to get the wsfed url with wtrealm and wreply' do
664
- expect(@instance.wsfed_url(
665
- UP_AUTH,
666
- {
667
- wtrealm: 'wtrealm_test',
668
- wreply: 'wreply_test'
669
- }
670
- ).to_s).to eq(
671
- "https://#{@instance.domain}/wsfed/?whr=#{UP_AUTH}" \
672
- '&wtrealm=wtrealm_test&wreply=wreply_test'
673
- )
674
- end
675
- end
676
-
677
- # Auth0::API::AuthenticationEndpoints.validate_id_token
678
- context '.validate_id_token' do
679
- it { expect(@instance).to respond_to(:validate_id_token) }
680
-
681
- it 'is expected not to raise an error with default values' do
682
- stub_request(:get, 'https://test.auth0.com/.well-known/jwks.json').to_return(body: JWKS_RESPONSE_1.to_json)
683
- token = 'eyJhbGciOiJSUzI1NiIsImtpZCI6InRlc3Qta2V5LTEifQ.eyJpc3MiOiJodHRwczovL3Rlc3QuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDEyMzQ1Njc4OSIsImF1ZCI6WyJfX3Rlc3RfYXVkaWVuY2VfXyIsIl9fdGVzdF9jbGllbnRfaWRfXyJdLCJleHAiOjI1MzgzMDExNDYsImlhdCI6MTU4NzU5MjU2MSwiYXpwIjoiX190ZXN0X2NsaWVudF9pZF9fIn0.X35Hfa1C9RtuJIj7Eky2iO4elY9XqCDRy8ieFAft63vGds9vhP38x8QHbJifmLs6vDEOySKfJMWhklp3oaXm6Tk6gyUQEaliW_pXUgZt8C3Xo125R8BMCDQeVJg8Abevbg6FpHpYztWpQuI609tmpoTczx7pXMmAneg6e4LNYvvtzaFD_0M0cxtjkm4OcevCJszNBru3tdXwRynkGbMYeXgoa_FumAshRvIvh-4dtkyNWsepo5IVTvixxF3FVoFaXOOycmFXh9gxOppG4lvE78AFB9AQ9LNS-DNhcXszbPs9KHMrg2bqhSL8Razqd3m2a1MXkdLMBD5DY499MVnb5w'
684
-
685
- expect { @instance.validate_id_token(token) }.to_not raise_exception
686
- end
687
-
688
- it 'is expected not to raise an error with custom values' do
689
- token = 'eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJpc3N1ZXIiLCJzdWIiOiJhdXRoMHwxMjM0NTY3ODkiLCJhdWQiOlsiYXVkaWVuY2UiLCJhbm90aGVyX2F1ZGllbmNlIl0sImV4cCI6MjUzODMwMTE0NiwiaWF0IjoxNTg3NTkyNTYxLCJub25jZSI6Im5vbmNlIiwiYXpwIjoiYXVkaWVuY2UiLCJhdXRoX3RpbWUiOjE1ODc2Nzg5NjF9.u39qTvuUmbzj5jsXjATXxjxJt0u064G1IAumoi18gm0'
690
-
691
- expect do
692
- @instance.validate_id_token(token,
693
- algorithm: Auth0::Algorithm::HS256.secret('secret'),
694
- leeway: 100,
695
- nonce: 'nonce',
696
- max_age: 2538301146,
697
- issuer: 'issuer',
698
- audience: 'audience')
699
- end.to_not raise_exception
700
- end
701
- end
702
- end
703
- # rubocop:enable Metrics/BlockLength