doorkeeper 5.0.3 → 5.1.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 (215) hide show
  1. checksums.yaml +4 -4
  2. data/.hound.yml +2 -1
  3. data/.rubocop.yml +37 -4
  4. data/.travis.yml +11 -21
  5. data/Appraisals +29 -7
  6. data/Dangerfile +5 -2
  7. data/Gemfile +19 -5
  8. data/NEWS.md +81 -21
  9. data/README.md +75 -485
  10. data/Rakefile +10 -8
  11. data/app/controllers/doorkeeper/application_controller.rb +1 -2
  12. data/app/controllers/doorkeeper/application_metal_controller.rb +2 -13
  13. data/app/controllers/doorkeeper/applications_controller.rb +20 -8
  14. data/app/controllers/doorkeeper/authorized_applications_controller.rb +1 -1
  15. data/app/controllers/doorkeeper/token_info_controller.rb +2 -2
  16. data/app/controllers/doorkeeper/tokens_controller.rb +11 -11
  17. data/app/helpers/doorkeeper/dashboard_helper.rb +1 -1
  18. data/app/validators/redirect_uri_validator.rb +5 -2
  19. data/app/views/doorkeeper/applications/_form.html.erb +6 -0
  20. data/app/views/doorkeeper/applications/show.html.erb +1 -1
  21. data/app/views/layouts/doorkeeper/admin.html.erb +5 -3
  22. data/bin/console +16 -0
  23. data/config/locales/en.yml +1 -0
  24. data/doorkeeper.gemspec +24 -21
  25. data/gemfiles/rails_5_0.gemfile +9 -4
  26. data/gemfiles/rails_5_1.gemfile +9 -4
  27. data/gemfiles/rails_5_2.gemfile +10 -5
  28. data/gemfiles/rails_6_0.gemfile +17 -0
  29. data/gemfiles/rails_master.gemfile +9 -9
  30. data/lib/doorkeeper/config/option.rb +64 -0
  31. data/lib/doorkeeper/config.rb +191 -75
  32. data/lib/doorkeeper/engine.rb +1 -1
  33. data/lib/doorkeeper/grape/authorization_decorator.rb +4 -4
  34. data/lib/doorkeeper/grape/helpers.rb +3 -3
  35. data/lib/doorkeeper/helpers/controller.rb +3 -2
  36. data/lib/doorkeeper/models/access_grant_mixin.rb +20 -3
  37. data/lib/doorkeeper/models/access_token_mixin.rb +63 -19
  38. data/lib/doorkeeper/models/application_mixin.rb +43 -1
  39. data/lib/doorkeeper/models/concerns/expirable.rb +4 -2
  40. data/lib/doorkeeper/models/concerns/ownership.rb +1 -6
  41. data/lib/doorkeeper/models/concerns/reusable.rb +19 -0
  42. data/lib/doorkeeper/models/concerns/revocable.rb +2 -1
  43. data/lib/doorkeeper/models/concerns/scopes.rb +5 -1
  44. data/lib/doorkeeper/models/concerns/secret_storable.rb +108 -0
  45. data/lib/doorkeeper/oauth/authorization/code.rb +2 -2
  46. data/lib/doorkeeper/oauth/authorization/token.rb +12 -7
  47. data/lib/doorkeeper/oauth/authorization/uri_builder.rb +1 -1
  48. data/lib/doorkeeper/oauth/authorization_code_request.rb +6 -4
  49. data/lib/doorkeeper/oauth/client.rb +1 -1
  50. data/lib/doorkeeper/oauth/client_credentials/validation.rb +5 -4
  51. data/lib/doorkeeper/oauth/client_credentials_request.rb +1 -1
  52. data/lib/doorkeeper/oauth/code_response.rb +2 -2
  53. data/lib/doorkeeper/oauth/error_response.rb +10 -6
  54. data/lib/doorkeeper/oauth/forbidden_token_response.rb +1 -1
  55. data/lib/doorkeeper/oauth/helpers/scope_checker.rb +23 -8
  56. data/lib/doorkeeper/oauth/helpers/unique_token.rb +13 -1
  57. data/lib/doorkeeper/oauth/helpers/uri_checker.rb +37 -1
  58. data/lib/doorkeeper/oauth/invalid_token_response.rb +5 -1
  59. data/lib/doorkeeper/oauth/password_access_token_request.rb +7 -2
  60. data/lib/doorkeeper/oauth/pre_authorization.rb +11 -5
  61. data/lib/doorkeeper/oauth/refresh_token_request.rb +5 -2
  62. data/lib/doorkeeper/oauth/scopes.rb +5 -3
  63. data/lib/doorkeeper/oauth/token.rb +2 -2
  64. data/lib/doorkeeper/oauth/token_introspection.rb +74 -8
  65. data/lib/doorkeeper/oauth/token_response.rb +9 -9
  66. data/lib/doorkeeper/oauth.rb +5 -5
  67. data/lib/doorkeeper/orm/active_record/access_grant.rb +27 -13
  68. data/lib/doorkeeper/orm/active_record/access_token.rb +6 -13
  69. data/lib/doorkeeper/orm/active_record/application.rb +21 -57
  70. data/lib/doorkeeper/orm/active_record/stale_records_cleaner.rb +10 -3
  71. data/lib/doorkeeper/orm/active_record.rb +6 -6
  72. data/lib/doorkeeper/rails/helpers.rb +1 -1
  73. data/lib/doorkeeper/rails/routes/mapping.rb +7 -7
  74. data/lib/doorkeeper/rails/routes.rb +11 -11
  75. data/lib/doorkeeper/rake/db.rake +13 -13
  76. data/lib/doorkeeper/rake.rb +1 -1
  77. data/lib/doorkeeper/request.rb +1 -1
  78. data/lib/doorkeeper/secret_storing/base.rb +64 -0
  79. data/lib/doorkeeper/secret_storing/bcrypt.rb +60 -0
  80. data/lib/doorkeeper/secret_storing/plain.rb +33 -0
  81. data/lib/doorkeeper/secret_storing/sha256_hash.rb +26 -0
  82. data/lib/doorkeeper/stale_records_cleaner.rb +1 -1
  83. data/lib/doorkeeper/version.rb +3 -3
  84. data/lib/doorkeeper.rb +69 -60
  85. data/lib/generators/doorkeeper/application_owner_generator.rb +10 -9
  86. data/lib/generators/doorkeeper/confidential_applications_generator.rb +10 -9
  87. data/lib/generators/doorkeeper/install_generator.rb +11 -9
  88. data/lib/generators/doorkeeper/migration_generator.rb +9 -9
  89. data/lib/generators/doorkeeper/pkce_generator.rb +10 -9
  90. data/lib/generators/doorkeeper/previous_refresh_token_generator.rb +10 -9
  91. data/lib/generators/doorkeeper/templates/initializer.rb +120 -13
  92. data/lib/generators/doorkeeper/templates/migration.rb.erb +15 -7
  93. data/lib/generators/doorkeeper/views_generator.rb +6 -4
  94. data/spec/controllers/application_metal_controller_spec.rb +24 -10
  95. data/spec/controllers/applications_controller_spec.rb +54 -52
  96. data/spec/controllers/authorizations_controller_spec.rb +139 -145
  97. data/spec/controllers/protected_resources_controller_spec.rb +78 -76
  98. data/spec/controllers/token_info_controller_spec.rb +14 -12
  99. data/spec/controllers/tokens_controller_spec.rb +167 -108
  100. data/spec/dummy/Rakefile +3 -1
  101. data/spec/dummy/app/controllers/application_controller.rb +3 -1
  102. data/spec/dummy/app/controllers/custom_authorizations_controller.rb +2 -0
  103. data/spec/dummy/app/controllers/full_protected_resources_controller.rb +4 -2
  104. data/spec/dummy/app/controllers/home_controller.rb +5 -3
  105. data/spec/dummy/app/controllers/metal_controller.rb +2 -0
  106. data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +4 -2
  107. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  108. data/spec/dummy/app/models/user.rb +2 -0
  109. data/spec/dummy/config/application.rb +25 -1
  110. data/spec/dummy/config/environments/development.rb +2 -0
  111. data/spec/dummy/config/environments/production.rb +2 -0
  112. data/spec/dummy/config/environments/test.rb +3 -1
  113. data/spec/dummy/config/initializers/backtrace_silencers.rb +2 -0
  114. data/spec/dummy/config/initializers/doorkeeper.rb +5 -2
  115. data/spec/dummy/config/initializers/secret_token.rb +3 -1
  116. data/spec/dummy/config/initializers/session_store.rb +3 -1
  117. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -0
  118. data/spec/dummy/config.ru +3 -1
  119. data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +17 -10
  120. data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +2 -0
  121. data/spec/dummy/db/schema.rb +1 -1
  122. data/spec/dummy/script/rails +5 -3
  123. data/spec/factories.rb +8 -6
  124. data/spec/generators/application_owner_generator_spec.rb +13 -26
  125. data/spec/generators/confidential_applications_generator_spec.rb +12 -28
  126. data/spec/generators/install_generator_spec.rb +17 -15
  127. data/spec/generators/migration_generator_spec.rb +13 -26
  128. data/spec/generators/pkce_generator_spec.rb +11 -26
  129. data/spec/generators/previous_refresh_token_generator_spec.rb +16 -29
  130. data/spec/generators/templates/routes.rb +2 -0
  131. data/spec/generators/views_generator_spec.rb +14 -12
  132. data/spec/grape/grape_integration_spec.rb +34 -32
  133. data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +9 -7
  134. data/spec/lib/config_spec.rb +268 -99
  135. data/spec/lib/doorkeeper_spec.rb +3 -1
  136. data/spec/lib/models/expirable_spec.rb +22 -8
  137. data/spec/lib/models/reusable_spec.rb +40 -0
  138. data/spec/lib/models/revocable_spec.rb +8 -6
  139. data/spec/lib/models/scopes_spec.rb +27 -13
  140. data/spec/lib/models/secret_storable_spec.rb +135 -0
  141. data/spec/lib/oauth/authorization/uri_builder_spec.rb +17 -15
  142. data/spec/lib/oauth/authorization_code_request_spec.rb +34 -11
  143. data/spec/lib/oauth/base_request_spec.rb +20 -8
  144. data/spec/lib/oauth/base_response_spec.rb +3 -1
  145. data/spec/lib/oauth/client/credentials_spec.rb +24 -22
  146. data/spec/lib/oauth/client_credentials/creator_spec.rb +56 -10
  147. data/spec/lib/oauth/client_credentials/issuer_spec.rb +27 -18
  148. data/spec/lib/oauth/client_credentials/validation_spec.rb +20 -15
  149. data/spec/lib/oauth/client_credentials_integration_spec.rb +7 -5
  150. data/spec/lib/oauth/client_credentials_request_spec.rb +27 -21
  151. data/spec/lib/oauth/client_spec.rb +15 -13
  152. data/spec/lib/oauth/code_request_spec.rb +8 -6
  153. data/spec/lib/oauth/code_response_spec.rb +9 -7
  154. data/spec/lib/oauth/error_response_spec.rb +19 -11
  155. data/spec/lib/oauth/error_spec.rb +4 -2
  156. data/spec/lib/oauth/forbidden_token_response_spec.rb +7 -5
  157. data/spec/lib/oauth/helpers/scope_checker_spec.rb +68 -31
  158. data/spec/lib/oauth/helpers/unique_token_spec.rb +8 -6
  159. data/spec/lib/oauth/helpers/uri_checker_spec.rb +115 -95
  160. data/spec/lib/oauth/invalid_token_response_spec.rb +3 -1
  161. data/spec/lib/oauth/password_access_token_request_spec.rb +79 -30
  162. data/spec/lib/oauth/pre_authorization_spec.rb +80 -54
  163. data/spec/lib/oauth/refresh_token_request_spec.rb +36 -33
  164. data/spec/lib/oauth/scopes_spec.rb +63 -61
  165. data/spec/lib/oauth/token_request_spec.rb +79 -24
  166. data/spec/lib/oauth/token_response_spec.rb +40 -38
  167. data/spec/lib/oauth/token_spec.rb +60 -44
  168. data/spec/lib/request/strategy_spec.rb +3 -1
  169. data/spec/lib/secret_storing/base_spec.rb +60 -0
  170. data/spec/lib/secret_storing/bcrypt_spec.rb +49 -0
  171. data/spec/lib/secret_storing/plain_spec.rb +44 -0
  172. data/spec/lib/secret_storing/sha256_hash_spec.rb +48 -0
  173. data/spec/lib/server_spec.rb +16 -14
  174. data/spec/lib/stale_records_cleaner_spec.rb +17 -17
  175. data/spec/models/doorkeeper/access_grant_spec.rb +80 -15
  176. data/spec/models/doorkeeper/access_token_spec.rb +198 -73
  177. data/spec/models/doorkeeper/application_spec.rb +280 -288
  178. data/spec/requests/applications/applications_request_spec.rb +98 -66
  179. data/spec/requests/applications/authorized_applications_spec.rb +20 -18
  180. data/spec/requests/endpoints/authorization_spec.rb +25 -23
  181. data/spec/requests/endpoints/token_spec.rb +38 -36
  182. data/spec/requests/flows/authorization_code_errors_spec.rb +26 -24
  183. data/spec/requests/flows/authorization_code_spec.rb +193 -151
  184. data/spec/requests/flows/client_credentials_spec.rb +54 -52
  185. data/spec/requests/flows/implicit_grant_errors_spec.rb +10 -8
  186. data/spec/requests/flows/implicit_grant_spec.rb +27 -25
  187. data/spec/requests/flows/password_spec.rb +59 -55
  188. data/spec/requests/flows/refresh_token_spec.rb +45 -43
  189. data/spec/requests/flows/revoke_token_spec.rb +40 -54
  190. data/spec/requests/flows/skip_authorization_spec.rb +23 -21
  191. data/spec/requests/protected_resources/metal_spec.rb +7 -5
  192. data/spec/requests/protected_resources/private_api_spec.rb +35 -33
  193. data/spec/routing/custom_controller_routes_spec.rb +71 -65
  194. data/spec/routing/default_routes_spec.rb +22 -20
  195. data/spec/routing/scoped_routes_spec.rb +20 -18
  196. data/spec/spec_helper.rb +15 -13
  197. data/spec/spec_helper_integration.rb +3 -1
  198. data/spec/support/dependencies/factory_bot.rb +3 -1
  199. data/spec/support/doorkeeper_rspec.rb +3 -1
  200. data/spec/support/helpers/access_token_request_helper.rb +3 -1
  201. data/spec/support/helpers/authorization_request_helper.rb +4 -2
  202. data/spec/support/helpers/config_helper.rb +2 -0
  203. data/spec/support/helpers/model_helper.rb +3 -1
  204. data/spec/support/helpers/request_spec_helper.rb +5 -3
  205. data/spec/support/helpers/url_helper.rb +9 -7
  206. data/spec/support/http_method_shim.rb +4 -9
  207. data/spec/support/orm/active_record.rb +3 -1
  208. data/spec/support/shared/controllers_shared_context.rb +18 -16
  209. data/spec/support/shared/hashing_shared_context.rb +36 -0
  210. data/spec/support/shared/models_shared_examples.rb +12 -10
  211. data/spec/validators/redirect_uri_validator_spec.rb +74 -45
  212. data/spec/version/version_spec.rb +7 -5
  213. metadata +60 -26
  214. data/gemfiles/rails_4_2.gemfile +0 -13
  215. data/spec/dummy/config/initializers/new_framework_defaults.rb +0 -8
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
 
