doorkeeper 4.2.6 → 4.3.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.

Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +19 -0
  3. data/.github/PULL_REQUEST_TEMPLATE.md +17 -0
  4. data/.gitignore +1 -1
  5. data/.hound.yml +2 -13
  6. data/.rubocop.yml +13 -0
  7. data/.travis.yml +13 -5
  8. data/Appraisals +6 -2
  9. data/CODE_OF_CONDUCT.md +46 -0
  10. data/Gemfile +1 -1
  11. data/NEWS.md +24 -0
  12. data/README.md +39 -9
  13. data/SECURITY.md +13 -0
  14. data/app/controllers/doorkeeper/application_controller.rb +1 -5
  15. data/app/controllers/doorkeeper/applications_controller.rb +14 -1
  16. data/app/controllers/doorkeeper/tokens_controller.rb +13 -1
  17. data/app/helpers/doorkeeper/dashboard_helper.rb +4 -2
  18. data/app/validators/redirect_uri_validator.rb +12 -2
  19. data/app/views/doorkeeper/applications/_form.html.erb +1 -1
  20. data/app/views/doorkeeper/authorized_applications/index.html.erb +0 -1
  21. data/config/locales/en.yml +3 -5
  22. data/doorkeeper.gemspec +4 -3
  23. data/gemfiles/rails_4_2.gemfile +6 -4
  24. data/gemfiles/rails_5_0.gemfile +4 -4
  25. data/gemfiles/rails_5_1.gemfile +6 -7
  26. data/gemfiles/rails_5_2.gemfile +12 -0
  27. data/gemfiles/rails_master.gemfile +14 -0
  28. data/lib/doorkeeper.rb +1 -0
  29. data/lib/doorkeeper/config.rb +55 -55
  30. data/lib/doorkeeper/engine.rb +3 -3
  31. data/lib/doorkeeper/grape/helpers.rb +13 -8
  32. data/lib/doorkeeper/helpers/controller.rb +8 -4
  33. data/lib/doorkeeper/models/access_token_mixin.rb +14 -7
  34. data/lib/doorkeeper/models/application_mixin.rb +11 -6
  35. data/lib/doorkeeper/models/concerns/expirable.rb +7 -5
  36. data/lib/doorkeeper/oauth/authorization/token.rb +22 -18
  37. data/lib/doorkeeper/oauth/authorization_code_request.rb +6 -1
  38. data/lib/doorkeeper/oauth/base_request.rb +5 -5
  39. data/lib/doorkeeper/oauth/client.rb +2 -2
  40. data/lib/doorkeeper/oauth/client/credentials.rb +2 -2
  41. data/lib/doorkeeper/oauth/error.rb +2 -2
  42. data/lib/doorkeeper/oauth/error_response.rb +1 -2
  43. data/lib/doorkeeper/oauth/forbidden_token_response.rb +1 -1
  44. data/lib/doorkeeper/oauth/invalid_token_response.rb +2 -3
  45. data/lib/doorkeeper/oauth/password_access_token_request.rb +1 -0
  46. data/lib/doorkeeper/oauth/refresh_token_request.rb +1 -0
  47. data/lib/doorkeeper/oauth/scopes.rb +18 -8
  48. data/lib/doorkeeper/oauth/token.rb +1 -1
  49. data/lib/doorkeeper/oauth/token_introspection.rb +128 -0
  50. data/lib/doorkeeper/orm/active_record.rb +20 -8
  51. data/lib/doorkeeper/orm/active_record/access_grant.rb +1 -1
  52. data/lib/doorkeeper/orm/active_record/access_token.rb +1 -23
  53. data/lib/doorkeeper/orm/active_record/application.rb +1 -1
  54. data/lib/doorkeeper/orm/active_record/base_record.rb +11 -0
  55. data/lib/doorkeeper/rails/helpers.rb +5 -6
  56. data/lib/doorkeeper/rails/routes.rb +9 -7
  57. data/lib/doorkeeper/request.rb +7 -1
  58. data/lib/doorkeeper/validations.rb +3 -2
  59. data/lib/doorkeeper/version.rb +13 -1
  60. data/lib/generators/doorkeeper/application_owner_generator.rb +11 -2
  61. data/lib/generators/doorkeeper/migration_generator.rb +13 -1
  62. data/lib/generators/doorkeeper/previous_refresh_token_generator.rb +7 -1
  63. data/lib/generators/doorkeeper/templates/{add_owner_to_application_migration.rb → add_owner_to_application_migration.rb.erb} +1 -1
  64. data/lib/generators/doorkeeper/templates/{add_previous_refresh_token_to_access_tokens.rb → add_previous_refresh_token_to_access_tokens.rb.erb} +1 -1
  65. data/lib/generators/doorkeeper/templates/initializer.rb +19 -3
  66. data/lib/generators/doorkeeper/templates/{migration.rb → migration.rb.erb} +1 -1
  67. data/spec/controllers/applications_controller_spec.rb +15 -4
  68. data/spec/controllers/authorizations_controller_spec.rb +5 -5
  69. data/spec/controllers/protected_resources_controller_spec.rb +28 -19
  70. data/spec/controllers/token_info_controller_spec.rb +17 -13
  71. data/spec/controllers/tokens_controller_spec.rb +138 -4
  72. data/spec/dummy/config/initializers/doorkeeper.rb +1 -1
  73. data/spec/dummy/config/initializers/{active_record_belongs_to_required_by_default.rb → new_framework_defaults.rb} +1 -1
  74. data/spec/dummy/config/initializers/secret_token.rb +0 -1
  75. data/spec/factories.rb +1 -1
  76. data/spec/generators/application_owner_generator_spec.rb +24 -5
  77. data/spec/generators/migration_generator_spec.rb +24 -3
  78. data/spec/generators/previous_refresh_token_generator_spec.rb +57 -0
  79. data/spec/grape/grape_integration_spec.rb +135 -0
  80. data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +1 -1
  81. data/spec/lib/config_spec.rb +115 -12
  82. data/spec/lib/models/revocable_spec.rb +2 -2
  83. data/spec/lib/oauth/authorization_code_request_spec.rb +39 -11
  84. data/spec/lib/oauth/base_request_spec.rb +2 -7
  85. data/spec/lib/oauth/client_credentials/creator_spec.rb +1 -1
  86. data/spec/lib/oauth/client_credentials_integration_spec.rb +1 -1
  87. data/spec/lib/oauth/client_credentials_request_spec.rb +1 -0
  88. data/spec/lib/oauth/code_request_spec.rb +1 -3
  89. data/spec/lib/oauth/helpers/uri_checker_spec.rb +5 -0
  90. data/spec/lib/oauth/invalid_token_response_spec.rb +1 -1
  91. data/spec/lib/oauth/password_access_token_request_spec.rb +9 -3
  92. data/spec/lib/oauth/refresh_token_request_spec.rb +19 -7
  93. data/spec/lib/oauth/scopes_spec.rb +28 -1
  94. data/spec/lib/oauth/token_request_spec.rb +6 -8
  95. data/spec/lib/server_spec.rb +10 -0
  96. data/spec/models/doorkeeper/access_grant_spec.rb +1 -1
  97. data/spec/models/doorkeeper/access_token_spec.rb +72 -48
  98. data/spec/models/doorkeeper/application_spec.rb +51 -18
  99. data/spec/requests/applications/applications_request_spec.rb +5 -5
  100. data/spec/requests/endpoints/token_spec.rb +8 -1
  101. data/spec/requests/flows/authorization_code_spec.rb +1 -0
  102. data/spec/requests/flows/client_credentials_spec.rb +1 -1
  103. data/spec/requests/flows/implicit_grant_errors_spec.rb +2 -2
  104. data/spec/requests/flows/refresh_token_spec.rb +4 -4
  105. data/spec/requests/flows/revoke_token_spec.rb +15 -15
  106. data/spec/requests/protected_resources/metal_spec.rb +1 -1
  107. data/spec/requests/protected_resources/private_api_spec.rb +1 -1
  108. data/spec/routing/custom_controller_routes_spec.rb +4 -0
  109. data/spec/routing/default_routes_spec.rb +5 -1
  110. data/spec/spec_helper_integration.rb +15 -4
  111. data/spec/support/dependencies/factory_girl.rb +2 -2
  112. data/spec/support/helpers/access_token_request_helper.rb +1 -1
  113. data/spec/support/helpers/model_helper.rb +9 -4
  114. data/spec/support/helpers/request_spec_helper.rb +7 -3
  115. data/spec/support/helpers/url_helper.rb +8 -8
  116. data/spec/support/shared/controllers_shared_context.rb +2 -6
  117. data/spec/support/shared/models_shared_examples.rb +4 -4
  118. data/spec/validators/redirect_uri_validator_spec.rb +51 -6
  119. data/spec/version/version_spec.rb +15 -0
  120. metadata +42 -13
