doorkeeper 5.3.3 → 5.4.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +82 -4
- data/README.md +6 -4
- data/app/controllers/doorkeeper/applications_controller.rb +4 -4
- data/app/controllers/doorkeeper/authorizations_controller.rb +31 -12
- data/app/controllers/doorkeeper/authorized_applications_controller.rb +2 -2
- data/app/controllers/doorkeeper/tokens_controller.rb +57 -20
- data/app/views/doorkeeper/applications/_form.html.erb +1 -1
- data/app/views/doorkeeper/applications/show.html.erb +19 -2
- data/config/locales/en.yml +3 -1
- data/lib/doorkeeper/config/abstract_builder.rb +28 -0
- data/lib/doorkeeper/config/option.rb +28 -14
- data/lib/doorkeeper/config.rb +64 -35
- data/lib/doorkeeper/engine.rb +1 -1
- data/lib/doorkeeper/grape/helpers.rb +1 -1
- data/lib/doorkeeper/helpers/controller.rb +4 -4
- data/lib/doorkeeper/models/access_grant_mixin.rb +20 -16
- data/lib/doorkeeper/models/access_token_mixin.rb +108 -45
- data/lib/doorkeeper/models/application_mixin.rb +5 -4
- data/lib/doorkeeper/models/concerns/resource_ownerable.rb +47 -0
- data/lib/doorkeeper/models/concerns/revocable.rb +1 -1
- data/lib/doorkeeper/models/concerns/scopes.rb +5 -1
- data/lib/doorkeeper/models/concerns/secret_storable.rb +1 -3
- data/lib/doorkeeper/oauth/authorization/code.rb +15 -6
- data/lib/doorkeeper/oauth/authorization/context.rb +2 -2
- data/lib/doorkeeper/oauth/authorization/token.rb +8 -12
- data/lib/doorkeeper/oauth/authorization/uri_builder.rb +4 -4
- data/lib/doorkeeper/oauth/authorization_code_request.rb +18 -8
- data/lib/doorkeeper/oauth/base_request.rb +11 -19
- data/lib/doorkeeper/oauth/client/credentials.rb +2 -4
- data/lib/doorkeeper/oauth/client.rb +1 -1
- data/lib/doorkeeper/oauth/client_credentials/creator.rb +26 -8
- data/lib/doorkeeper/oauth/client_credentials/issuer.rb +3 -2
- data/lib/doorkeeper/oauth/client_credentials/validator.rb +4 -2
- data/lib/doorkeeper/oauth/client_credentials_request.rb +8 -7
- data/lib/doorkeeper/oauth/code_request.rb +3 -3
- data/lib/doorkeeper/oauth/code_response.rb +6 -2
- data/lib/doorkeeper/oauth/error_response.rb +2 -4
- data/lib/doorkeeper/oauth/helpers/scope_checker.rb +1 -5
- data/lib/doorkeeper/oauth/hooks/context.rb +21 -0
- data/lib/doorkeeper/oauth/invalid_token_response.rb +2 -2
- data/lib/doorkeeper/oauth/password_access_token_request.rb +4 -6
- data/lib/doorkeeper/oauth/pre_authorization.rb +36 -30
- data/lib/doorkeeper/oauth/refresh_token_request.rb +18 -22
- data/lib/doorkeeper/oauth/token.rb +5 -6
- data/lib/doorkeeper/oauth/token_introspection.rb +4 -8
- data/lib/doorkeeper/oauth/token_request.rb +3 -3
- data/lib/doorkeeper/oauth/token_response.rb +1 -1
- data/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +8 -3
- data/lib/doorkeeper/orm/active_record/mixins/access_token.rb +7 -3
- data/lib/doorkeeper/orm/active_record.rb +10 -2
- data/lib/doorkeeper/rails/routes/abstract_router.rb +35 -0
- data/lib/doorkeeper/rails/routes/mapper.rb +2 -2
- data/lib/doorkeeper/rails/routes/registry.rb +45 -0
- data/lib/doorkeeper/rails/routes.rb +13 -17
- data/lib/doorkeeper/request/refresh_token.rb +2 -1
- data/lib/doorkeeper/request/strategy.rb +2 -2
- data/lib/doorkeeper/server.rb +4 -4
- data/lib/doorkeeper/stale_records_cleaner.rb +4 -4
- data/lib/doorkeeper/version.rb +2 -2
- data/lib/doorkeeper.rb +106 -79
- data/lib/generators/doorkeeper/confidential_applications_generator.rb +1 -1
- data/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb +39 -0
- data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb +2 -0
- data/lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb +2 -0
- data/lib/generators/doorkeeper/templates/enable_pkce_migration.rb.erb +2 -0
- data/lib/generators/doorkeeper/templates/enable_polymorphic_resource_owner_migration.rb.erb +17 -0
- data/lib/generators/doorkeeper/templates/initializer.rb +39 -3
- data/lib/generators/doorkeeper/templates/migration.rb.erb +14 -5
- metadata +13 -296
- data/Appraisals +0 -40
- data/CODE_OF_CONDUCT.md +0 -46
- data/CONTRIBUTING.md +0 -49
- data/Dangerfile +0 -67
- data/Dockerfile +0 -29
- data/Gemfile +0 -25
- data/NEWS.md +0 -1
- data/RELEASING.md +0 -11
- data/Rakefile +0 -28
- data/SECURITY.md +0 -15
- data/UPGRADE.md +0 -2
- data/bin/console +0 -16
- data/doorkeeper.gemspec +0 -42
- data/gemfiles/rails_5_0.gemfile +0 -18
- data/gemfiles/rails_5_1.gemfile +0 -18
- data/gemfiles/rails_5_2.gemfile +0 -18
- data/gemfiles/rails_6_0.gemfile +0 -18
- data/gemfiles/rails_master.gemfile +0 -18
- data/spec/controllers/application_metal_controller_spec.rb +0 -64
- data/spec/controllers/applications_controller_spec.rb +0 -274
- data/spec/controllers/authorizations_controller_spec.rb +0 -608
- data/spec/controllers/protected_resources_controller_spec.rb +0 -361
- data/spec/controllers/token_info_controller_spec.rb +0 -50
- data/spec/controllers/tokens_controller_spec.rb +0 -498
- data/spec/dummy/Rakefile +0 -9
- data/spec/dummy/app/assets/config/manifest.js +0 -2
- data/spec/dummy/app/controllers/application_controller.rb +0 -5
- data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -9
- data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -14
- data/spec/dummy/app/controllers/home_controller.rb +0 -18
- data/spec/dummy/app/controllers/metal_controller.rb +0 -13
- data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -13
- data/spec/dummy/app/helpers/application_helper.rb +0 -7
- data/spec/dummy/app/models/user.rb +0 -7
- data/spec/dummy/app/views/home/index.html.erb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy/config/application.rb +0 -49
- data/spec/dummy/config/boot.rb +0 -7
- data/spec/dummy/config/database.yml +0 -15
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -31
- data/spec/dummy/config/environments/production.rb +0 -64
- data/spec/dummy/config/environments/test.rb +0 -45
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -9
- data/spec/dummy/config/initializers/doorkeeper.rb +0 -166
- data/spec/dummy/config/initializers/secret_token.rb +0 -10
- data/spec/dummy/config/initializers/session_store.rb +0 -10
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -16
- data/spec/dummy/config/locales/doorkeeper.en.yml +0 -5
- data/spec/dummy/config/routes.rb +0 -13
- data/spec/dummy/config.ru +0 -6
- data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -11
- data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -7
- data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -69
- data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -9
- data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -13
- data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +0 -8
- data/spec/dummy/db/migrate/20180210183654_add_confidential_to_applications.rb +0 -13
- data/spec/dummy/db/schema.rb +0 -68
- data/spec/dummy/public/404.html +0 -26
- data/spec/dummy/public/422.html +0 -26
- data/spec/dummy/public/500.html +0 -26
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +0 -9
- data/spec/factories.rb +0 -30
- data/spec/generators/application_owner_generator_spec.rb +0 -28
- data/spec/generators/confidential_applications_generator_spec.rb +0 -29
- data/spec/generators/install_generator_spec.rb +0 -36
- data/spec/generators/migration_generator_spec.rb +0 -28
- data/spec/generators/pkce_generator_spec.rb +0 -28
- data/spec/generators/previous_refresh_token_generator_spec.rb +0 -44
- data/spec/generators/templates/routes.rb +0 -4
- data/spec/generators/views_generator_spec.rb +0 -29
- data/spec/grape/grape_integration_spec.rb +0 -137
- data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -26
- data/spec/lib/config_spec.rb +0 -809
- data/spec/lib/doorkeeper_spec.rb +0 -27
- data/spec/lib/models/expirable_spec.rb +0 -61
- data/spec/lib/models/reusable_spec.rb +0 -40
- data/spec/lib/models/revocable_spec.rb +0 -59
- data/spec/lib/models/scopes_spec.rb +0 -53
- data/spec/lib/models/secret_storable_spec.rb +0 -135
- data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -39
- data/spec/lib/oauth/authorization_code_request_spec.rb +0 -170
- data/spec/lib/oauth/base_request_spec.rb +0 -224
- data/spec/lib/oauth/base_response_spec.rb +0 -45
- data/spec/lib/oauth/client/credentials_spec.rb +0 -90
- data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -134
- data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -112
- data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -59
- data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -27
- data/spec/lib/oauth/client_credentials_request_spec.rb +0 -107
- data/spec/lib/oauth/client_spec.rb +0 -38
- data/spec/lib/oauth/code_request_spec.rb +0 -46
- data/spec/lib/oauth/code_response_spec.rb +0 -32
- data/spec/lib/oauth/error_response_spec.rb +0 -64
- data/spec/lib/oauth/error_spec.rb +0 -21
- data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -20
- data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -110
- data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -21
- data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -262
- data/spec/lib/oauth/invalid_request_response_spec.rb +0 -73
- data/spec/lib/oauth/invalid_token_response_spec.rb +0 -53
- data/spec/lib/oauth/password_access_token_request_spec.rb +0 -190
- data/spec/lib/oauth/pre_authorization_spec.rb +0 -223
- data/spec/lib/oauth/refresh_token_request_spec.rb +0 -177
- data/spec/lib/oauth/scopes_spec.rb +0 -146
- data/spec/lib/oauth/token_request_spec.rb +0 -157
- data/spec/lib/oauth/token_response_spec.rb +0 -84
- data/spec/lib/oauth/token_spec.rb +0 -156
- data/spec/lib/request/strategy_spec.rb +0 -54
- data/spec/lib/secret_storing/base_spec.rb +0 -60
- data/spec/lib/secret_storing/bcrypt_spec.rb +0 -49
- data/spec/lib/secret_storing/plain_spec.rb +0 -44
- data/spec/lib/secret_storing/sha256_hash_spec.rb +0 -48
- data/spec/lib/server_spec.rb +0 -49
- data/spec/lib/stale_records_cleaner_spec.rb +0 -89
- data/spec/models/doorkeeper/access_grant_spec.rb +0 -161
- data/spec/models/doorkeeper/access_token_spec.rb +0 -622
- data/spec/models/doorkeeper/application_spec.rb +0 -482
- data/spec/requests/applications/applications_request_spec.rb +0 -259
- data/spec/requests/applications/authorized_applications_spec.rb +0 -32
- data/spec/requests/endpoints/authorization_spec.rb +0 -91
- data/spec/requests/endpoints/token_spec.rb +0 -75
- data/spec/requests/flows/authorization_code_errors_spec.rb +0 -79
- data/spec/requests/flows/authorization_code_spec.rb +0 -525
- data/spec/requests/flows/client_credentials_spec.rb +0 -166
- data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -46
- data/spec/requests/flows/implicit_grant_spec.rb +0 -91
- data/spec/requests/flows/password_spec.rb +0 -316
- data/spec/requests/flows/refresh_token_spec.rb +0 -233
- data/spec/requests/flows/revoke_token_spec.rb +0 -157
- data/spec/requests/flows/skip_authorization_spec.rb +0 -66
- data/spec/requests/protected_resources/metal_spec.rb +0 -16
- data/spec/requests/protected_resources/private_api_spec.rb +0 -83
- data/spec/routing/custom_controller_routes_spec.rb +0 -133
- data/spec/routing/default_routes_spec.rb +0 -41
- data/spec/routing/scoped_routes_spec.rb +0 -47
- data/spec/spec_helper.rb +0 -54
- data/spec/spec_helper_integration.rb +0 -4
- data/spec/support/dependencies/factory_bot.rb +0 -4
- data/spec/support/doorkeeper_rspec.rb +0 -22
- data/spec/support/helpers/access_token_request_helper.rb +0 -13
- data/spec/support/helpers/authorization_request_helper.rb +0 -43
- data/spec/support/helpers/config_helper.rb +0 -11
- data/spec/support/helpers/model_helper.rb +0 -78
- data/spec/support/helpers/request_spec_helper.rb +0 -110
- data/spec/support/helpers/url_helper.rb +0 -62
- data/spec/support/orm/active_record.rb +0 -5
- data/spec/support/shared/controllers_shared_context.rb +0 -133
- data/spec/support/shared/hashing_shared_context.rb +0 -36
- data/spec/support/shared/models_shared_examples.rb +0 -54
- data/spec/validators/redirect_uri_validator_spec.rb +0 -183
- data/spec/version/version_spec.rb +0 -17
data/spec/dummy/public/422.html
DELETED
@@ -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>
|
data/spec/dummy/public/500.html
DELETED
@@ -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
|
data/spec/dummy/script/rails
DELETED
@@ -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,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
|