auth0 5.18.1 → 5.19.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 (342) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/CHANGELOG.md +9 -0
  4. data/README.md +11 -0
  5. data/auth0.gemspec +1 -3
  6. data/lib/auth0/mixins/token_management.rb +17 -14
  7. data/lib/auth0/version.rb +1 -1
  8. metadata +2 -336
  9. data/.bundle/config +0 -4
  10. data/.devcontainer/Dockerfile +0 -19
  11. data/.devcontainer/devcontainer.json +0 -37
  12. data/.env.example +0 -2
  13. data/.github/CODEOWNERS +0 -1
  14. data/.github/ISSUE_TEMPLATE/Bug Report.yml +0 -67
  15. data/.github/ISSUE_TEMPLATE/Feature Request.yml +0 -53
  16. data/.github/ISSUE_TEMPLATE/config.yml +0 -8
  17. data/.github/PULL_REQUEST_TEMPLATE.md +0 -35
  18. data/.github/actions/get-prerelease/action.yml +0 -30
  19. data/.github/actions/get-release-notes/action.yml +0 -42
  20. data/.github/actions/get-version/action.yml +0 -21
  21. data/.github/actions/release-create/action.yml +0 -47
  22. data/.github/actions/rl-scanner/action.yml +0 -71
  23. data/.github/actions/rubygems-publish/action.yml +0 -30
  24. data/.github/actions/setup/action.yml +0 -32
  25. data/.github/actions/tag-exists/action.yml +0 -36
  26. data/.github/dependabot.yml +0 -13
  27. data/.github/stale.yml +0 -20
  28. data/.github/workflows/codeql.yml +0 -53
  29. data/.github/workflows/matrix.json +0 -3
  30. data/.github/workflows/release.yml +0 -36
  31. data/.github/workflows/rl-scanner.yml +0 -65
  32. data/.github/workflows/ruby-release.yml +0 -72
  33. data/.github/workflows/semgrep.yml +0 -40
  34. data/.github/workflows/snyk.yml +0 -40
  35. data/.github/workflows/test.yml +0 -69
  36. data/.gitignore +0 -18
  37. data/.rspec +0 -3
  38. data/.rubocop.yml +0 -10
  39. data/.rubocop_todo.yml +0 -5
  40. data/.semgrepignore +0 -6
  41. data/.shiprc +0 -8
  42. data/.snyk +0 -17
  43. data/CODE_OF_CONDUCT.md +0 -3
  44. data/DEPLOYMENT.md +0 -61
  45. data/DEVELOPMENT.md +0 -35
  46. data/Dockerfile +0 -5
  47. data/EXAMPLES.md +0 -222
  48. data/Gemfile +0 -18
  49. data/Gemfile.lock +0 -239
  50. data/Guardfile +0 -37
  51. data/RUBYGEM.md +0 -9
  52. data/Rakefile +0 -31
  53. data/codecov.yml +0 -22
  54. data/examples/ruby-api/.env.example +0 -2
  55. data/examples/ruby-api/.gitignore +0 -80
  56. data/examples/ruby-api/Gemfile +0 -9
  57. data/examples/ruby-api/Gemfile.lock +0 -42
  58. data/examples/ruby-api/README.md +0 -24
  59. data/examples/ruby-api/config.ru +0 -2
  60. data/examples/ruby-api/main.rb +0 -33
  61. data/examples/ruby-on-rails-api/.env.example +0 -2
  62. data/examples/ruby-on-rails-api/.gitignore +0 -18
  63. data/examples/ruby-on-rails-api/Gemfile +0 -48
  64. data/examples/ruby-on-rails-api/README.md +0 -25
  65. data/examples/ruby-on-rails-api/Rakefile +0 -6
  66. data/examples/ruby-on-rails-api/app/assets/images/.keep +0 -0
  67. data/examples/ruby-on-rails-api/app/assets/javascripts/application.js +0 -16
  68. data/examples/ruby-on-rails-api/app/assets/stylesheets/application.css +0 -15
  69. data/examples/ruby-on-rails-api/app/controllers/application_controller.rb +0 -8
  70. data/examples/ruby-on-rails-api/app/controllers/concerns/.keep +0 -0
  71. data/examples/ruby-on-rails-api/app/controllers/ping_controller.rb +0 -6
  72. data/examples/ruby-on-rails-api/app/controllers/secured_ping_controller.rb +0 -11
  73. data/examples/ruby-on-rails-api/app/helpers/application_helper.rb +0 -3
  74. data/examples/ruby-on-rails-api/app/mailers/.keep +0 -0
  75. data/examples/ruby-on-rails-api/app/models/.keep +0 -0
  76. data/examples/ruby-on-rails-api/app/models/User.rb +0 -5
  77. data/examples/ruby-on-rails-api/app/models/concerns/.keep +0 -0
  78. data/examples/ruby-on-rails-api/app/views/layouts/application.html.erb +0 -14
  79. data/examples/ruby-on-rails-api/bin/bundle +0 -3
  80. data/examples/ruby-on-rails-api/bin/rails +0 -4
  81. data/examples/ruby-on-rails-api/bin/rake +0 -4
  82. data/examples/ruby-on-rails-api/bin/setup +0 -29
  83. data/examples/ruby-on-rails-api/config/application.rb +0 -23
  84. data/examples/ruby-on-rails-api/config/boot.rb +0 -4
  85. data/examples/ruby-on-rails-api/config/database.yml +0 -27
  86. data/examples/ruby-on-rails-api/config/environment.rb +0 -5
  87. data/examples/ruby-on-rails-api/config/environments/development.rb +0 -37
  88. data/examples/ruby-on-rails-api/config/environments/production.rb +0 -83
  89. data/examples/ruby-on-rails-api/config/environments/test.rb +0 -41
  90. data/examples/ruby-on-rails-api/config/initializers/backtrace_silencers.rb +0 -7
  91. data/examples/ruby-on-rails-api/config/initializers/cookies_serializer.rb +0 -3
  92. data/examples/ruby-on-rails-api/config/initializers/dotenv.rb +0 -4
  93. data/examples/ruby-on-rails-api/config/initializers/filter_parameter_logging.rb +0 -4
  94. data/examples/ruby-on-rails-api/config/initializers/inflections.rb +0 -16
  95. data/examples/ruby-on-rails-api/config/initializers/knock.rb +0 -35
  96. data/examples/ruby-on-rails-api/config/initializers/mime_types.rb +0 -4
  97. data/examples/ruby-on-rails-api/config/initializers/session_store.rb +0 -3
  98. data/examples/ruby-on-rails-api/config/initializers/wrap_parameters.rb +0 -14
  99. data/examples/ruby-on-rails-api/config/locales/en.yml +0 -23
  100. data/examples/ruby-on-rails-api/config/routes.rb +0 -58
  101. data/examples/ruby-on-rails-api/config/secrets.yml +0 -28
  102. data/examples/ruby-on-rails-api/config.ru +0 -4
  103. data/examples/ruby-on-rails-api/db/schema.rb +0 -15
  104. data/examples/ruby-on-rails-api/db/seeds.rb +0 -7
  105. data/examples/ruby-on-rails-api/lib/assets/.keep +0 -0
  106. data/examples/ruby-on-rails-api/lib/tasks/.keep +0 -0
  107. data/examples/ruby-on-rails-api/log/.keep +0 -0
  108. data/examples/ruby-on-rails-api/public/404.html +0 -67
  109. data/examples/ruby-on-rails-api/public/422.html +0 -67
  110. data/examples/ruby-on-rails-api/public/500.html +0 -66
  111. data/examples/ruby-on-rails-api/public/favicon.ico +0 -0
  112. data/examples/ruby-on-rails-api/public/robots.txt +0 -5
  113. data/examples/ruby-on-rails-api/test/controllers/.keep +0 -0
  114. data/examples/ruby-on-rails-api/test/fixtures/.keep +0 -0
  115. data/examples/ruby-on-rails-api/test/helpers/.keep +0 -0
  116. data/examples/ruby-on-rails-api/test/integration/.keep +0 -0
  117. data/examples/ruby-on-rails-api/test/mailers/.keep +0 -0
  118. data/examples/ruby-on-rails-api/test/models/.keep +0 -0
  119. data/examples/ruby-on-rails-api/test/ping_controller_test.rb +0 -8
  120. data/examples/ruby-on-rails-api/test/secured_ping_controller_test.rb +0 -26
  121. data/examples/ruby-on-rails-api/test/test_helper.rb +0 -16
  122. data/opslevel.yml +0 -5
  123. data/publish_rubygem.sh +0 -10
  124. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +0 -93
  125. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +0 -85
  126. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +0 -85
  127. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +0 -86
  128. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +0 -87
  129. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +0 -88
  130. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +0 -110
  131. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +0 -94
  132. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +0 -176
  133. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +0 -98
  134. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +0 -93
  135. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +0 -72
  136. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +0 -74
  137. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +0 -74
  138. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +0 -78
  139. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +0 -78
  140. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +0 -72
  141. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +0 -76
  142. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +0 -80
  143. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +0 -76
  144. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +0 -72
  145. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +0 -72
  146. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +0 -78
  147. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +0 -74
  148. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +0 -78
  149. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +0 -79
  150. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +0 -272
  151. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +0 -88
  152. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +0 -79
  153. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +0 -271
  154. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +0 -72
  155. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +0 -81
  156. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +0 -81
  157. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +0 -74
  158. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +0 -74
  159. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +0 -74
  160. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +0 -78
  161. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +0 -78
  162. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +0 -78
  163. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +0 -79
  164. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +0 -79
  165. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +0 -74
  166. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +0 -148
  167. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +0 -76
  168. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +0 -76
  169. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +0 -76
  170. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +0 -72
  171. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +0 -76
  172. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +0 -72
  173. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +0 -72
  174. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +0 -72
  175. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +0 -69
  176. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +0 -69
  177. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +0 -69
  178. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +0 -69
  179. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +0 -71
  180. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +0 -72
  181. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +0 -76
  182. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +0 -147
  183. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +0 -81
  184. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +0 -152
  185. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +0 -149
  186. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +0 -220
  187. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +0 -146
  188. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +0 -143
  189. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +0 -79
  190. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +0 -293
  191. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +0 -293
  192. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +0 -74
  193. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +0 -75
  194. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +0 -77
  195. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +0 -74
  196. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +0 -298
  197. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +0 -76
  198. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +0 -72
  199. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +0 -72
  200. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +0 -72
  201. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +0 -72
  202. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +0 -76
  203. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +0 -74
  204. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +0 -182
  205. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +0 -182
  206. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +0 -171
  207. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +0 -76
  208. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +0 -72
  209. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +0 -76
  210. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +0 -76
  211. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +0 -74
  212. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +0 -75
  213. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +0 -74
  214. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +0 -74
  215. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +0 -74
  216. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +0 -74
  217. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +0 -75
  218. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +0 -74
  219. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +0 -76
  220. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +0 -76
  221. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +0 -77
  222. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +0 -76
  223. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +0 -72
  224. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +0 -72
  225. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +0 -72
  226. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +0 -72
  227. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +0 -75
  228. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +0 -75
  229. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +0 -74
  230. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +0 -75
  231. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +0 -116
  232. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +0 -118
  233. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +0 -95
  234. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +0 -104
  235. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +0 -157
  236. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +0 -120
  237. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +0 -77
  238. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +0 -78
  239. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +0 -78
  240. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +0 -74
  241. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +0 -74
  242. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +0 -108
  243. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +0 -74
  244. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +0 -74
  245. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +0 -110
  246. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +0 -110
  247. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +0 -76
  248. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +0 -76
  249. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +0 -76
  250. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +0 -72
  251. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +0 -71
  252. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +0 -74
  253. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +0 -72
  254. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +0 -72
  255. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +0 -72
  256. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +0 -74
  257. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +0 -74
  258. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +0 -74
  259. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +0 -75
  260. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +0 -74
  261. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +0 -76
  262. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +0 -78
  263. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +0 -74
  264. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +0 -74
  265. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +0 -74
  266. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +0 -74
  267. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +0 -74
  268. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +0 -74
  269. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +0 -74
  270. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +0 -81
  271. 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 -74
  272. 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 -74
  273. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +0 -74
  274. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +0 -74
  275. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +0 -74
  276. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +0 -74
  277. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +0 -75
  278. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +0 -76
  279. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +0 -76
  280. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +0 -77
  281. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +0 -76
  282. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +0 -72
  283. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +0 -74
  284. data/spec/integration/lib/auth0/api/api_authentication_spec.rb +0 -120
  285. data/spec/integration/lib/auth0/api/v2/api_blacklist_spec.rb +0 -27
  286. data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +0 -66
  287. data/spec/integration/lib/auth0/api/v2/api_clients_spec.rb +0 -166
  288. data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +0 -159
  289. data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +0 -86
  290. data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +0 -124
  291. data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +0 -91
  292. data/spec/integration/lib/auth0/api/v2/api_resource_servers_spec.rb +0 -130
  293. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +0 -145
  294. data/spec/integration/lib/auth0/api/v2/api_rules_spec.rb +0 -177
  295. data/spec/integration/lib/auth0/api/v2/api_stats_spec.rb +0 -22
  296. data/spec/integration/lib/auth0/api/v2/api_tenants_spec.rb +0 -59
  297. data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +0 -59
  298. data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +0 -76
  299. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +0 -273
  300. data/spec/integration/lib/auth0/auth0_client_spec.rb +0 -90
  301. data/spec/lib/auth0/api/authentication_endpoints_spec.rb +0 -750
  302. data/spec/lib/auth0/api/v2/actions_spec.rb +0 -322
  303. data/spec/lib/auth0/api/v2/anomaly_spec.rb +0 -26
  304. data/spec/lib/auth0/api/v2/attack_protection_spec.rb +0 -132
  305. data/spec/lib/auth0/api/v2/blacklists_spec.rb +0 -25
  306. data/spec/lib/auth0/api/v2/branding_spec.rb +0 -71
  307. data/spec/lib/auth0/api/v2/client_grants_spec.rb +0 -106
  308. data/spec/lib/auth0/api/v2/clients_spec.rb +0 -155
  309. data/spec/lib/auth0/api/v2/connections_spec.rb +0 -164
  310. data/spec/lib/auth0/api/v2/device_credentials_spec.rb +0 -102
  311. data/spec/lib/auth0/api/v2/emails_spec.rb +0 -47
  312. data/spec/lib/auth0/api/v2/grants_spec.rb +0 -91
  313. data/spec/lib/auth0/api/v2/guardian_spec.rb +0 -154
  314. data/spec/lib/auth0/api/v2/jobs_spec.rb +0 -158
  315. data/spec/lib/auth0/api/v2/log_streams_spec.rb +0 -84
  316. data/spec/lib/auth0/api/v2/logs_spec.rb +0 -48
  317. data/spec/lib/auth0/api/v2/organizations_spec.rb +0 -708
  318. data/spec/lib/auth0/api/v2/prompts_spec.rb +0 -88
  319. data/spec/lib/auth0/api/v2/refresh_tokens_spec.rb +0 -51
  320. data/spec/lib/auth0/api/v2/resource_servers_spec.rb +0 -86
  321. data/spec/lib/auth0/api/v2/roles_spec.rb +0 -366
  322. data/spec/lib/auth0/api/v2/rules_spec.rb +0 -95
  323. data/spec/lib/auth0/api/v2/sessions_spec.rb +0 -71
  324. data/spec/lib/auth0/api/v2/stats_spec.rb +0 -22
  325. data/spec/lib/auth0/api/v2/tenants_spec.rb +0 -26
  326. data/spec/lib/auth0/api/v2/tickets_spec.rb +0 -118
  327. data/spec/lib/auth0/api/v2/user_blocks_spec.rb +0 -52
  328. data/spec/lib/auth0/api/v2/users_by_email_spec.rb +0 -21
  329. data/spec/lib/auth0/api/v2/users_spec.rb +0 -904
  330. data/spec/lib/auth0/client_spec.rb +0 -223
  331. data/spec/lib/auth0/mixins/httpproxy_spec.rb +0 -659
  332. data/spec/lib/auth0/mixins/initializer_spec.rb +0 -172
  333. data/spec/lib/auth0/mixins/token_management_spec.rb +0 -136
  334. data/spec/lib/auth0/mixins/validation_spec.rb +0 -562
  335. data/spec/spec_helper.rb +0 -70
  336. data/spec/support/credentials.rb +0 -11
  337. data/spec/support/dummy_class.rb +0 -18
  338. data/spec/support/dummy_class_for_proxy.rb +0 -5
  339. data/spec/support/dummy_class_for_restclient.rb +0 -2
  340. data/spec/support/dummy_class_for_tokens.rb +0 -20
  341. data/spec/support/import_users.json +0 -13
  342. data/spec/support/stub_response.rb +0 -1