@@ -1,2 +1,2 @@
1
- require 'factory_girl'
2
- FactoryGirl.find_definitions
1
+ require 'factory_bot'
2
+ FactoryBot.find_definitions
@@ -4,7 +4,7 @@ module AccessTokenRequestHelper
4
4
  application: client,
5
5
  resource_owner_id: resource_owner.id
6
6
  }.merge(access_token_attributes)
7
- FactoryGirl.create(:access_token, attributes)
7
+ FactoryBot.create(:access_token, attributes)
8
8
  end
9
9
  end
10
10
 
@@ -1,6 +1,6 @@
1
1
  module ModelHelper
2
2
  def client_exists(client_attributes = {})
3
- @client = FactoryGirl.create(:application, client_attributes)
3
+ @client = FactoryBot.create(:application, client_attributes)
4
4
  end
5
5
 
6
6
  def create_resource_owner
@@ -8,7 +8,7 @@ module ModelHelper
8
8
  end
9
9
 
10
10
  def authorization_code_exists(options = {})
11
- @authorization = FactoryGirl.create(:access_grant, options)
11
+ @authorization = FactoryBot.create(:access_grant, options)
12
12
  end
13
13
 
14
14
  def access_grant_should_exist_for(client, resource_owner)
@@ -55,9 +55,14 @@ module ModelHelper
55
55
  error_classes = [Sequel::UniqueConstraintViolation, Sequel::ValidationFailed]