3
- Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
5
+ Dummy::Application.config.session_store :cookie_store, key: "_dummy_session"
4
6
 
5
7
  # Use the database for sessions instead of the cookie-based default,
6
8
  # which shouldn't be used to store highly confidential information
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
  #
3
5
  # This file contains settings for ActionController::ParamsWrapper which
data/spec/dummy/config.ru CHANGED
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is used by Rack-based servers to start the application.
2
4
 
3
- require ::File.expand_path('../config/environment', __FILE__)
5
+ require ::File.expand_path("../config/environment", __FILE__)
4
6
  run Dummy::Application
@@ -3,18 +3,22 @@
3
3
  class CreateDoorkeeperTables < ActiveRecord::Migration[4.2]
4
4
  def change
5
5
  create_table :oauth_applications do |t|
6
- t.string :name, null: false
7
- t.string :uid, null: false
8
- t.string :secret, null: false
6
+ t.string :name, null: false
7
+ t.string :uid, null: false
8
+ t.string :secret, null: false
9
+
10
+ # Remove `null: false` if you are planning to use grant flows
11
+ # that doesn't require redirect URI to be used during authorization
12
+ # like Client Credentials flow or Resource Owner Password.
9
13
  t.text :redirect_uri, null: false
10
- t.string :scopes, null: false, default: ''
14
+ t.string :scopes, null: false, default: ""
11
15
  t.timestamps null: false