@@ -1,750 +0,0 @@
1
- require 'spec_helper'
2
- require 'timecop'
3
-
4
- describe Auth0::Api::AuthenticationEndpoints do
5
- let(:client_id) { 'test-client-id' }
6
- let(:client_secret) { 'test-client-secret' }
7
- let(:api_identifier) { 'test-audience' }
8
- let(:domain) { 'samples.auth0.com' }
9
- let(:request_uri) { 'urn:ietf:params:oauth:request_uri:the.request.uri' }
10
-
11
- let(:client_secret_config) { {
12
- domain: domain,
13
- client_id: client_id,
14
- client_secret: client_secret,
15
- token: 'test',
16
- api_identifier: api_identifier
17
- } }
18
-
19
- let(:client_assertion_config) { {
20
- domain: domain,
21
- client_id: client_id,
22
- client_assertion_signing_key: client_assertion_signing_key_pair[:private_key],
23
- client_assertion_signing_alg: 'RS256',
24
- token: 'test',
25
- api_identifier: api_identifier
26
- } }
27
-
28
- let(:client_assertion_signing_key_pair) do
29
- rsa_private = OpenSSL::PKey::RSA.generate 2048
30
-
31
- {
32
- public_key: rsa_private.public_key,
33
- private_key: rsa_private
34
- }
35
- end
36
-
37
- let(:client_secret_instance) { DummyClassForTokens.send(:include, described_class).new(client_secret_config) }
38
- let(:client_assertion_instance) { DummyClassForTokens.send(:include, described_class).new(client_assertion_config) }
39
- let(:time_now) { Time.now }
40
-
41
- before :each do
42
- Timecop.freeze(time_now)
43
- end
44
-
45
- after :each do
46
- Timecop.return
47
- end
48
-
49
- context 'AuthenticationEndponts' do
50
- context 'api_token' do
51
- it 'requests a new token using client_secret' do
52
- expect(RestClient::Request).to receive(:execute).with(hash_including(
53
- method: :post,
54
- url: 'https://samples.auth0.com/oauth/token',
55
- payload: {
56
- grant_type: 'client_credentials',
57
- client_id: client_id,
58
- audience: api_identifier,
59
- organization: nil,
60
- client_secret: client_secret
61
- }.to_json
62
- ))
63
- .and_return(StubResponse.new({
64
- "access_token" => "test_response",
65
- "expires_in" => 86400,
66
- "scope" => "scope"},
67
- true,
68
- 200))
69
-
70
- result = client_secret_instance.send :api_token, audience: api_identifier
71
-
72
- expect(result).to be_a_kind_of(Auth0::ApiToken)
73
- expect(result.access_token).not_to be_nil
74
- expect(result.scope).not_to be_nil
75
- expect(result.expires_in).not_to be_nil
76
- end
77
-
78
- it 'requests a new token using organization' do
79
- expect(RestClient::Request).to receive(:execute).with(hash_including(
80
- method: :post,
81
- url: 'https://samples.auth0.com/oauth/token',
82
- payload: {
83
- grant_type: 'client_credentials',
84
- client_id: client_id,
85
- audience: api_identifier,
86
- organization: 'foo',
87
- client_secret: client_secret
88
- }.to_json
89
- ))
90
- .and_return(StubResponse.new({
91
- "access_token" => "test_response",
92
- "expires_in" => 86400,
93
- "scope" => "scope"},
94
- true,
95
- 200))
96
-
97
- result = client_secret_instance.send :api_token, audience: api_identifier, organization: 'foo'
98
-
99
- expect(result).to be_a_kind_of(Auth0::ApiToken)
100
- expect(result.access_token).not_to be_nil
101
- expect(result.scope).not_to be_nil
102
- expect(result.expires_in).not_to be_nil
103
- end
104
-
105
- it 'requests a new token using client_assertion' do
106
- expect(RestClient::Request).to receive(:execute) do |arg|
107
- expect(arg).to match(
108
- include(
109
- method: :post,
110
- url: 'https://samples.auth0.com/oauth/token'
111
- ))
112
-
113
- payload = JSON.parse(arg[:payload], { symbolize_names: true })
114
-
115
- expect(payload[:client_secret]).to be_nil
116
- expect(payload[:client_assertion]).not_to be_nil
117
- expect(payload[:client_assertion_type]).to eq(Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE)
118
-
119
- StubResponse.new({
120
- "access_token" => "test_response",
121
- "expires_in" => 86400,
122
- "scope" => "scope"},
123
- true,
124
- 200)
125
- end
126
-
127
- result = client_assertion_instance.send :api_token, audience: api_identifier
128
-
129
- expect(result).to be_a_kind_of(Auth0::ApiToken)
130
- expect(result.access_token).not_to be_nil
131
- expect(result.scope).not_to be_nil
132
- expect(result.expires_in).not_to be_nil
133
- end
134
- end
135
-
136
- context 'exchange_auth_code_for_tokens' do
137
- it 'requests a new token using client_secret' do
138
- expect(RestClient::Request).to receive(:execute) do |arg|
139
- expect(arg).to match(
140
- include(
141
- method: :post,
142
- url: 'https://samples.auth0.com/oauth/token'
143
- )
144
- )
145
-
146
- expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq({
147
- grant_type: 'authorization_code',
148
- client_id: client_id,
149
- client_secret: client_secret,
150
- code: 'the_auth_code',
151
- redirect_uri: nil
152
- })
153
-
154
- StubResponse.new({
155
- "id_token" => "id_token",
156
- "access_token" => "test_access_token",
157
- "expires_in" => 86400},
158
- true,
159
- 200)
160
- end
161
-
162
- result = client_secret_instance.send :exchange_auth_code_for_tokens, 'the_auth_code'
163
-
164
- expect(result).to be_a_kind_of(Auth0::AccessToken)
165
- expect(result.id_token).not_to be_nil
166
- expect(result.access_token).not_to be_nil
167
- expect(result.expires_in).not_to be_nil
168
- end
169
-
170
- it 'requests a new token using client_assertion' do
171
- expect(RestClient::Request).to receive(:execute) do |arg|
172
- expect(arg).to match(
173
- include(
174
- method: :post,
175
- url: 'https://samples.auth0.com/oauth/token',
176
- )
177
- )
178
-
179
- payload = JSON.parse arg[:payload], symbolize_names: true
180
-
181
- expect(payload[:client_secret]).to be_nil
182
- expect(payload[:client_assertion]).not_to be_nil
183
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
184
-
185
- StubResponse.new({
186
- "id_token" => "id_token",
187
- "access_token" => "test_access_token",
188
- "expires_in" => 86400},
189
- true,
190
- 200)
191
- end
192
-
193
- result = client_assertion_instance.send :exchange_auth_code_for_tokens, 'the_auth_code'
194
-
195
- expect(result).to be_a_kind_of(Auth0::AccessToken)
196
- expect(result.id_token).not_to be_nil
197
- expect(result.access_token).not_to be_nil
198
- expect(result.expires_in).not_to be_nil
199
- end
200
- end
201
-
202
- context 'exchange_refresh_token' do
203
- it 'exchanges the refresh token using a client secret' do
204
- expect(RestClient::Request).to receive(:execute) do |arg|
205
- expect(arg).to match(
206
- include(
207
- method: :post,
208
- url: 'https://samples.auth0.com/oauth/token'
209
- )
210
- )
211
-
212
- expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq({
213
- grant_type: 'refresh_token',
214
- client_id: client_id,
215
- client_secret: client_secret,
216
- refresh_token: 'the_refresh_token'
217
- })
218
-
219
- StubResponse.new({
220
- "id_token" => "id_token",
221
- "access_token" => "test_access_token",
222
- "expires_in" => 86400},
223
- true,
224
- 200)
225
- end
226
-
227
- result = client_secret_instance.send :exchange_refresh_token, 'the_refresh_token'
228
-
229
- expect(result).to be_a_kind_of(Auth0::AccessToken)
230
- expect(result.id_token).not_to be_nil
231
- expect(result.access_token).not_to be_nil
232
- expect(result.expires_in).not_to be_nil
233
- end
234
-
235
- it 'exchanges the refresh token using client_assertion' do
236
- expect(RestClient::Request).to receive(:execute) do |arg|
237
- expect(arg).to match(
238
- include(
239
- method: :post,
240
- url: 'https://samples.auth0.com/oauth/token'
241
- )
242
- )
243
-
244
- payload = JSON.parse arg[:payload], symbolize_names: true
245
-
246
- expect(payload[:grant_type]).to eq('refresh_token')
247
- expect(payload[:refresh_token]).to eq('the_refresh_token')
248
- expect(payload[:client_secret]).to be_nil
249
- expect(payload[:client_assertion]).not_to be_nil
250
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
251
-
252
- StubResponse.new({
253
- "id_token" => "id_token",
254
- "access_token" => "test_access_token",
255
- "expires_in" => 86400},
256
- true,
257
- 200)
258
- end
259
-
260
- result = client_assertion_instance.send :exchange_refresh_token, 'the_refresh_token'
261
-
262
- expect(result).to be_a_kind_of(Auth0::AccessToken)
263
- expect(result.id_token).not_to be_nil
264
- expect(result.access_token).not_to be_nil
265
- expect(result.expires_in).not_to be_nil
266
- end
267
- end
268
-
269
- context 'exchange_sms_otp_for_tokens' do
270
- it 'requests the tokens using an OTP from SMS' do
271
- expect(RestClient::Request).to receive(:execute) do |arg|
272
- expect(arg).to match(
273
- include(
274
- method: :post,
275
- url: 'https://samples.auth0.com/oauth/token'
276
- )
277
- )
278
-
279
- payload = JSON.parse arg[:payload], symbolize_names: true
280
-
281
- expect(payload[:grant_type]).to eq 'http://auth0.com/oauth/grant-type/passwordless/otp'
282
- expect(payload[:username]).to eq 'phone_number'
283
- expect(payload[:realm]).to eq 'sms'
284
- expect(payload[:otp]).to eq 'code'
285
- expect(payload[:client_id]).to eq client_id
286
- expect(payload[:client_secret]).to eq client_secret
287
- expect(payload[:scope]).to eq 'openid profile email'
288
- expect(payload[:audience]).to be_nil
289
-
290
- StubResponse.new({
291
- "id_token" => "id_token",
292
- "access_token" => "test_access_token",
293
- "expires_in" => 86400},
294
- true,
295
- 200)
296
- end
297
-
298
- result = client_secret_instance.send :exchange_sms_otp_for_tokens, 'phone_number', 'code'
299
-
300
- expect(result).to be_a_kind_of(Auth0::AccessToken)
301
- expect(result.id_token).not_to be_nil
302
- expect(result.access_token).not_to be_nil
303
- expect(result.expires_in).not_to be_nil
304
- end
305
-
306
- it 'requests the tokens using OTP from SMS, and overrides scope and audience' do
307
- expect(RestClient::Request).to receive(:execute) do |arg|
308
- expect(arg).to match(
309
- include(
310
- method: :post,
311
- url: 'https://samples.auth0.com/oauth/token'
312
- )
313
- )
314
-
315
- payload = JSON.parse arg[:payload], symbolize_names: true
316
-
317
- expect(payload[:scope]).to eq 'openid'
318
- expect(payload[:audience]).to eq api_identifier
319
-
320
- StubResponse.new({
321
- "id_token" => "id_token",
322
- "access_token" => "test_access_token",
323
- "expires_in" => 86400},
324
- true,
325
- 200)
326
- end
327
-
328
- result = client_secret_instance.send(:exchange_sms_otp_for_tokens, 'phone_number', 'code',
329
- audience: api_identifier,
330
- scope: 'openid'
331
- )
332
-
333
- expect(result).to be_a_kind_of(Auth0::AccessToken)
334
- expect(result.id_token).not_to be_nil
335
- expect(result.access_token).not_to be_nil
336
- expect(result.expires_in).not_to be_nil
337
- end
338
-
339
- it 'requests the tokens using an OTP from SMS using client assertion' do
340
- expect(RestClient::Request).to receive(:execute) do |arg|
341
- expect(arg).to match(
342
- include(
343
- method: :post,
344
- url: 'https://samples.auth0.com/oauth/token'
345
- )
346
- )
347
-
348
- payload = JSON.parse arg[:payload], symbolize_names: true
349
-
350
- expect(payload[:grant_type]).to eq 'http://auth0.com/oauth/grant-type/passwordless/otp'
351
- expect(payload[:client_secret]).to be_nil
352
- expect(payload[:client_assertion]).not_to be_nil
353
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
354
-
355
- StubResponse.new({
356
- "id_token" => "id_token",
357
- "access_token" => "test_access_token",
358
- "expires_in" => 86400},
359
- true,
360
- 200)
361
- end
362
-
363
- client_assertion_instance.send :exchange_sms_otp_for_tokens, 'phone_number', 'code'
364
- end
365
- end
366
-
367
- context 'exchange_email_otp_for_tokens' do
368
- it 'requests the tokens using email OTP' do
369
- expect(RestClient::Request).to receive(:execute) do |arg|
370
- expect(arg).to match(
371
- include(
372
- method: :post,
373
- url: 'https://samples.auth0.com/oauth/token'
374
- )
375
- )
376
-
377
- payload = JSON.parse arg[:payload], symbolize_names: true
378
-
379
- expect(payload[:grant_type]).to eq 'http://auth0.com/oauth/grant-type/passwordless/otp'
380
- expect(payload[:username]).to eq 'email_address'
381
- expect(payload[:realm]).to eq 'email'
382
- expect(payload[:otp]).to eq 'code'
383
- expect(payload[:client_id]).to eq client_id
384
- expect(payload[:client_secret]).to eq client_secret
385
- expect(payload[:scope]).to eq 'openid profile email'
386
- expect(payload[:audience]).to be_nil
387
-
388
- StubResponse.new({
389
- "id_token" => "id_token",
390
- "access_token" => "test_access_token",
391
- "expires_in" => 86400},
392
- true,
393
- 200)
394
- end
395
-
396
- result = client_secret_instance.send :exchange_email_otp_for_tokens, 'email_address', 'code'
397
-
398
- expect(result).to be_a_kind_of(Auth0::AccessToken)
399
- expect(result.id_token).not_to be_nil
400
- expect(result.access_token).not_to be_nil
401
- expect(result.expires_in).not_to be_nil
402
- end
403
-
404
- it 'requests the tokens using OTP from email, and overrides scope and audience' do
405
- expect(RestClient::Request).to receive(:execute) do |arg|
406
- expect(arg).to match(
407
- include(
408
- method: :post,
409
- url: 'https://samples.auth0.com/oauth/token'
410
- )
411
- )
412
-
413
- payload = JSON.parse arg[:payload], symbolize_names: true
414
-
415
- expect(payload[:scope]).to eq 'openid'
416
- expect(payload[:audience]).to eq api_identifier
417
-
418
- StubResponse.new({
419
- "id_token" => "id_token",
420
- "access_token" => "test_access_token",
421
- "expires_in" => 86400},
422
- true,
423
- 200)
424
- end
425
-
426
- client_secret_instance.send(:exchange_email_otp_for_tokens, 'email_address', 'code',
427
- audience: api_identifier,
428
- scope: 'openid'
429
- )
430
- end
431
-
432
- it 'requests the tokens using OTP from email using client assertion' do
433
- expect(RestClient::Request).to receive(:execute) do |arg|
434
- expect(arg).to match(
435
- include(
436
- method: :post,
437
- url: 'https://samples.auth0.com/oauth/token'
438
- )
439
- )
440
-
441
- payload = JSON.parse arg[:payload], symbolize_names: true
442
-
443
- expect(payload[:grant_type]).to eq 'http://auth0.com/oauth/grant-type/passwordless/otp'
444
- expect(payload[:client_secret]).to be_nil
445
- expect(payload[:client_assertion]).not_to be_nil
446
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
447
-
448
- StubResponse.new({
449
- "id_token" => "id_token",
450
- "access_token" => "test_access_token",
451
- "expires_in" => 86400},
452
- true,
453
- 200)
454
- end
455
-
456
- client_assertion_instance.send(:exchange_email_otp_for_tokens, 'email_address', 'code',
457
- audience: api_identifier,
458
- scope: 'openid'
459
- )
460
- end
461
- end
462
-
463
- context 'login_with_resource_owner' do
464
- it 'logs in using a client secret' do
465
- expect(RestClient::Request).to receive(:execute) do |arg|
466
- expect(arg).to match(
467
- include(
468
- method: :post,
469
- url: 'https://samples.auth0.com/oauth/token'
470
- )
471
- )
472
-
473
- expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq({
474
- username: 'the_username',
475
- password: 'the_password',
476
- grant_type: 'password',
477
- client_id: client_id,
478
- client_secret: client_secret,
479
- realm: nil,
480
- audience: nil,
481
- scope: 'openid'
482
- })
483
-
484
- StubResponse.new({
485
- "id_token" => "id_token",
486
- "access_token" => "test_access_token",
487
- "expires_in" => 86400},
488
- true,
489
- 200)
490
- end
491
-
492
- result = client_secret_instance.send :login_with_resource_owner, 'the_username', 'the_password'
493
-
494
- expect(result).to be_a_kind_of(Auth0::AccessToken)
495
- expect(result.id_token).not_to be_nil
496
- expect(result.access_token).not_to be_nil
497
- expect(result.expires_in).not_to be_nil
498
- end
499
-
500
- it 'logs in using a client secret, realm and audience' do
501
- expect(RestClient::Request).to receive(:execute) do |arg|
502
- expect(arg).to match(
503
- include(
504
- method: :post,
505
- url: 'https://samples.auth0.com/oauth/token'
506
- )
507
- )
508
-
509
- expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq({
510
- username: 'the_username',
511
- password: 'the_password',
512
- grant_type: 'http://auth0.com/oauth/grant-type/password-realm',
513
- client_id: client_id,
514
- client_secret: client_secret,
515
- realm: 'my-realm',
516
- audience: api_identifier,
517
- scope: 'openid'
518
- })
519
-
520
- StubResponse.new({
521
- "id_token" => "id_token",
522
- "access_token" => "test_access_token",
523
- "expires_in" => 86400},
524
- true,
525
- 200)
526
- end
527
-
528
- result = client_secret_instance.send :login_with_resource_owner, 'the_username', 'the_password', realm: 'my-realm', audience: api_identifier
529
-
530
- expect(result).to be_a_kind_of(Auth0::AccessToken)
531
- expect(result.id_token).not_to be_nil
532
- expect(result.access_token).not_to be_nil
533
- expect(result.expires_in).not_to be_nil
534
- end
535
-
536
- it 'logs in using client assertion' do
537
- expect(RestClient::Request).to receive(:execute) do |arg|
538
- expect(arg).to match(
539
- include(
540
- method: :post,
541
- url: 'https://samples.auth0.com/oauth/token'
542
- )
543
- )
544
-
545
- payload = JSON.parse arg[:payload], symbolize_names: true
546
-
547
- expect(payload[:grant_type]).to eq('password')
548
- expect(payload[:client_secret]).to be_nil
549
- expect(payload[:client_assertion]).not_to be_nil
550
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
551
-
552
- StubResponse.new({
553
- "id_token" => "id_token",
554
- "access_token" => "test_access_token",
555
- "expires_in" => 86400},
556
- true,
557
- 200)
558
- end
559
-
560
- result = client_assertion_instance.send :login_with_resource_owner, 'the_username', 'the_password'
561
-
562
- expect(result).to be_a_kind_of(Auth0::AccessToken)
563
- expect(result.id_token).not_to be_nil
564
- expect(result.access_token).not_to be_nil
565
- expect(result.expires_in).not_to be_nil
566
- end
567
- end
568
-
569
- context 'start_passwordless_email_flow' do
570
- it 'starts passwordless flow using a client secret' do
571
- expect(RestClient::Request).to receive(:execute) do |arg|
572
- expect(arg).to match(
573
- include(
574
- method: :post,
575
- url: 'https://samples.auth0.com/passwordless/start'
576
- )
577
- )
578
-
579
- expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq({
580
- email: 'email@test.com',
581
- send: 'link',
582
- authParams: {},
583
- connection: 'email',
584
- client_id: client_id,
585
- client_secret: client_secret
586
- })
587
-
588
- StubResponse.new({}, true, 200)
589
- end
590
-
591
- client_secret_instance.send :start_passwordless_email_flow, 'email@test.com'
592
- end
593
-
594
- it 'starts passwordless email flow using client assertion' do
595
- expect(RestClient::Request).to receive(:execute) do |arg|
596
- expect(arg).to match(
597
- include(
598
- method: :post,
599
- url: 'https://samples.auth0.com/passwordless/start'
600
- )
601
- )
602
-
603
- payload = JSON.parse arg[:payload], symbolize_names: true
604
-
605
- expect(payload[:client_secret]).to be_nil
606
- expect(payload[:client_assertion]).not_to be_nil
607
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
608
-
609
- StubResponse.new({}, true, 200)
610
- end
611
-
612
- client_assertion_instance.send :start_passwordless_email_flow, 'email@test.com'
613
- end
614
- end
615
-
616
- context 'start_passwordless_sms_flow' do
617
- it 'starts passwordless flow using a client secret' do
618
- expect(RestClient::Request).to receive(:execute) do |arg|
619
- expect(arg).to match(
620
- include(
621
- method: :post,
622
- url: 'https://samples.auth0.com/passwordless/start'
623
- )
624
- )
625
-
626
- expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq({
627
- phone_number: '123456789',
628
- connection: 'sms',
629
- client_id: client_id,
630
- client_secret: client_secret
631
- })
632
-
633
- StubResponse.new({}, true, 200)
634
- end
635
-
636
- client_secret_instance.send :start_passwordless_sms_flow, '123456789'
637
- end
638
-
639
- it 'starts passwordless email flow using client assertion' do
640
- expect(RestClient::Request).to receive(:execute) do |arg|
641
- expect(arg).to match(
642
- include(
643
- method: :post,
644
- url: 'https://samples.auth0.com/passwordless/start'
645
- )
646
- )
647
-
648
- payload = JSON.parse arg[:payload], symbolize_names: true
649
-
650
- expect(payload[:client_secret]).to be_nil
651
- expect(payload[:client_assertion]).not_to be_nil
652
- expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
653
-
654
- StubResponse.new({}, true, 200)
655
- end
656
-
657
- client_assertion_instance.send :start_passwordless_sms_flow, '123456789'
658
- end
659
- end
660
-
661
- context 'par_authorization_url' do
662
- it 'throws an exception if request_uri is nil' do
663
- expect { client_secret_instance.send :par_authorization_url, nil}.to raise_error Auth0::InvalidParameter
664
- end
665
-
666
- it 'throws an exception if request_uri is empty' do
667
- expect { client_secret_instance.send :par_authorization_url, ''}.to raise_error Auth0::InvalidParameter
668
- end
669
-
670
- it 'builds a URL containing the request_uri' do
671
- url = client_secret_instance.send :par_authorization_url, request_uri
672
- expect(CGI.unescape(url.to_s)).to eq("https://samples.auth0.com/authorize?client_id=#{client_id}&request_uri=#{request_uri}")
673
- end
674
- end
675
-
676
- context 'pushed_authorization_request' do
677
- it 'sends the request as a form post' do
678
- expect(RestClient::Request).to receive(:execute) do |arg|
679
- expect(arg[:url]).to eq('https://samples.auth0.com/oauth/par')
680
- expect(arg[:method]).to eq(:post)
681
-
682
- expect(arg[:payload]).to eq({
683
- client_id: client_id,
684
- client_secret: client_secret,
685
- response_type: 'code',
686
- })
687
-
688
- StubResponse.new({}, true, 200)
689
- end
690
-
691
- client_secret_instance.send :pushed_authorization_request
692
- end
693
-
694
- it 'allows the RestClient to handle the correct header defaults' do
695
- expect(RestClient::Request).to receive(:execute) do |arg|
696
- expect(arg[:headers]).not_to have_key('Content-Type')
697
-
698
- StubResponse.new({}, true, 200)
699
- end
700
-
701
- client_secret_instance.headers['Content-Type'] = 'application/x-www-form-urlencoded'
702
- client_secret_instance.send :pushed_authorization_request
703
- end
704
-
705
- it 'sends the request as a form post with all known overrides' do
706
- expect(RestClient::Request).to receive(:execute) do |arg|
707
- expect(arg[:url]).to eq('https://samples.auth0.com/oauth/par')
708
- expect(arg[:method]).to eq(:post)
709
-
710
- expect(arg[:payload]).to eq({
711
- client_id: client_id,
712
- client_secret: client_secret,
713
- connection: 'google-oauth2',
714
- organization: 'org_id',
715
- invitation: 'http://invite.url',
716
- redirect_uri: 'http://localhost:3000',
717
- response_type: 'id_token',
718
- scope: 'openid',
719
- state: 'random_value'
720
- })
721
-
722
- StubResponse.new({}, true, 200)
723
- end
724
-
725
- client_secret_instance.send(:pushed_authorization_request,
726
- response_type: 'id_token',
727
- redirect_uri: 'http://localhost:3000',
728
- organization: 'org_id',
729
- invitation: 'http://invite.url',
730
- scope: 'openid',
731
- state: 'random_value',
732
- connection: 'google-oauth2')
733
- end
734
-
735
- it 'sends the request as a form post using client assertion' do
736
- expect(RestClient::Request).to receive(:execute) do |arg|
737
- expect(arg[:url]).to eq('https://samples.auth0.com/oauth/par')
738
- expect(arg[:method]).to eq(:post)
739
- expect(arg[:payload][:client_secret]).to be_nil
740
- expect(arg[:payload][:client_assertion]).not_to be_nil
741
- expect(arg[:payload][:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
742
-
743
- StubResponse.new({}, true, 200)
744
- end
745
-
746
- client_assertion_instance.send :pushed_authorization_request
747
- end
748
- end
749
- end
750
- end