56
56
  proc { |error| expect(error.class).to be_in(error_classes) }
57
57
  when :mongo_mapper
58
- MongoMapper::DocumentNotValid
58
+ error_classes = [MongoMapper::DocumentNotValid, Mongo::OperationFailure]
59
+ proc { |error| expect(error.class).to be_in(error_classes) }
59
60
  when /mongoid/
60
- Mongoid::Errors::Validations
61
+ error_classes = [Mongoid::Errors::Validations]
62
+ error_classes << Moped::Errors::OperationFailure if defined?(::Moped) # Mongoid 4
63
+ error_classes << Mongo::Error::OperationFailure if defined?(::Mongo) # Mongoid 5
64
+
65
+ proc { |error| expect(error.class).to be_in(error_classes) }
61
66
  else
62
67
  raise "'#{DOORKEEPER_ORM}' ORM is not supported!"
63
68
  end
@@ -31,6 +31,10 @@ module RequestSpecHelper
31
31
  respond_to?(:response) ? response : page.driver.response
32
32
  end
33
33
 
34
+ def json_response
35
+ JSON.parse(request_response.body)
36
+ end
37
+
34
38
  def should_have_header(header, value)
35
39
  expect(headers[header]).to eq(value)
36
40
  end
@@ -48,15 +52,15 @@ module RequestSpecHelper
48
52
  end
49
53
 
50
54
  def should_have_json(key, value)
51
- expect(JSON.parse(request_response.body).fetch(key)).to eq(value)
55
+ expect(json_response.fetch(key)).to eq(value)
52
56
  end
53
57
 
54
58
  def should_have_json_within(key, value, range)
55
- expect(JSON.parse(request_response.body).fetch(key)).to be_within(range).of(value)
59
+ expect(json_response.fetch(key)).to be_within(range).of(value)
56
60
  end
57
61
 
58
62
  def should_not_have_json(key)
59
- expect(JSON.parse(request_response.body)).not_to have_key(key)
63
+ expect(json_response).not_to have_key(key)
60
64
  end
61
65
 
62
66
  def sign_in
@@ -2,10 +2,10 @@ module UrlHelper
2
2
  def token_endpoint_url(options = {})