12
16
  end
13
17
 
14
18
  add_index :oauth_applications, :uid, unique: true
15
19
 
16
20
  create_table :oauth_access_grants do |t|
17
- t.integer :resource_owner_id, null: false
21
+ t.references :resource_owner, null: false
18
22
  t.references :application, null: false
19
23
  t.string :token, null: false
20
24
  t.integer :expires_in, null: false
@@ -32,16 +36,16 @@ class CreateDoorkeeperTables < ActiveRecord::Migration[4.2]
32
36
  )
33
37
 
34
38
  create_table :oauth_access_tokens do |t|
35
- t.integer :resource_owner_id
36
- t.references :application
39
+ t.references :resource_owner, index: true
40
+ t.references :application, null: false
37
41
 
38
42
  # If you use a custom token generator you may need to change this column
39
43
  # from string to text, so that it accepts tokens larger than 255
40
44
  # characters. More info on custom token generators in:
41
45
  # https://github.com/doorkeeper-gem/doorkeeper/tree/v3.0.0.rc1#custom-access-token-generator
42
46
  #
43
- # t.text :token, null: false
44
- t.string :token, null: false
47
+ # t.text :token, null: false
48
+ t.string :token, null: false
45
49
 
46
50
  t.string :refresh_token
47
51
  t.integer :expires_in
