doorkeeper 5.2.2 → 5.5.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of doorkeeper might be problematic. Click here for more details.

Files changed (260) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +198 -3
  3. data/README.md +28 -20
  4. data/app/controllers/doorkeeper/application_controller.rb +3 -2
  5. data/app/controllers/doorkeeper/application_metal_controller.rb +2 -2
  6. data/app/controllers/doorkeeper/applications_controller.rb +7 -8
  7. data/app/controllers/doorkeeper/authorizations_controller.rb +48 -18
  8. data/app/controllers/doorkeeper/authorized_applications_controller.rb +6 -6
  9. data/app/controllers/doorkeeper/token_info_controller.rb +12 -2
  10. data/app/controllers/doorkeeper/tokens_controller.rb +70 -25
  11. data/app/helpers/doorkeeper/dashboard_helper.rb +1 -1
  12. data/app/views/doorkeeper/applications/_form.html.erb +1 -1
  13. data/app/views/doorkeeper/applications/show.html.erb +35 -14
  14. data/app/views/doorkeeper/authorizations/form_post.html.erb +15 -0
  15. data/app/views/doorkeeper/authorizations/new.html.erb +2 -0
  16. data/config/locales/en.yml +9 -2
  17. data/lib/doorkeeper/config/abstract_builder.rb +28 -0
  18. data/lib/doorkeeper/config/option.rb +26 -14
  19. data/lib/doorkeeper/config/validations.rb +53 -0
  20. data/lib/doorkeeper/config.rb +214 -122
  21. data/lib/doorkeeper/engine.rb +1 -1
  22. data/lib/doorkeeper/grant_flow/fallback_flow.rb +15 -0
  23. data/lib/doorkeeper/grant_flow/flow.rb +44 -0
  24. data/lib/doorkeeper/grant_flow/registry.rb +50 -0
  25. data/lib/doorkeeper/grant_flow.rb +45 -0
  26. data/lib/doorkeeper/grape/helpers.rb +2 -2
  27. data/lib/doorkeeper/helpers/controller.rb +18 -12
  28. data/lib/doorkeeper/models/access_grant_mixin.rb +23 -19
  29. data/lib/doorkeeper/models/access_token_mixin.rb +157 -55
  30. data/lib/doorkeeper/models/application_mixin.rb +8 -7
  31. data/lib/doorkeeper/models/concerns/expirable.rb +1 -1
  32. data/lib/doorkeeper/models/concerns/ownership.rb +1 -1
  33. data/lib/doorkeeper/models/concerns/resource_ownerable.rb +47 -0
  34. data/lib/doorkeeper/models/concerns/reusable.rb +1 -1
  35. data/lib/doorkeeper/models/concerns/revocable.rb +1 -28
  36. data/lib/doorkeeper/models/concerns/scopes.rb +5 -1
  37. data/lib/doorkeeper/models/concerns/secret_storable.rb +1 -3
  38. data/lib/doorkeeper/oauth/authorization/code.rb +22 -9
  39. data/lib/doorkeeper/oauth/authorization/context.rb +5 -5
  40. data/lib/doorkeeper/oauth/authorization/token.rb +23 -18
  41. data/lib/doorkeeper/oauth/authorization/uri_builder.rb +4 -4
  42. data/lib/doorkeeper/oauth/authorization_code_request.rb +30 -20
  43. data/lib/doorkeeper/oauth/base_request.rb +19 -23
  44. data/lib/doorkeeper/oauth/client/credentials.rb +2 -4
  45. data/lib/doorkeeper/oauth/client.rb +8 -9
  46. data/lib/doorkeeper/oauth/client_credentials/creator.rb +38 -12
  47. data/lib/doorkeeper/oauth/client_credentials/issuer.rb +10 -8
  48. data/lib/doorkeeper/oauth/client_credentials/{validation.rb → validator.rb} +7 -5
  49. data/lib/doorkeeper/oauth/client_credentials_request.rb +8 -7
  50. data/lib/doorkeeper/oauth/code_request.rb +4 -4
  51. data/lib/doorkeeper/oauth/code_response.rb +24 -14
  52. data/lib/doorkeeper/oauth/error.rb +1 -1
  53. data/lib/doorkeeper/oauth/error_response.rb +10 -11
  54. data/lib/doorkeeper/oauth/forbidden_token_response.rb +2 -1
  55. data/lib/doorkeeper/oauth/helpers/scope_checker.rb +8 -12
  56. data/lib/doorkeeper/oauth/helpers/unique_token.rb +10 -7
  57. data/lib/doorkeeper/oauth/helpers/uri_checker.rb +1 -19
  58. data/lib/doorkeeper/oauth/hooks/context.rb +21 -0
  59. data/lib/doorkeeper/oauth/invalid_request_response.rb +3 -3
  60. data/lib/doorkeeper/oauth/invalid_token_response.rb +7 -4
  61. data/lib/doorkeeper/oauth/password_access_token_request.rb +28 -10
  62. data/lib/doorkeeper/oauth/pre_authorization.rb +73 -37
  63. data/lib/doorkeeper/oauth/refresh_token_request.rb +35 -26
  64. data/lib/doorkeeper/oauth/token.rb +6 -7
  65. data/lib/doorkeeper/oauth/token_introspection.rb +12 -16
  66. data/lib/doorkeeper/oauth/token_request.rb +3 -3
  67. data/lib/doorkeeper/oauth/token_response.rb +1 -1
  68. data/lib/doorkeeper/orm/active_record/access_grant.rb +4 -43
  69. data/lib/doorkeeper/orm/active_record/access_token.rb +4 -35
  70. data/lib/doorkeeper/orm/active_record/application.rb +5 -95
  71. data/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +69 -0
  72. data/lib/doorkeeper/orm/active_record/mixins/access_token.rb +60 -0
  73. data/lib/doorkeeper/orm/active_record/mixins/application.rb +199 -0
  74. data/lib/doorkeeper/orm/active_record/redirect_uri_validator.rb +8 -3
  75. data/lib/doorkeeper/orm/active_record.rb +5 -7
  76. data/lib/doorkeeper/rails/helpers.rb +4 -4
  77. data/lib/doorkeeper/rails/routes/abstract_router.rb +35 -0
  78. data/lib/doorkeeper/rails/routes/mapper.rb +2 -2
  79. data/lib/doorkeeper/rails/routes/registry.rb +45 -0
  80. data/lib/doorkeeper/rails/routes.rb +17 -25
  81. data/lib/doorkeeper/rake/db.rake +6 -6
  82. data/lib/doorkeeper/rake/setup.rake +5 -0
  83. data/lib/doorkeeper/request/authorization_code.rb +3 -3
  84. data/lib/doorkeeper/request/client_credentials.rb +2 -2
  85. data/lib/doorkeeper/request/password.rb +3 -2
  86. data/lib/doorkeeper/request/refresh_token.rb +5 -4
  87. data/lib/doorkeeper/request/strategy.rb +2 -2
  88. data/lib/doorkeeper/request.rb +49 -12
  89. data/lib/doorkeeper/server.rb +5 -5
  90. data/lib/doorkeeper/stale_records_cleaner.rb +4 -4
  91. data/lib/doorkeeper/version.rb +2 -6
  92. data/lib/doorkeeper.rb +112 -81
  93. data/lib/generators/doorkeeper/application_owner_generator.rb +1 -1
  94. data/lib/generators/doorkeeper/confidential_applications_generator.rb +2 -2
  95. data/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb +39 -0
  96. data/lib/generators/doorkeeper/migration_generator.rb +1 -1
  97. data/lib/generators/doorkeeper/pkce_generator.rb +1 -1
  98. data/lib/generators/doorkeeper/previous_refresh_token_generator.rb +2 -2
  99. data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb +3 -1
  100. data/lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb +2 -0
  101. data/lib/generators/doorkeeper/templates/enable_pkce_migration.rb.erb +2 -0
  102. data/lib/generators/doorkeeper/templates/enable_polymorphic_resource_owner_migration.rb.erb +17 -0
  103. data/lib/generators/doorkeeper/templates/initializer.rb +99 -14
  104. data/lib/generators/doorkeeper/templates/migration.rb.erb +14 -5
  105. metadata +37 -306
  106. data/Appraisals +0 -40
  107. data/CODE_OF_CONDUCT.md +0 -46
  108. data/CONTRIBUTING.md +0 -49
  109. data/Dangerfile +0 -67
  110. data/Dockerfile +0 -29
  111. data/Gemfile +0 -25
  112. data/NEWS.md +0 -1
  113. data/RELEASING.md +0 -11
  114. data/Rakefile +0 -28
  115. data/SECURITY.md +0 -15
  116. data/UPGRADE.md +0 -2
  117. data/bin/console +0 -16
  118. data/doorkeeper.gemspec +0 -42
  119. data/gemfiles/rails_5_0.gemfile +0 -18
  120. data/gemfiles/rails_5_1.gemfile +0 -18
  121. data/gemfiles/rails_5_2.gemfile +0 -18
  122. data/gemfiles/rails_6_0.gemfile +0 -18
  123. data/gemfiles/rails_master.gemfile +0 -18
  124. data/spec/controllers/application_metal_controller_spec.rb +0 -64
  125. data/spec/controllers/applications_controller_spec.rb +0 -273
  126. data/spec/controllers/authorizations_controller_spec.rb +0 -608
  127. data/spec/controllers/protected_resources_controller_spec.rb +0 -353
  128. data/spec/controllers/token_info_controller_spec.rb +0 -50
  129. data/spec/controllers/tokens_controller_spec.rb +0 -498
  130. data/spec/dummy/Rakefile +0 -9
  131. data/spec/dummy/app/assets/config/manifest.js +0 -2
  132. data/spec/dummy/app/controllers/application_controller.rb +0 -5
  133. data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -9
  134. data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -14
  135. data/spec/dummy/app/controllers/home_controller.rb +0 -18
  136. data/spec/dummy/app/controllers/metal_controller.rb +0 -13
  137. data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -13
  138. data/spec/dummy/app/helpers/application_helper.rb +0 -7
  139. data/spec/dummy/app/models/user.rb +0 -7
  140. data/spec/dummy/app/views/home/index.html.erb +0 -0
  141. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  142. data/spec/dummy/config/application.rb +0 -49
  143. data/spec/dummy/config/boot.rb +0 -7
  144. data/spec/dummy/config/database.yml +0 -15
  145. data/spec/dummy/config/environment.rb +0 -5
  146. data/spec/dummy/config/environments/development.rb +0 -31
  147. data/spec/dummy/config/environments/production.rb +0 -64
  148. data/spec/dummy/config/environments/test.rb +0 -45
  149. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -9
  150. data/spec/dummy/config/initializers/doorkeeper.rb +0 -166
  151. data/spec/dummy/config/initializers/secret_token.rb +0 -10
  152. data/spec/dummy/config/initializers/session_store.rb +0 -10
  153. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -16
  154. data/spec/dummy/config/locales/doorkeeper.en.yml +0 -5
  155. data/spec/dummy/config/routes.rb +0 -13
  156. data/spec/dummy/config.ru +0 -6
  157. data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -11
  158. data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -7
  159. data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -69
  160. data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -9
  161. data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -13
  162. data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +0 -8
  163. data/spec/dummy/db/migrate/20180210183654_add_confidential_to_applications.rb +0 -13
  164. data/spec/dummy/db/schema.rb +0 -68
  165. data/spec/dummy/public/404.html +0 -26
  166. data/spec/dummy/public/422.html +0 -26
  167. data/spec/dummy/public/500.html +0 -26
  168. data/spec/dummy/public/favicon.ico +0 -0
  169. data/spec/dummy/script/rails +0 -9
  170. data/spec/factories.rb +0 -30
  171. data/spec/generators/application_owner_generator_spec.rb +0 -28
  172. data/spec/generators/confidential_applications_generator_spec.rb +0 -29
  173. data/spec/generators/install_generator_spec.rb +0 -36
  174. data/spec/generators/migration_generator_spec.rb +0 -28
  175. data/spec/generators/pkce_generator_spec.rb +0 -28
  176. data/spec/generators/previous_refresh_token_generator_spec.rb +0 -44
  177. data/spec/generators/templates/routes.rb +0 -4
  178. data/spec/generators/views_generator_spec.rb +0 -29
  179. data/spec/grape/grape_integration_spec.rb +0 -137
  180. data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -26
  181. data/spec/lib/config_spec.rb +0 -739
  182. data/spec/lib/doorkeeper_spec.rb +0 -27
  183. data/spec/lib/models/expirable_spec.rb +0 -61
  184. data/spec/lib/models/reusable_spec.rb +0 -40
  185. data/spec/lib/models/revocable_spec.rb +0 -59
  186. data/spec/lib/models/scopes_spec.rb +0 -53
  187. data/spec/lib/models/secret_storable_spec.rb +0 -135
  188. data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -39
  189. data/spec/lib/oauth/authorization_code_request_spec.rb +0 -168
  190. data/spec/lib/oauth/base_request_spec.rb +0 -222
  191. data/spec/lib/oauth/base_response_spec.rb +0 -47
  192. data/spec/lib/oauth/client/credentials_spec.rb +0 -90
  193. data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -97
  194. data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -112
  195. data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -59
  196. data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -29
  197. data/spec/lib/oauth/client_credentials_request_spec.rb +0 -109
  198. data/spec/lib/oauth/client_spec.rb +0 -38
  199. data/spec/lib/oauth/code_request_spec.rb +0 -46
  200. data/spec/lib/oauth/code_response_spec.rb +0 -36
  201. data/spec/lib/oauth/error_response_spec.rb +0 -66
  202. data/spec/lib/oauth/error_spec.rb +0 -23
  203. data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -22
  204. data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -98
  205. data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -21
  206. data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -262
  207. data/spec/lib/oauth/invalid_request_response_spec.rb +0 -75
  208. data/spec/lib/oauth/invalid_token_response_spec.rb +0 -55
  209. data/spec/lib/oauth/password_access_token_request_spec.rb +0 -192
  210. data/spec/lib/oauth/pre_authorization_spec.rb +0 -225
  211. data/spec/lib/oauth/refresh_token_request_spec.rb +0 -178
  212. data/spec/lib/oauth/scopes_spec.rb +0 -148
  213. data/spec/lib/oauth/token_request_spec.rb +0 -153
  214. data/spec/lib/oauth/token_response_spec.rb +0 -86
  215. data/spec/lib/oauth/token_spec.rb +0 -158
  216. data/spec/lib/request/strategy_spec.rb +0 -54
  217. data/spec/lib/secret_storing/base_spec.rb +0 -60
  218. data/spec/lib/secret_storing/bcrypt_spec.rb +0 -49
  219. data/spec/lib/secret_storing/plain_spec.rb +0 -44
  220. data/spec/lib/secret_storing/sha256_hash_spec.rb +0 -48
  221. data/spec/lib/server_spec.rb +0 -49
  222. data/spec/lib/stale_records_cleaner_spec.rb +0 -89
  223. data/spec/models/doorkeeper/access_grant_spec.rb +0 -163
  224. data/spec/models/doorkeeper/access_token_spec.rb +0 -622
  225. data/spec/models/doorkeeper/application_spec.rb +0 -377
  226. data/spec/requests/applications/applications_request_spec.rb +0 -259
  227. data/spec/requests/applications/authorized_applications_spec.rb +0 -32
  228. data/spec/requests/endpoints/authorization_spec.rb +0 -89
  229. data/spec/requests/endpoints/token_spec.rb +0 -75
  230. data/spec/requests/flows/authorization_code_errors_spec.rb +0 -79
  231. data/spec/requests/flows/authorization_code_spec.rb +0 -513
  232. data/spec/requests/flows/client_credentials_spec.rb +0 -166
  233. data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -46
  234. data/spec/requests/flows/implicit_grant_spec.rb +0 -91
  235. data/spec/requests/flows/password_spec.rb +0 -296
  236. data/spec/requests/flows/refresh_token_spec.rb +0 -233
  237. data/spec/requests/flows/revoke_token_spec.rb +0 -151
  238. data/spec/requests/flows/skip_authorization_spec.rb +0 -66
  239. data/spec/requests/protected_resources/metal_spec.rb +0 -16
  240. data/spec/requests/protected_resources/private_api_spec.rb +0 -83
  241. data/spec/routing/custom_controller_routes_spec.rb +0 -133
  242. data/spec/routing/default_routes_spec.rb +0 -41
  243. data/spec/routing/scoped_routes_spec.rb +0 -47
  244. data/spec/spec_helper.rb +0 -57
  245. data/spec/spec_helper_integration.rb +0 -4
  246. data/spec/support/dependencies/factory_bot.rb +0 -4
  247. data/spec/support/doorkeeper_rspec.rb +0 -22
  248. data/spec/support/helpers/access_token_request_helper.rb +0 -13
  249. data/spec/support/helpers/authorization_request_helper.rb +0 -43
  250. data/spec/support/helpers/config_helper.rb +0 -11
  251. data/spec/support/helpers/model_helper.rb +0 -78
  252. data/spec/support/helpers/request_spec_helper.rb +0 -110
  253. data/spec/support/helpers/url_helper.rb +0 -62
  254. data/spec/support/http_method_shim.rb +0 -29
  255. data/spec/support/orm/active_record.rb +0 -5
  256. data/spec/support/shared/controllers_shared_context.rb +0 -123
  257. data/spec/support/shared/hashing_shared_context.rb +0 -36
  258. data/spec/support/shared/models_shared_examples.rb +0 -54
  259. data/spec/validators/redirect_uri_validator_spec.rb +0 -183
  260. data/spec/version/version_spec.rb +0 -17
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The change you wanted was rejected (422)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/422.html -->
21
- <div class="dialog">
22
- <h1>The change you wanted was rejected.</h1>
23
- <p>Maybe you tried to change something you didn't have access to.</p>
24
- </div>
25
- </body>
26
- </html>
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>We're sorry, but something went wrong (500)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/500.html -->
21
- <div class="dialog">
22
- <h1>We're sorry, but something went wrong.</h1>
23
- <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
- </div>
25
- </body>
26
- </html>
File without changes
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # This command will automatically be run when you run "rails" with Rails 3 gems
5
- # installed from the root of your application.
6
-
7
- APP_PATH = File.expand_path("../config/application", __dir__)
8
- require File.expand_path("../config/boot", __dir__)
9
- require "rails/commands"
data/spec/factories.rb DELETED
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :access_grant, class: "Doorkeeper::AccessGrant" do
5
- sequence(:resource_owner_id) { |n| n }
6
- application
7
- redirect_uri { "https://app.com/callback" }
8
- expires_in { 100 }
9
- scopes { "public write" }
10
- end
11
-
12
- factory :access_token, class: "Doorkeeper::AccessToken" do
13
- sequence(:resource_owner_id) { |n| n }
14
- application
15
- expires_in { 2.hours }
16
-
17
- factory :clientless_access_token do
18
- application { nil }
19
- end
20
- end
21
-
22
- factory :application, class: "Doorkeeper::Application" do
23
- sequence(:name) { |n| "Application #{n}" }
24
- redirect_uri { "https://app.com/callback" }
25
- end
26
-
27
- # do not name this factory :user, otherwise it will conflict with factories
28
- # from applications that use doorkeeper factories in their own tests
29
- factory :doorkeeper_testing_user, class: :user
30
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/application_owner_generator"
5
-
6
- describe "Doorkeeper::ApplicationOwnerGenerator" do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::ApplicationOwnerGenerator
10
- destination ::File.expand_path("../tmp/dummy", __FILE__)
11
-
12
- describe "after running the generator" do
13
- before :each do
14
- prepare_destination
15
- end
16
-
17
- it "creates a migration with a version specifier" do
18
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
- stub_const("ActiveRecord::VERSION::MINOR", 0)
20
-
21
- run_generator
22
-
23
- assert_migration "db/migrate/add_owner_to_application.rb" do |migration|
24
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
25
- end
26
- end
27
- end
28
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/confidential_applications_generator"
5
-
6
- describe "Doorkeeper::ConfidentialApplicationsGenerator" do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::ConfidentialApplicationsGenerator
10
- destination ::File.expand_path("../tmp/dummy", __FILE__)
11
-
12
- describe "after running the generator" do
13
- before :each do
14
- prepare_destination
15
- end
16
-
17
- it "creates a migration with a version specifier" do
18
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
- stub_const("ActiveRecord::VERSION::MINOR", 0)
20
-
21
- run_generator
22
-
23
- assert_migration "db/migrate/add_confidential_to_applications.rb" do |migration|
24
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
25
- assert migration.include?(":confidential")
26
- end
27
- end
28
- end
29
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/install_generator"
5
-
6
- describe "Doorkeeper::InstallGenerator" do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::InstallGenerator
10
- destination ::File.expand_path("../tmp/dummy", __FILE__)
11
-
12
- describe "after running the generator" do
13
- before :each do
14
- prepare_destination
15
- FileUtils.mkdir(::File.expand_path("config", Pathname(destination_root)))
16
- FileUtils.mkdir(::File.expand_path("db", Pathname(destination_root)))
17
- FileUtils.copy_file(
18
- ::File.expand_path("../templates/routes.rb", __FILE__),
19
- ::File.expand_path("config/routes.rb", Pathname.new(destination_root))
20
- )
21
- run_generator
22
- end
23
-
24
- it "creates an initializer file" do
25
- assert_file "config/initializers/doorkeeper.rb"
26
- end
27
-
28
- it "copies the locale file" do
29
- assert_file "config/locales/doorkeeper.en.yml"
30
- end
31
-
32
- it "adds sample route" do
33
- assert_file "config/routes.rb", /use_doorkeeper/
34
- end
35
- end
36
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/migration_generator"
5
-
6
- describe "Doorkeeper::MigrationGenerator" do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::MigrationGenerator
10
- destination ::File.expand_path("../tmp/dummy", __FILE__)
11
-
12
- describe "after running the generator" do
13
- before :each do
14
- prepare_destination
15
- end
16
-
17
- it "creates a migration with a version specifier" do
18
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
- stub_const("ActiveRecord::VERSION::MINOR", 0)
20
-
21
- run_generator
22
-
23
- assert_migration "db/migrate/create_doorkeeper_tables.rb" do |migration|
24
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/pkce_generator"
5
-
6
- describe "Doorkeeper::PkceGenerator" do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::PkceGenerator
10
- destination ::File.expand_path("../tmp/dummy", __FILE__)
11
-
12
- describe "after running the generator" do
13
- before :each do
14
- prepare_destination
15
- end
16
-
17
- it "creates a migration with a version specifier" do
18
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
- stub_const("ActiveRecord::VERSION::MINOR", 0)
20
-
21
- run_generator
22
-
23
- assert_migration "db/migrate/enable_pkce.rb" do |migration|
24
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
25
- end
26
- end
27
- end
28
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/previous_refresh_token_generator"
5
-
6
- describe "Doorkeeper::PreviousRefreshTokenGenerator" do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::PreviousRefreshTokenGenerator
10
- destination ::File.expand_path("../tmp/dummy", __FILE__)
11
-
12
- describe "after running the generator" do
13
- before :each do
14
- prepare_destination
15
-
16
- allow_any_instance_of(Doorkeeper::PreviousRefreshTokenGenerator).to(
17
- receive(:no_previous_refresh_token_column?).and_return(true)
18
- )
19
- end
20
-
21
- it "creates a migration with a version specifier" do
22
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
23
- stub_const("ActiveRecord::VERSION::MINOR", 0)
24
-
25
- run_generator
26
-
27
- assert_migration "db/migrate/add_previous_refresh_token_to_access_tokens.rb" do |migration|
28
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
29
- end
30
- end
31
-
32
- context "already exist" do
33
- it "does not create a migration" do
34
- allow_any_instance_of(Doorkeeper::PreviousRefreshTokenGenerator).to(
35
- receive(:no_previous_refresh_token_column?).and_call_original
36
- )
37
-
38
- run_generator
39
-
40
- assert_no_migration "db/migrate/add_previous_refresh_token_to_access_tokens.rb"
41
- end
42
- end
43
- end
44
- end
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Rails.application.routes.draw do
4
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "generators/doorkeeper/views_generator"
5
-
6
- describe Doorkeeper::Generators::ViewsGenerator do
7
- include GeneratorSpec::TestCase
8
-
9
- tests Doorkeeper::Generators::ViewsGenerator
10
- destination File.expand_path("tmp/dummy", __dir__)
11
-
12
- before :each do
13
- prepare_destination
14
- end
15
-
16
- it "create all views" do
17
- run_generator
18
- assert_file "app/views/doorkeeper/applications/_form.html.erb"
19
- assert_file "app/views/doorkeeper/applications/edit.html.erb"
20
- assert_file "app/views/doorkeeper/applications/index.html.erb"
21
- assert_file "app/views/doorkeeper/applications/new.html.erb"
22
- assert_file "app/views/doorkeeper/applications/show.html.erb"
23
-
24
- assert_file "app/views/doorkeeper/authorizations/error.html.erb"
25
- assert_file "app/views/doorkeeper/authorizations/new.html.erb"
26
-
27
- assert_file "app/views/doorkeeper/authorized_applications/index.html.erb"
28
- end
29
- end
@@ -1,137 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
- require "grape"
5
- require "rack/test"
6
- require "doorkeeper/grape/helpers"
7
-
8
- # Test Grape API application
9
- module GrapeApp
10
- class API < Grape::API
11
- version "v1", using: :path
12
- format :json
13
- prefix :api
14
-
15
- helpers Doorkeeper::Grape::Helpers
16
-
17
- resource :protected do
18
- before do
19
- doorkeeper_authorize!
20
- end
21
-
22
- desc "Protected resource, requires token."
23
-
24
- get :status do
25
- { token: doorkeeper_token.token }
26
- end
27
- end
28
-
29
- resource :protected_with_endpoint_scopes do
30
- before do
31
- doorkeeper_authorize!
32
- end
33
-
34
- desc "Protected resource, requires token with scopes (defined in endpoint)."
35
-
36
- get :status, scopes: [:admin] do
37
- { response: "OK" }
38
- end
39
- end
40
-
41
- resource :protected_with_helper_scopes do
42
- before do
43
- doorkeeper_authorize! :admin
44
- end
45
-
46
- desc "Protected resource, requires token with scopes (defined in helper)."
47
-
48
- get :status do
49
- { response: "OK" }
50
- end
51
- end
52
-
53
- resource :public do
54
- desc "Public resource, no token required."
55
-
56
- get :status do
57
- { response: "OK" }
58
- end
59
- end
60
- end
61
- end
62
-
63
- describe "Grape integration" do
64
- include Rack::Test::Methods
65
-
66
- def app
67
- GrapeApp::API
68
- end
69
-
70
- def json_body
71
- JSON.parse(last_response.body)
72
- end
73
-
74
- let(:client) { FactoryBot.create(:application) }
75
- let(:resource) { FactoryBot.create(:doorkeeper_testing_user, name: "Joe", password: "sekret") }
76
- let(:access_token) { client_is_authorized(client, resource) }
77
-
78
- context "with valid Access Token" do
79
- it "successfully requests protected resource" do
80
- get "api/v1/protected/status.json?access_token=#{access_token.token}"
81
-
82
- expect(last_response).to be_successful
83
-
84
- expect(json_body["token"]).to eq(access_token.token)
85
- end
86
-
87
- it "successfully requests protected resource with token that has required scopes (Grape endpoint)" do
88
- access_token = client_is_authorized(client, resource, scopes: "admin")
89
-
90
- get "api/v1/protected_with_endpoint_scopes/status.json?access_token=#{access_token.token}"
91
-
92
- expect(last_response).to be_successful
93
- expect(json_body).to have_key("response")
94
- end
95
-
96
- it "successfully requests protected resource with token that has required scopes (Doorkeeper helper)" do
97
- access_token = client_is_authorized(client, resource, scopes: "admin")
98
-
99
- get "api/v1/protected_with_helper_scopes/status.json?access_token=#{access_token.token}"
100
-
101
- expect(last_response).to be_successful
102
- expect(json_body).to have_key("response")
103
- end
104
-
105
- it "successfully requests public resource" do
106
- get "api/v1/public/status.json"
107
-
108
- expect(last_response).to be_successful
109
- expect(json_body).to have_key("response")
110
- end
111
- end
112
-
113
- context "with invalid Access Token" do
114
- it "fails without access token" do
115
- get "api/v1/protected/status.json"
116
-
117
- expect(last_response).not_to be_successful
118
- expect(json_body).to have_key("error")
119
- end
120
-
121
- it "fails for access token without scopes" do
122
- get "api/v1/protected_with_endpoint_scopes/status.json?access_token=#{access_token.token}"
123
-
124
- expect(last_response).not_to be_successful
125
- expect(json_body).to have_key("error")
126
- end
127
-
128
- it "fails for access token with invalid scopes" do
129
- access_token = client_is_authorized(client, resource, scopes: "read write")
130
-
131
- get "api/v1/protected_with_endpoint_scopes/status.json?access_token=#{access_token.token}"
132
-
133
- expect(last_response).not_to be_successful
134
- expect(json_body).to have_key("error")
135
- end
136
- end
137
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Doorkeeper::DashboardHelper do
6
- describe "#doorkeeper_errors_for" do
7
- let(:object) { double errors: { method: messages } }
8
- let(:messages) { ["first message", "second message"] }
9
-
10
- context "when object has errors" do
11
- it "returns error messages" do
12
- messages.each do |message|
13
- expect(helper.doorkeeper_errors_for(object, :method)).to include(
14
- message.capitalize
15
- )
16
- end
17
- end
18
- end
19
-
20
- context "when object has no errors" do
21
- it "returns nil" do
22
- expect(helper.doorkeeper_errors_for(object, :amonter_method)).to be_nil
23
- end
24
- end
25
- end
26
- end