doorkeeper 5.4.0.rc1 → 5.4.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 (189) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -1
  3. data/app/controllers/doorkeeper/applications_controller.rb +3 -3
  4. data/app/controllers/doorkeeper/authorized_applications_controller.rb +1 -1
  5. data/app/views/doorkeeper/applications/_form.html.erb +1 -1
  6. data/lib/doorkeeper/config/abstract_builder.rb +1 -1
  7. data/lib/doorkeeper/config.rb +24 -18
  8. data/lib/doorkeeper/engine.rb +1 -1
  9. data/lib/doorkeeper/helpers/controller.rb +4 -4
  10. data/lib/doorkeeper/models/access_grant_mixin.rb +11 -5
  11. data/lib/doorkeeper/models/access_token_mixin.rb +9 -5
  12. data/lib/doorkeeper/models/application_mixin.rb +5 -4
  13. data/lib/doorkeeper/oauth/authorization/code.rb +1 -1
  14. data/lib/doorkeeper/oauth/authorization/token.rb +1 -1
  15. data/lib/doorkeeper/oauth/client_credentials/creator.rb +2 -2
  16. data/lib/doorkeeper/oauth/client_credentials/validator.rb +3 -1
  17. data/lib/doorkeeper/oauth/code_request.rb +2 -2
  18. data/lib/doorkeeper/oauth/password_access_token_request.rb +1 -1
  19. data/lib/doorkeeper/oauth/pre_authorization.rb +5 -4
  20. data/lib/doorkeeper/oauth/token.rb +4 -5
  21. data/lib/doorkeeper/oauth/token_introspection.rb +1 -5
  22. data/lib/doorkeeper/oauth/token_request.rb +1 -1
  23. data/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +1 -1
  24. data/lib/doorkeeper/orm/active_record/mixins/access_token.rb +1 -1
  25. data/lib/doorkeeper/orm/active_record/mixins/application.rb +64 -9
  26. data/lib/doorkeeper/orm/active_record.rb +10 -2
  27. data/lib/doorkeeper/request/refresh_token.rb +2 -1
  28. data/lib/doorkeeper/server.rb +1 -1
  29. data/lib/doorkeeper/stale_records_cleaner.rb +4 -4
  30. data/lib/doorkeeper/version.rb +1 -1
  31. data/lib/doorkeeper.rb +1 -1
  32. data/lib/generators/doorkeeper/templates/migration.rb.erb +12 -5
  33. metadata +7 -301
  34. data/Appraisals +0 -26
  35. data/CODE_OF_CONDUCT.md +0 -46
  36. data/CONTRIBUTING.md +0 -49
  37. data/Dangerfile +0 -67
  38. data/Dockerfile +0 -29
  39. data/Gemfile +0 -25
  40. data/NEWS.md +0 -1
  41. data/RELEASING.md +0 -11
  42. data/Rakefile +0 -28
  43. data/SECURITY.md +0 -15
  44. data/UPGRADE.md +0 -2
  45. data/bin/console +0 -30
  46. data/doorkeeper.gemspec +0 -42
  47. data/gemfiles/rails_5_0.gemfile +0 -19
  48. data/gemfiles/rails_5_1.gemfile +0 -19
  49. data/gemfiles/rails_5_2.gemfile +0 -19
  50. data/gemfiles/rails_6_0.gemfile +0 -19
  51. data/gemfiles/rails_master.gemfile +0 -19
  52. data/spec/controllers/application_metal_controller_spec.rb +0 -64
  53. data/spec/controllers/applications_controller_spec.rb +0 -274
  54. data/spec/controllers/authorizations_controller_spec.rb +0 -743
  55. data/spec/controllers/protected_resources_controller_spec.rb +0 -361
  56. data/spec/controllers/token_info_controller_spec.rb +0 -50
  57. data/spec/controllers/tokens_controller_spec.rb +0 -499
  58. data/spec/dummy/Rakefile +0 -9
  59. data/spec/dummy/app/assets/config/manifest.js +0 -2
  60. data/spec/dummy/app/controllers/application_controller.rb +0 -5
  61. data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -9
  62. data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -14
  63. data/spec/dummy/app/controllers/home_controller.rb +0 -18
  64. data/spec/dummy/app/controllers/metal_controller.rb +0 -13
  65. data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -13
  66. data/spec/dummy/app/helpers/application_helper.rb +0 -7
  67. data/spec/dummy/app/models/user.rb +0 -11
  68. data/spec/dummy/app/views/home/index.html.erb +0 -0
  69. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  70. data/spec/dummy/config/application.rb +0 -51
  71. data/spec/dummy/config/boot.rb +0 -7
  72. data/spec/dummy/config/database.yml +0 -15
  73. data/spec/dummy/config/environment.rb +0 -5
  74. data/spec/dummy/config/environments/development.rb +0 -31
  75. data/spec/dummy/config/environments/production.rb +0 -64
  76. data/spec/dummy/config/environments/test.rb +0 -45
  77. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -9
  78. data/spec/dummy/config/initializers/doorkeeper.rb +0 -166
  79. data/spec/dummy/config/initializers/secret_token.rb +0 -10
  80. data/spec/dummy/config/initializers/session_store.rb +0 -10
  81. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -16
  82. data/spec/dummy/config/locales/doorkeeper.en.yml +0 -5
  83. data/spec/dummy/config/routes.rb +0 -13
  84. data/spec/dummy/config.ru +0 -6
  85. data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -11
  86. data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -7
  87. data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -69
  88. data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -9
  89. data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -13
  90. data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +0 -8
  91. data/spec/dummy/db/migrate/20180210183654_add_confidential_to_applications.rb +0 -13
  92. data/spec/dummy/db/schema.rb +0 -70
  93. data/spec/dummy/public/404.html +0 -26
  94. data/spec/dummy/public/422.html +0 -26
  95. data/spec/dummy/public/500.html +0 -26
  96. data/spec/dummy/public/favicon.ico +0 -0
  97. data/spec/dummy/script/rails +0 -9
  98. data/spec/factories.rb +0 -30
  99. data/spec/generators/application_owner_generator_spec.rb +0 -28
  100. data/spec/generators/confidential_applications_generator_spec.rb +0 -29
  101. data/spec/generators/enable_polymorphic_resource_owner_generator_spec.rb +0 -47
  102. data/spec/generators/install_generator_spec.rb +0 -36
  103. data/spec/generators/migration_generator_spec.rb +0 -28
  104. data/spec/generators/pkce_generator_spec.rb +0 -28
  105. data/spec/generators/previous_refresh_token_generator_spec.rb +0 -44
  106. data/spec/generators/templates/routes.rb +0 -4
  107. data/spec/generators/views_generator_spec.rb +0 -29
  108. data/spec/grape/grape_integration_spec.rb +0 -137
  109. data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -26
  110. data/spec/lib/config_spec.rb +0 -813
  111. data/spec/lib/doorkeeper_spec.rb +0 -27
  112. data/spec/lib/models/expirable_spec.rb +0 -61
  113. data/spec/lib/models/reusable_spec.rb +0 -40
  114. data/spec/lib/models/revocable_spec.rb +0 -58
  115. data/spec/lib/models/scopes_spec.rb +0 -61
  116. data/spec/lib/models/secret_storable_spec.rb +0 -135
  117. data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -39
  118. data/spec/lib/oauth/authorization_code_request_spec.rb +0 -180
  119. data/spec/lib/oauth/base_request_spec.rb +0 -210
  120. data/spec/lib/oauth/base_response_spec.rb +0 -45
  121. data/spec/lib/oauth/client/credentials_spec.rb +0 -90
  122. data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -135
  123. data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -110
  124. data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -57
  125. data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -27
  126. data/spec/lib/oauth/client_credentials_request_spec.rb +0 -108
  127. data/spec/lib/oauth/client_spec.rb +0 -38
  128. data/spec/lib/oauth/code_request_spec.rb +0 -46
  129. data/spec/lib/oauth/code_response_spec.rb +0 -36
  130. data/spec/lib/oauth/error_response_spec.rb +0 -64
  131. data/spec/lib/oauth/error_spec.rb +0 -21
  132. data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -20
  133. data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -110
  134. data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -21
  135. data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -262
  136. data/spec/lib/oauth/invalid_request_response_spec.rb +0 -73
  137. data/spec/lib/oauth/invalid_token_response_spec.rb +0 -53
  138. data/spec/lib/oauth/password_access_token_request_spec.rb +0 -201
  139. data/spec/lib/oauth/pre_authorization_spec.rb +0 -218
  140. data/spec/lib/oauth/refresh_token_request_spec.rb +0 -166
  141. data/spec/lib/oauth/scopes_spec.rb +0 -146
  142. data/spec/lib/oauth/token_request_spec.rb +0 -164
  143. data/spec/lib/oauth/token_response_spec.rb +0 -84
  144. data/spec/lib/oauth/token_spec.rb +0 -156
  145. data/spec/lib/option_spec.rb +0 -51
  146. data/spec/lib/request/strategy_spec.rb +0 -54
  147. data/spec/lib/secret_storing/base_spec.rb +0 -60
  148. data/spec/lib/secret_storing/bcrypt_spec.rb +0 -49
  149. data/spec/lib/secret_storing/plain_spec.rb +0 -44
  150. data/spec/lib/secret_storing/sha256_hash_spec.rb +0 -48
  151. data/spec/lib/server_spec.rb +0 -49
  152. data/spec/lib/stale_records_cleaner_spec.rb +0 -102
  153. data/spec/models/doorkeeper/access_grant_spec.rb +0 -175
  154. data/spec/models/doorkeeper/access_token_spec.rb +0 -650
  155. data/spec/models/doorkeeper/application_spec.rb +0 -442
  156. data/spec/requests/applications/applications_request_spec.rb +0 -259
  157. data/spec/requests/applications/authorized_applications_spec.rb +0 -32
  158. data/spec/requests/endpoints/authorization_spec.rb +0 -91
  159. data/spec/requests/endpoints/token_spec.rb +0 -79
  160. data/spec/requests/flows/authorization_code_errors_spec.rb +0 -82
  161. data/spec/requests/flows/authorization_code_spec.rb +0 -530
  162. data/spec/requests/flows/client_credentials_spec.rb +0 -207
  163. data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -46
  164. data/spec/requests/flows/implicit_grant_spec.rb +0 -91
  165. data/spec/requests/flows/password_spec.rb +0 -316
  166. data/spec/requests/flows/refresh_token_spec.rb +0 -241
  167. data/spec/requests/flows/revoke_token_spec.rb +0 -196
  168. data/spec/requests/flows/skip_authorization_spec.rb +0 -66
  169. data/spec/requests/protected_resources/metal_spec.rb +0 -16
  170. data/spec/requests/protected_resources/private_api_spec.rb +0 -83
  171. data/spec/routing/custom_controller_routes_spec.rb +0 -133
  172. data/spec/routing/default_routes_spec.rb +0 -41
  173. data/spec/routing/scoped_routes_spec.rb +0 -47
  174. data/spec/spec_helper.rb +0 -54
  175. data/spec/spec_helper_integration.rb +0 -4
  176. data/spec/support/dependencies/factory_bot.rb +0 -4
  177. data/spec/support/doorkeeper_rspec.rb +0 -22
  178. data/spec/support/helpers/access_token_request_helper.rb +0 -14
  179. data/spec/support/helpers/authorization_request_helper.rb +0 -43
  180. data/spec/support/helpers/config_helper.rb +0 -11
  181. data/spec/support/helpers/model_helper.rb +0 -78
  182. data/spec/support/helpers/request_spec_helper.rb +0 -110
  183. data/spec/support/helpers/url_helper.rb +0 -62
  184. data/spec/support/orm/active_record.rb +0 -5
  185. data/spec/support/shared/controllers_shared_context.rb +0 -133
  186. data/spec/support/shared/hashing_shared_context.rb +0 -36
  187. data/spec/support/shared/models_shared_examples.rb +0 -56
  188. data/spec/validators/redirect_uri_validator_spec.rb +0 -183
  189. data/spec/version/version_spec.rb +0 -17