@@ -51,12 +55,15 @@ class CreateDoorkeeperTables < ActiveRecord::Migration[4.2]
51
55
  end
52
56
 
53
57
  add_index :oauth_access_tokens, :token, unique: true
54
- add_index :oauth_access_tokens, :resource_owner_id
55
58
  add_index :oauth_access_tokens, :refresh_token, unique: true
56
59
  add_foreign_key(
57
60
  :oauth_access_tokens,
58
61
  :oauth_applications,
59
62
  column: :application_id
60
63
  )
64
+
65
+ # Uncomment below to ensure a valid reference to the resource owner's table
66
+ add_foreign_key :oauth_access_grants, :users, column: :resource_owner_id
67
+ add_foreign_key :oauth_access_tokens, :users, column: :resource_owner_id
61
68
  end
62
69
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class EnablePkce < ActiveRecord::Migration[4.2]
2
4
  def change
3
5
  add_column :oauth_access_grants, :code_challenge, :string, null: true
@@ -47,7 +47,7 @@ ActiveRecord::Schema.define(version: 20180210183654) do
47
47
  t.string "name", null: false
48
48
  t.string "uid", null: false
49
49
  t.string "secret", null: false
50
- t.text "redirect_uri", null: false
50
+ t.text "redirect_uri"
51
51
  t.string "scopes", default: "", null: false