3
3
  parameters = {
4
4
  code: options[:code],
5
- client_id: options[:client_id] || (options[:client] ? options[:client].uid : nil),
5
+ client_id: options[:client_id] || (options[:client] ? options[:client].uid : nil),
6
6
  client_secret: options[:client_secret] || (options[:client] ? options[:client].secret : nil),
7
7
  redirect_uri: options[:redirect_uri] || (options[:client] ? options[:client].redirect_uri : nil),
8
- grant_type: options[:grant_type] || 'authorization_code'
8
+ grant_type: options[:grant_type] || 'authorization_code'
9
9
  }
10
10
  "/oauth/token?#{build_query(parameters)}"
11
11
  end
@@ -13,7 +13,7 @@ module UrlHelper
13
13
  def password_token_endpoint_url(options = {})
14
14
  parameters = {
15
15
  code: options[:code],
16
- client_id: options[:client_id] || (options[:client] ? options[:client].uid : nil),
16
+ client_id: options[:client_id] || (options[:client] ? options[:client].uid : nil),
17
17
  client_secret: options[:client_secret] || (options[:client] ? options[:client].secret : nil),
18
18
  username: options[:resource_owner_username] || (options[:resource_owner] ? options[:resource_owner].name : nil),
19
19
  password: options[:resource_owner_password] || (options[:resource_owner] ? options[:resource_owner].password : nil),
@@ -24,21 +24,21 @@ module UrlHelper
24
24
 
25
25
  def authorization_endpoint_url(options = {})
26
26
  parameters = {
27
- client_id: options[:client_id] || options[:client].uid,
28
- redirect_uri: options[:redirect_uri] || options[:client].redirect_uri,
27
+ client_id: options[:client_id] || options[:client].uid,
28
+ redirect_uri: options[:redirect_uri] || options[:client].redirect_uri,
29
29
  response_type: options[:response_type] || 'code',
30
30
  scope: options[:scope],
31
31
  state: options[:state]
32
- }.reject { |k, v| v.blank? }
32
+ }.reject { |_, v| v.blank? }
33
33
  "/oauth/authorize?#{build_query(parameters)}"
34
34
  end
35
35
 
36
36
  def refresh_token_endpoint_url(options = {})
37
37
  parameters = {
38
38
  refresh_token: options[:refresh_token],
39
- client_id: options[:client_id] || options[:client].uid,
39
+ client_id: options[:client_id] || options[:client].uid,
40
40
  client_secret: options[:client_secret] || options[:client].secret,
41
- grant_type: options[:grant_type] || 'refresh_token'
41
+ grant_type: options[:grant_type] || 'refresh_token'
42
42
  }
43
43
  "/oauth/token?#{build_query(parameters)}"
44
44
  end
@@ -1,7 +1,5 @@
1
1
  shared_context 'valid token', token: :valid do
2
- let :token_string do
3
- '1A2B3C4D'
4
- end
2
+ let(:token_string) { '1A2B3C4D' }
5
3
 
6
4
  let :token do