@@ -1,175 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Doorkeeper::AccessGrant do
6
- let(:resource_owner) { FactoryBot.create(:resource_owner) }
7
- let(:client) { FactoryBot.build_stubbed(:application) }
8
- let(:clazz) { Doorkeeper::AccessGrant }
9
-
10
- subject do
11
- FactoryBot.build(
12
- :access_grant,
13
- application: client,
14
- resource_owner_id: resource_owner.id,
15
- resource_owner_type: resource_owner.class.name,
16
- )
17
- end
18
-
19
- it { expect(subject).to be_valid }
20
-
21
- it_behaves_like "an accessible token"
22
- it_behaves_like "a revocable token"
23
- it_behaves_like "a unique token" do
24
- let(:factory_name) { :access_grant }
25
- end
26
-
27
- context "with hashing enabled" do
28
- let(:resource_owner) { FactoryBot.create(:resource_owner) }
29
- let(:grant) do
30
- FactoryBot.create :access_grant,
31
- resource_owner_id: resource_owner.id,
32
- resource_owner_type: resource_owner.class.name
33
- end
34
- include_context "with token hashing enabled"
35
-
36
- it "holds a volatile plaintext token when created" do
37
- expect(grant.plaintext_token).to be_a(String)
38
- expect(grant.token)
39
- .to eq(hashed_or_plain_token_func.call(grant.plaintext_token))
40
-
41
- # Finder method only finds the hashed token
42
- loaded = clazz.find_by(token: grant.token)
43
- expect(loaded).to eq(grant)
44
- expect(loaded.plaintext_token).to be_nil
45
- expect(loaded.token).to eq(grant.token)
46
- end
47
-
48
- it "does not find_by plain text tokens" do
49
- expect(clazz.find_by(token: grant.plaintext_token)).to be_nil
50
- end
51
-
52
- describe "with having a plain text token" do
53
- let(:plain_text_token) { "plain text token" }
54
-
55
- before do
56
- # Assume we have a plain text token from before activating the option
57
- grant.update_column(:token, plain_text_token)
58
- end
59
-
60
- context "without fallback lookup" do
61
- it "does not provide lookups with either through by_token" do
62
- expect(clazz.by_token(plain_text_token)).to eq(nil)
63
- expect(clazz.by_token(grant.token)).to eq(nil)
64
-
65
- # And it does not touch the token
66
- grant.reload
67
- expect(grant.token).to eq(plain_text_token)
68
- end
69
- end
70
-
71
- context "with fallback lookup" do
72
- include_context "with token hashing and fallback lookup enabled"
73
-
74
- it "upgrades a plain token when falling back to it" do
75
- # Side-effect: This will automatically upgrade the token
76
- expect(clazz).to receive(:upgrade_fallback_value).and_call_original
77
- expect(clazz.by_token(plain_text_token))
78
- .to have_attributes(
79
- resource_owner_id: grant.resource_owner_id,
80
- application_id: grant.application_id,
81
- redirect_uri: grant.redirect_uri,
82
- expires_in: grant.expires_in,
83
- scopes: grant.scopes,
84
- )
85
-
86
- # Will find subsequently by hashing the token
87
- expect(clazz.by_token(plain_text_token))
88
- .to have_attributes(
89
- resource_owner_id: grant.resource_owner_id,
90
- application_id: grant.application_id,
91
- redirect_uri: grant.redirect_uri,
92
- expires_in: grant.expires_in,
93
- scopes: grant.scopes,
94
- )
95
-
96
- # Not all the ORM support :id PK
97
- expect(clazz.by_token(plain_text_token).id).to eq(grant.id) if grant.respond_to?(:id)
98
-
99
- # And it modifies the token value
100
- grant.reload
101
- expect(grant.token).not_to eq(plain_text_token)
102
- expect(clazz.find_by(token: plain_text_token)).to eq(nil)
103
- expect(clazz.find_by(token: grant.token)).not_to be_nil
104
- end
105
- end
106
- end
107
- end
108
-
109
- describe "validations" do
110
- it "is invalid without resource_owner_id" do
111
- subject.resource_owner_id = nil
112
- expect(subject).not_to be_valid
113
- end
114
-
115
- it "is invalid without application_id" do
116
- subject.application_id = nil
117
- expect(subject).not_to be_valid
118
- end
119
-
120
- it "is invalid without token" do
121
- subject.save
122
- subject.token = nil
123
- expect(subject).not_to be_valid
124
- end
125
-
126
- it "is invalid without expires_in" do
127
- subject.expires_in = nil
128
- expect(subject).not_to be_valid
129
- end
130
- end
131
-
132
- describe ".revoke_all_for" do
133
- let(:application) { FactoryBot.create :application }
134
- let(:default_attributes) do
135
- {
136
- application: application,
137
- resource_owner_id: resource_owner.id,
138
- resource_owner_type: resource_owner.class.name,
139
- }
140
- end
141
-
142
- it "revokes all tokens for given application and resource owner" do
143
- FactoryBot.create :access_grant, default_attributes
144
-
145
- described_class.revoke_all_for(application.id, resource_owner)
146
-
147
- described_class.all.each do |token|
148
- expect(token).to be_revoked
149
- end
150
- end
151
-
152
- it "matches application" do
153
- access_grant_for_different_app = FactoryBot.create(
154
- :access_grant,
155
- default_attributes.merge(application: FactoryBot.create(:application)),
156
- )
157
-
158
- described_class.revoke_all_for(application.id, resource_owner)
159
-
160
- expect(access_grant_for_different_app.reload).not_to be_revoked
161
- end
162
-
163
- it "matches resource owner" do
164
- other_resource_owner = FactoryBot.create(:resource_owner)
165
- access_grant_for_different_owner = FactoryBot.create(
166
- :access_grant,
167
- default_attributes.merge(resource_owner_id: other_resource_owner.id),
168
- )
169
-
170
- described_class.revoke_all_for application.id, resource_owner
171
-
172
- expect(access_grant_for_different_owner.reload).not_to be_revoked
173
- end
174
- end
175
- end