52
52
  t.datetime "created_at", null: false
53
53
  t.datetime "updated_at", null: false
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  # This command will automatically be run when you run "rails" with Rails 3 gems
3
5
  # installed from the root of your application.
4
6
 
5
- APP_PATH = File.expand_path('../config/application', __dir__)
6
- require File.expand_path('../config/boot', __dir__)
7
- require 'rails/commands'
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 CHANGED
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  FactoryBot.define do
2
- factory :access_grant, class: Doorkeeper::AccessGrant do
4
+ factory :access_grant, class: "Doorkeeper::AccessGrant" do
3
5
  sequence(:resource_owner_id) { |n| n }
4
6
  application
5
- redirect_uri { 'https://app.com/callback' }
7
+ redirect_uri { "https://app.com/callback" }
6
8
  expires_in { 100 }
7
- scopes { 'public write' }
9
+ scopes { "public write" }
8
10
  end
9
11
 
10
- factory :access_token, class: Doorkeeper::AccessToken do
12
+ factory :access_token, class: "Doorkeeper::AccessToken" do
11
13
  sequence(:resource_owner_id) { |n| n }
12
14
  application
13
15
  expires_in { 2.hours }
@@ -17,9 +19,9 @@ FactoryBot.define do
17
19
  end
18
20
  end
19
21
 
20
- factory :application, class: Doorkeeper::Application do
22
+ factory :application, class: "Doorkeeper::Application" do
21
23
  sequence(:name) { |n| "Application #{n}" }
22
- redirect_uri { 'https://app.com/callback' }
24
+ redirect_uri { "https://app.com/callback" }
23
25
  end
24
26
 
25
27
  # do not name this factory :user, otherwise it will conflict with factories
@@ -1,40 +1,27 @@
1
- require 'spec_helper'
2
- require 'generators/doorkeeper/application_owner_generator'
1
+ # frozen_string_literal: true
3
2
 
4
- describe 'Doorkeeper::ApplicationOwnerGenerator' do
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/application_owner_generator"
5
+
6
+ describe "Doorkeeper::ApplicationOwnerGenerator" do
5
7
  include GeneratorSpec::TestCase
6
8
 
7
9
  tests Doorkeeper::ApplicationOwnerGenerator
8
- destination ::File.expand_path('../tmp/dummy', __FILE__)
10
+ destination ::File.expand_path("../tmp/dummy", __FILE__)
9
11
 
10
- describe 'after running the generator' do
12
+ describe "after running the generator" do
11
13
  before :each do
12
14
  prepare_destination
13
15
  end
14
16
 
15
- context 'pre Rails 5.0.0' do
16
- it 'creates a migration with no version specifier' do
17
- stub_const("ActiveRecord::VERSION::MAJOR", 4)
18
- stub_const("ActiveRecord::VERSION::MINOR", 2)
19
-
20
- run_generator
21
-
22
- assert_migration 'db/migrate/add_owner_to_application.rb' do |migration|
23
- assert migration.include?("ActiveRecord::Migration\n")
24
- end
25
- end
26
- end
27
-
28
- context 'post Rails 5.0.0' do
29
- it 'creates a migration with a version specifier' do
30
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
31
- stub_const("ActiveRecord::VERSION::MINOR", 0)
17
+ it "creates a migration with a version specifier" do
18
+ stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
+ stub_const("ActiveRecord::VERSION::MINOR", 0)
32
20
 