7
5
  double(Doorkeeper::AccessToken,
@@ -17,9 +15,7 @@ shared_context 'valid token', token: :valid do
17
15
  end
18
16
 
19
17
  shared_context 'invalid token', token: :invalid do
20
- let :token_string do
21
- '1A2B3C4D'
22
- end
18
+ let(:token_string) { '1A2B3C4D' }
23
19
 
24
20
  let :token do
25
21
  double(Doorkeeper::AccessToken,
@@ -34,15 +34,15 @@ shared_examples 'a unique token' do
34
34
  end
35
35
 
36
36
  it 'is not valid if token exists' do
37
- token1 = FactoryGirl.create factory_name
38
- token2 = FactoryGirl.create factory_name
37
+ token1 = FactoryBot.create factory_name
38
+ token2 = FactoryBot.create factory_name
39
39
  token2.token = token1.token
40
40
  expect(token2).not_to be_valid
41
41
  end
42
42
 
43
43
  it 'expects database to throw an error when tokens are the same' do
44
- token1 = FactoryGirl.create factory_name
45
- token2 = FactoryGirl.create factory_name
44
+ token1 = FactoryBot.create factory_name
45
+ token2 = FactoryBot.create factory_name
46
46
  token2.token = token1.token
47
47
  expect do
48
48
  token2.save!(validate: false)
@@ -2,7 +2,7 @@ require 'spec_helper_integration'
2
2
 
3
3
  describe RedirectUriValidator do
4
4
  subject do
5
- FactoryGirl.create(:application)
5
+ FactoryBot.create(:application)
6
6
  end
7
7
 
8
8
  it 'is valid when the uri is a uri' do
@@ -10,6 +10,21 @@ describe RedirectUriValidator do
10
10
  expect(subject).to be_valid
11
11
  end
12
12
 
13
+ # Most mobile and desktop operating systems allow apps to register a custom URL
14
+ # scheme that will launch the app when a URL with that scheme is visited from
15
+ # the system browser.
16
+ #
17
+ # @see https://www.oauth.com/oauth2-servers/redirect-uris/redirect-uris-native-apps/
18
+ it 'is valid when the uri is custom native URI' do
19
+ subject.redirect_uri = 'myapp://callback'
20
+ expect(subject).to be_valid
21
+ end
22
+
23
+ it 'is valid when the uri has a query parameter' do
24
+ subject.redirect_uri = 'https://example.com/abcd?xyz=123'
25
+ expect(subject).to be_valid
26
+ end
27
+
13
28
  it 'accepts native redirect uri' do
14
29
  subject.redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'
15
30
  expect(subject).to be_valid
@@ -39,11 +54,6 @@ describe RedirectUriValidator do
39
54
  expect(subject.errors[:redirect_uri].first).to eq('cannot contain a fragment.')
40
55
  end
41
56
 
42
- it 'is invalid when the uri has a query parameter' do
43
- subject.redirect_uri = 'https://example.com/abcd?xyz=123'
44
- expect(subject).to be_valid
45
- end
46
-
47
57
  context 'force secured uri' do
48
58
  it 'accepts an valid uri' do
49
59
  subject.redirect_uri = 'https://example.com/callback'
@@ -68,6 +78,34 @@ describe RedirectUriValidator do
68
78
  expect(subject).to be_valid
69
79
  end
70
80
 
81
+ it 'accepts a non secured protocol when conditional option defined' do
82
+ Doorkeeper.configure do
83
+ orm DOORKEEPER_ORM
84
+ force_ssl_in_redirect_uri { |uri| uri.host != 'localhost' }
85
+ end
86
+
87
+ application = FactoryBot.build(:application, redirect_uri: 'http://localhost/callback')
88
+ expect(application).to be_valid
89
+
90
+ application = FactoryBot.build(:application, redirect_uri: 'http://localhost2/callback')
91
+ expect(application).not_to be_valid
92
+ end
93
+
94
+ it 'forbids redirect uri if required' do
95
+ subject.redirect_uri = 'javascript://document.cookie'
96
+
97
+ Doorkeeper.configure do
98
+ orm DOORKEEPER_ORM
99
+ forbid_redirect_uri { |uri| uri.scheme == 'javascript' }
100
+ end
101
+
102
+ expect(subject).to be_invalid
103
+ expect(subject.errors[:redirect_uri].first).to eq('is forbidden by the server.')
104
+
105
+ subject.redirect_uri = 'https://localhost/callback'
106
+ expect(subject).to be_valid
107
+ end
108
+
71
109
  it 'invalidates the uri when the uri does not use a secure protocol' do
72
110
  subject.redirect_uri = 'http://example.com/callback'
73
111
  expect(subject).not_to be_valid
@@ -75,4 +113,11 @@ describe RedirectUriValidator do
75
113
  expect(error).to eq('must be an HTTPS/SSL URI.')
76
114
  end
77
115
  end
116
+
117
+ context 'multiple redirect uri' do
118
+ it 'invalidates the second uri when the first uri is native uri' do
119
+ subject.redirect_uri = "urn:ietf:wg:oauth:2.0:oob\nexample.com/callback"
120
+ expect(subject).to be_invalid
121
+ end
122
+ end
78
123
  end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper_integration'
2
+
3
+ describe 'Doorkeeper version' do
4
+ context '#gem_version' do
5
+ it 'returns Gem::Version instance' do
6
+ expect(Doorkeeper.gem_version).to be_an_instance_of(Gem::Version)
7
+ end
8
+ end
9
+
10
+ context 'VERSION' do
11
+ it 'returns gem version string' do
12
+ expect(Doorkeeper::VERSION::STRING).to match(/^\d+\.\d+\.\d+[.\w]?$/)
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.6
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felipe Elias Philipp
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-05-26 00:00:00.000000000 Z
13
+ date: 2018-02-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: railties
@@ -54,34 +54,48 @@ dependencies:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: grape
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: database_cleaner
59
73
  requirement: !ruby/object:Gem::Requirement
60
74
  requirements:
61
75
  - - "~>"
62
76
  - !ruby/object:Gem::Version
63
- version: 1.5.3
77
+ version: '1.6'
64
78
  type: :development
65
79
  prerelease: false
66
80
  version_requirements: !ruby/object:Gem::Requirement
67
81
  requirements:
68
82
  - - "~>"
69
83
  - !ruby/object:Gem::Version
70
- version: 1.5.3
84
+ version: '1.6'
71
85
  - !ruby/object:Gem::Dependency
72
- name: factory_girl
86
+ name: factory_bot
73
87
  requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
89
  - - "~>"
76
90
  - !ruby/object:Gem::Version
77
- version: 4.7.0
91
+ version: '4.8'
78
92
  type: :development
79
93
  prerelease: false
80
94
  version_requirements: !ruby/object:Gem::Requirement
81
95
  requirements:
82
96
  - - "~>"
83
97
  - !ruby/object:Gem::Version
84
- version: 4.7.0
98
+ version: '4.8'
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: generator_spec
87
101
  requirement: !ruby/object:Gem::Requirement
@@ -132,11 +146,15 @@ extensions: []
132
146
  extra_rdoc_files: []
133
147
  files:
134
148
  - ".coveralls.yml"
149
+ - ".github/ISSUE_TEMPLATE.md"
150
+ - ".github/PULL_REQUEST_TEMPLATE.md"
135
151
  - ".gitignore"
136
152
  - ".hound.yml"
137
153
  - ".rspec"
154
+ - ".rubocop.yml"
138
155
  - ".travis.yml"
139
156
  - Appraisals
157
+ - CODE_OF_CONDUCT.md
140
158
  - CONTRIBUTING.md
141
159
  - Gemfile
142
160
  - MIT-LICENSE
@@ -144,6 +162,7 @@ files:
144
162
  - README.md
145
163
  - RELEASING.md
146
164
  - Rakefile
165
+ - SECURITY.md
147
166
  - app/assets/stylesheets/doorkeeper/admin/application.css
148
167
  - app/assets/stylesheets/doorkeeper/application.css
149
168
  - app/controllers/doorkeeper/application_controller.rb
@@ -173,6 +192,8 @@ files:
173
192
  - gemfiles/rails_4_2.gemfile
174
193
  - gemfiles/rails_5_0.gemfile
175
194
  - gemfiles/rails_5_1.gemfile
195
+ - gemfiles/rails_5_2.gemfile
196
+ - gemfiles/rails_master.gemfile
176
197
  - lib/doorkeeper.rb
177
198
  - lib/doorkeeper/config.rb
178
199
  - lib/doorkeeper/engine.rb
@@ -214,12 +235,14 @@ files:
214
235
  - lib/doorkeeper/oauth/refresh_token_request.rb
215
236
  - lib/doorkeeper/oauth/scopes.rb
216
237
  - lib/doorkeeper/oauth/token.rb
238
+ - lib/doorkeeper/oauth/token_introspection.rb
217
239
  - lib/doorkeeper/oauth/token_request.rb
218
240
  - lib/doorkeeper/oauth/token_response.rb
219
241
  - lib/doorkeeper/orm/active_record.rb
220
242
  - lib/doorkeeper/orm/active_record/access_grant.rb
221
243
  - lib/doorkeeper/orm/active_record/access_token.rb
222
244
  - lib/doorkeeper/orm/active_record/application.rb
245
+ - lib/doorkeeper/orm/active_record/base_record.rb
223
246
  - lib/doorkeeper/rails/helpers.rb
224
247
  - lib/doorkeeper/rails/routes.rb
225
248
  - lib/doorkeeper/rails/routes/mapper.rb
@@ -240,10 +263,10 @@ files:
240
263
  - lib/generators/doorkeeper/migration_generator.rb
241
264
  - lib/generators/doorkeeper/previous_refresh_token_generator.rb
242
265
  - lib/generators/doorkeeper/templates/README
243
- - lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb
244
- - lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb
266
+ - lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb
267
+ - lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb
245
268
  - lib/generators/doorkeeper/templates/initializer.rb
246
- - lib/generators/doorkeeper/templates/migration.rb
269
+ - lib/generators/doorkeeper/templates/migration.rb.erb
247
270
  - lib/generators/doorkeeper/views_generator.rb
248
271
  - spec/controllers/application_metal_controller.rb
249
272
  - spec/controllers/applications_controller_spec.rb
@@ -270,9 +293,9 @@ files:
270
293
  - spec/dummy/config/environments/development.rb
271
294
  - spec/dummy/config/environments/production.rb
272
295
  - spec/dummy/config/environments/test.rb
273
- - spec/dummy/config/initializers/active_record_belongs_to_required_by_default.rb
274
296
  - spec/dummy/config/initializers/backtrace_silencers.rb
275
297
  - spec/dummy/config/initializers/doorkeeper.rb
298
+ - spec/dummy/config/initializers/new_framework_defaults.rb
276
299
  - spec/dummy/config/initializers/secret_token.rb
277
300
  - spec/dummy/config/initializers/session_store.rb
278
301
  - spec/dummy/config/initializers/wrap_parameters.rb
@@ -293,8 +316,10 @@ files:
293
316
  - spec/generators/application_owner_generator_spec.rb
294
317
  - spec/generators/install_generator_spec.rb
295
318
  - spec/generators/migration_generator_spec.rb
319
+ - spec/generators/previous_refresh_token_generator_spec.rb
296
320
  - spec/generators/templates/routes.rb
297
321
  - spec/generators/views_generator_spec.rb
322
+ - spec/grape/grape_integration_spec.rb
298
323
  - spec/helpers/doorkeeper/dashboard_helper_spec.rb
299
324
  - spec/lib/config_spec.rb
300
325
  - spec/lib/doorkeeper_spec.rb
@@ -365,6 +390,7 @@ files:
365
390
  - spec/support/shared/controllers_shared_context.rb
366
391
  - spec/support/shared/models_shared_examples.rb
367
392
  - spec/validators/redirect_uri_validator_spec.rb
393
+ - spec/version/version_spec.rb
368
394
  - vendor/assets/stylesheets/doorkeeper/bootstrap.min.css
369
395
  homepage: https://github.com/doorkeeper-gem/doorkeeper
370
396
  licenses:
@@ -386,7 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
386
412
  version: '0'
387
413
  requirements: []
388
414
  rubyforge_project:
389
- rubygems_version: 2.6.11
415
+ rubygems_version: 2.5.2.2
390
416
  signing_key:
391
417
  specification_version: 4
392
418
  summary: OAuth 2 provider for Rails and Grape
@@ -416,9 +442,9 @@ test_files:
416
442
  - spec/dummy/config/environments/development.rb
417
443
  - spec/dummy/config/environments/production.rb
418
444
  - spec/dummy/config/environments/test.rb
419
- - spec/dummy/config/initializers/active_record_belongs_to_required_by_default.rb
420
445
  - spec/dummy/config/initializers/backtrace_silencers.rb
421
446
  - spec/dummy/config/initializers/doorkeeper.rb
447
+ - spec/dummy/config/initializers/new_framework_defaults.rb
422
448
  - spec/dummy/config/initializers/secret_token.rb
423
449
  - spec/dummy/config/initializers/session_store.rb
424
450
  - spec/dummy/config/initializers/wrap_parameters.rb
@@ -439,8 +465,10 @@ test_files:
439
465
  - spec/generators/application_owner_generator_spec.rb
440
466
  - spec/generators/install_generator_spec.rb
441
467
  - spec/generators/migration_generator_spec.rb
468
+ - spec/generators/previous_refresh_token_generator_spec.rb
442
469
  - spec/generators/templates/routes.rb
443
470
  - spec/generators/views_generator_spec.rb
471
+ - spec/grape/grape_integration_spec.rb
444
472
  - spec/helpers/doorkeeper/dashboard_helper_spec.rb
445
473
  - spec/lib/config_spec.rb
446
474
  - spec/lib/doorkeeper_spec.rb
@@ -511,3 +539,4 @@ test_files:
511
539
  - spec/support/shared/controllers_shared_context.rb
512
540
  - spec/support/shared/models_shared_examples.rb
513
541
  - spec/validators/redirect_uri_validator_spec.rb
542
+ - spec/version/version_spec.rb