33
- run_generator
21
+ run_generator
34
22
 
35
- assert_migration 'db/migrate/add_owner_to_application.rb' do |migration|
36
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
37
- end
23
+ assert_migration "db/migrate/add_owner_to_application.rb" do |migration|
24
+ assert migration.include?("ActiveRecord::Migration[5.0]\n")
38
25
  end
39
26
  end
40
27
  end
@@ -1,44 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
4
- require 'generators/doorkeeper/confidential_applications_generator'
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/confidential_applications_generator"
5
5
 
6
- describe 'Doorkeeper::ConfidentialApplicationsGenerator' do
6
+ describe "Doorkeeper::ConfidentialApplicationsGenerator" do
7
7
  include GeneratorSpec::TestCase
8
8
 
9
9
  tests Doorkeeper::ConfidentialApplicationsGenerator
10
- destination ::File.expand_path('../tmp/dummy', __FILE__)
10
+ destination ::File.expand_path("../tmp/dummy", __FILE__)
11
11
 
12
- describe 'after running the generator' do
12
+ describe "after running the generator" do
13
13
  before :each do
14
14
  prepare_destination
15
15
  end
16
16
 
17
- context 'pre Rails 5.0.0' do
18
- it 'creates a migration with no version specifier' do
19
- stub_const("ActiveRecord::VERSION::MAJOR", 4)
20
- stub_const("ActiveRecord::VERSION::MINOR", 2)
17
+ it "creates a migration with a version specifier" do
18
+ stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
+ stub_const("ActiveRecord::VERSION::MINOR", 0)
21
20
 
22
- run_generator
21
+ run_generator
23
22
 
24
- assert_migration 'db/migrate/add_confidential_to_applications.rb' do |migration|
25
- assert migration.include?("ActiveRecord::Migration\n")
26
- assert migration.include?(':confidential')
27
- end
28
- end
29
- end
30
-
31
- context 'post Rails 5.0.0' do
32
- it 'creates a migration with a version specifier' do
33
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
34
- stub_const("ActiveRecord::VERSION::MINOR", 0)
35
-
36
- run_generator
37
-
38
- assert_migration 'db/migrate/add_confidential_to_applications.rb' do |migration|
39
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
40
- assert migration.include?(':confidential')
41
- end
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")
42
26
  end
43
27
  end
44
28
  end
@@ -1,34 +1,36 @@
1
- require 'spec_helper'
2
- require 'generators/doorkeeper/install_generator'
1
+ # frozen_string_literal: true
3
2
 
4
- describe 'Doorkeeper::InstallGenerator' do
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/install_generator"
5
+
6
+ describe "Doorkeeper::InstallGenerator" do
5
7
  include GeneratorSpec::TestCase
6
8
 
7
9
  tests Doorkeeper::InstallGenerator
8
- destination ::File.expand_path('../tmp/dummy', __FILE__)
10
+ destination ::File.expand_path("../tmp/dummy", __FILE__)
9
11
 
10
- describe 'after running the generator' do
12
+ describe "after running the generator" do
11
13
  before :each do
12
14
  prepare_destination
13
- FileUtils.mkdir(::File.expand_path('config', Pathname(destination_root)))
14
- FileUtils.mkdir(::File.expand_path('db', Pathname(destination_root)))
15
+ FileUtils.mkdir(::File.expand_path("config", Pathname(destination_root)))
16
+ FileUtils.mkdir(::File.expand_path("db", Pathname(destination_root)))
15
17
  FileUtils.copy_file(
16
- ::File.expand_path('../templates/routes.rb', __FILE__),
17
- ::File.expand_path('config/routes.rb', Pathname.new(destination_root))
18
+ ::File.expand_path("../templates/routes.rb", __FILE__),
19
+ ::File.expand_path("config/routes.rb", Pathname.new(destination_root))
18
20
  )
19
21
  run_generator
20
22
  end
21
23
 
22
- it 'creates an initializer file' do
23
- assert_file 'config/initializers/doorkeeper.rb'
24
+ it "creates an initializer file" do
25
+ assert_file "config/initializers/doorkeeper.rb"
24
26
  end
25
27
 
26
- it 'copies the locale file' do
27
- assert_file 'config/locales/doorkeeper.en.yml'
28
+ it "copies the locale file" do
29
+ assert_file "config/locales/doorkeeper.en.yml"
28
30
  end
29
31
 
30
- it 'adds sample route' do
31
- assert_file 'config/routes.rb', /use_doorkeeper/
32
+ it "adds sample route" do
33
+ assert_file "config/routes.rb", /use_doorkeeper/
32
34
  end
33
35
  end
34
36
  end
@@ -1,40 +1,27 @@
1
- require 'spec_helper'
2
- require 'generators/doorkeeper/migration_generator'
1
+ # frozen_string_literal: true
3
2
 
4
- describe 'Doorkeeper::MigrationGenerator' do
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/migration_generator"
5
+
6
+ describe "Doorkeeper::MigrationGenerator" do
5
7
  include GeneratorSpec::TestCase
6
8
 
7
9
  tests Doorkeeper::MigrationGenerator
8
- destination ::File.expand_path('../tmp/dummy', __FILE__)
10
+ destination ::File.expand_path("../tmp/dummy", __FILE__)
9
11
 
10
- describe 'after running the generator' do
12
+ describe "after running the generator" do
11
13
  before :each do
12
14
  prepare_destination
13
15
  end
14
16
 
15
- context 'pre Rails 5.0.0' do
16
- it 'creates a migration with no version specifier' do
17
- stub_const('ActiveRecord::VERSION::MAJOR', 4)
18
- stub_const('ActiveRecord::VERSION::MINOR', 2)
19
-
20
- run_generator
21
-
22
- assert_migration 'db/migrate/create_doorkeeper_tables.rb' do |migration|
23
- assert migration.include?("ActiveRecord::Migration\n")
24
- end
25
- end
26
- end
27
-
28
- context 'post Rails 5.0.0' do
29
- it 'creates a migration with a version specifier' do
30
- stub_const('ActiveRecord::VERSION::MAJOR', 5)
31
- stub_const('ActiveRecord::VERSION::MINOR', 0)
17
+ it "creates a migration with a version specifier" do
18
+ stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
+ stub_const("ActiveRecord::VERSION::MINOR", 0)
32
20
 
33
- run_generator
21
+ run_generator
34
22
 
35
- assert_migration 'db/migrate/create_doorkeeper_tables.rb' do |migration|
36
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
37
- end
23
+ assert_migration "db/migrate/create_doorkeeper_tables.rb" do |migration|
24
+ assert migration.include?("ActiveRecord::Migration[5.0]\n")
38
25
  end
39
26
  end
40
27
  end
@@ -1,42 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
4
- require 'generators/doorkeeper/pkce_generator'
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/pkce_generator"
5
5
 
6
- describe 'Doorkeeper::PkceGenerator' do
6
+ describe "Doorkeeper::PkceGenerator" do
7
7
  include GeneratorSpec::TestCase
8
8
 
9
9
  tests Doorkeeper::PkceGenerator
10
- destination ::File.expand_path('../tmp/dummy', __FILE__)
10
+ destination ::File.expand_path("../tmp/dummy", __FILE__)
11
11
 
12
- describe 'after running the generator' do
12
+ describe "after running the generator" do
13
13
  before :each do
14
14
  prepare_destination
15
15
  end
16
16
 
17
- context 'pre Rails 5.0.0' do
18
- it 'creates a migration with no version specifier' do
19
- stub_const("ActiveRecord::VERSION::MAJOR", 4)
20
- stub_const("ActiveRecord::VERSION::MINOR", 2)
17
+ it "creates a migration with a version specifier" do
18
+ stub_const("ActiveRecord::VERSION::MAJOR", 5)
19
+ stub_const("ActiveRecord::VERSION::MINOR", 0)
21
20
 
22
- run_generator
21
+ run_generator
23
22
 
24
- assert_migration 'db/migrate/enable_pkce.rb' do |migration|
25
- assert migration.include?("ActiveRecord::Migration\n")
26
- end
27
- end
28
- end
29
-
30
- context 'post Rails 5.0.0' do
31
- it 'creates a migration with a version specifier' do
32
- stub_const("ActiveRecord::VERSION::MAJOR", 5)
33
- stub_const("ActiveRecord::VERSION::MINOR", 0)
34
-
35
- run_generator
36
-
37
- assert_migration 'db/migrate/enable_pkce.rb' do |migration|
38
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
39
- end
23
+ assert_migration "db/migrate/enable_pkce.rb" do |migration|
24
+ assert migration.include?("ActiveRecord::Migration[5.0]\n")
40
25
  end
41
26
  end
42
27
  end
@@ -1,13 +1,15 @@
1
- require 'spec_helper'
2
- require 'generators/doorkeeper/previous_refresh_token_generator'
1
+ # frozen_string_literal: true
3
2
 
4
- describe 'Doorkeeper::PreviousRefreshTokenGenerator' do
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/previous_refresh_token_generator"
5
+
6
+ describe "Doorkeeper::PreviousRefreshTokenGenerator" do
5
7
  include GeneratorSpec::TestCase
6
8
 
7
9
  tests Doorkeeper::PreviousRefreshTokenGenerator
8
- destination ::File.expand_path('../tmp/dummy', __FILE__)
10
+ destination ::File.expand_path("../tmp/dummy", __FILE__)
9
11
 
10
- describe 'after running the generator' do
12
+ describe "after running the generator" do
11
13
  before :each do
12
14
  prepare_destination
13
15
 
@@ -16,41 +18,26 @@ describe 'Doorkeeper::PreviousRefreshTokenGenerator' do
16
18
  )
17
19
  end
18
20
 
19
- context 'pre Rails 5.0.0' do
20
- it 'creates a migration with no version specifier' do
21
- stub_const('ActiveRecord::VERSION::MAJOR', 4)
22
- stub_const('ActiveRecord::VERSION::MINOR', 2)
23
-
24
- run_generator
25
-
26
- assert_migration 'db/migrate/add_previous_refresh_token_to_access_tokens.rb' do |migration|
27
- assert migration.include?("ActiveRecord::Migration\n")
28
- end
29
- end
30
- end
31
-
32
- context 'post Rails 5.0.0' do
33
- it 'creates a migration with a version specifier' do
34
- stub_const('ActiveRecord::VERSION::MAJOR', 5)
35
- stub_const('ActiveRecord::VERSION::MINOR', 0)
21
+ it "creates a migration with a version specifier" do
22
+ stub_const("ActiveRecord::VERSION::MAJOR", 5)
23
+ stub_const("ActiveRecord::VERSION::MINOR", 0)
36
24
 
37
- run_generator
25
+ run_generator
38
26
 
39
- assert_migration 'db/migrate/add_previous_refresh_token_to_access_tokens.rb' do |migration|
40
- assert migration.include?("ActiveRecord::Migration[5.0]\n")
41
- end
27
+ assert_migration "db/migrate/add_previous_refresh_token_to_access_tokens.rb" do |migration|
28
+ assert migration.include?("ActiveRecord::Migration[5.0]\n")
42
29
  end
43
30
  end
44
31
 
45
- context 'already exist' do
46
- it 'does not create a migration' do
32
+ context "already exist" do
33
+ it "does not create a migration" do
47
34
  allow_any_instance_of(Doorkeeper::PreviousRefreshTokenGenerator).to(
48
35
  receive(:no_previous_refresh_token_column?).and_call_original
49
36
  )
50
37
 
51
38
  run_generator
52
39
 
53
- assert_no_migration 'db/migrate/add_previous_refresh_token_to_access_tokens.rb'
40
+ assert_no_migration "db/migrate/add_previous_refresh_token_to_access_tokens.rb"
54
41
  end
55
42
  end
56
43
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.application.routes.draw do
2
4
  end
@@ -1,27 +1,29 @@
1
- require 'spec_helper'
2
- require 'generators/doorkeeper/views_generator'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+ require "generators/doorkeeper/views_generator"
3
5
 
4
6
  describe Doorkeeper::Generators::ViewsGenerator do
5
7
  include GeneratorSpec::TestCase
6
8
 
7
9
  tests Doorkeeper::Generators::ViewsGenerator
8
- destination File.expand_path('tmp/dummy', __dir__)
10
+ destination File.expand_path("tmp/dummy", __dir__)
9
11
 
10
12
  before :each do
11
13
  prepare_destination
12
14
  end
13
15
 
14
- it 'create all views' do
16
+ it "create all views" do
15
17
  run_generator
16
- assert_file 'app/views/doorkeeper/applications/_form.html.erb'
17
- assert_file 'app/views/doorkeeper/applications/edit.html.erb'
18
- assert_file 'app/views/doorkeeper/applications/index.html.erb'
19
- assert_file 'app/views/doorkeeper/applications/new.html.erb'
20
- assert_file 'app/views/doorkeeper/applications/show.html.erb'
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"
21
23
 
22
- assert_file 'app/views/doorkeeper/authorizations/error.html.erb'
23
- assert_file 'app/views/doorkeeper/authorizations/new.html.erb'
24
+ assert_file "app/views/doorkeeper/authorizations/error.html.erb"
25
+ assert_file "app/views/doorkeeper/authorizations/new.html.erb"
24
26
 
25
- assert_file 'app/views/doorkeeper/authorized_applications/index.html.erb'
27
+ assert_file "app/views/doorkeeper/authorized_applications/index.html.erb"
26
28
  end
27
29
  end