doorkeeper 0.4.0 → 0.5.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 (120) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +5 -1
  3. data/CHANGELOG.md +39 -0
  4. data/Gemfile +12 -4
  5. data/README.md +76 -7
  6. data/Rakefile +1 -25
  7. data/app/assets/javascripts/doorkeeper/application.js +0 -7
  8. data/app/controllers/doorkeeper/application_controller.rb +1 -27
  9. data/app/controllers/doorkeeper/applications_controller.rb +14 -6
  10. data/app/controllers/doorkeeper/authorized_applications_controller.rb +1 -1
  11. data/app/controllers/doorkeeper/token_info_controller.rb +11 -0
  12. data/app/controllers/doorkeeper/tokens_controller.rb +11 -8
  13. data/app/validators/redirect_uri_validator.rb +12 -0
  14. data/app/views/doorkeeper/applications/_form.html.erb +3 -3
  15. data/app/views/doorkeeper/applications/edit.html.erb +1 -1
  16. data/app/views/doorkeeper/applications/index.html.erb +4 -4
  17. data/app/views/doorkeeper/applications/new.html.erb +1 -1
  18. data/app/views/doorkeeper/applications/show.html.erb +3 -3
  19. data/app/views/doorkeeper/authorizations/new.html.erb +2 -2
  20. data/app/views/doorkeeper/authorized_applications/index.html.erb +1 -1
  21. data/config/locales/en.yml +35 -0
  22. data/doorkeeper.gemspec +3 -3
  23. data/gemfiles/gemfile.rails-3.1.x +10 -0
  24. data/gemfiles/gemfile.rails-3.2.x +10 -0
  25. data/lib/doorkeeper/config.rb +56 -38
  26. data/lib/doorkeeper/doorkeeper_for.rb +2 -47
  27. data/lib/doorkeeper/engine.rb +6 -29
  28. data/lib/doorkeeper/helpers/controller.rb +29 -0
  29. data/lib/doorkeeper/helpers/filter.rb +38 -0
  30. data/{app/models/doorkeeper → lib/doorkeeper/models}/access_grant.rb +7 -7
  31. data/{app/models/doorkeeper → lib/doorkeeper/models}/access_token.rb +27 -24
  32. data/lib/doorkeeper/models/accessible.rb +9 -0
  33. data/lib/doorkeeper/models/active_record/access_grant.rb +5 -0
  34. data/lib/doorkeeper/models/active_record/access_token.rb +15 -0
  35. data/lib/doorkeeper/models/active_record/application.rb +18 -0
  36. data/lib/doorkeeper/models/application.rb +38 -0
  37. data/lib/doorkeeper/models/expirable.rb +6 -4
  38. data/lib/doorkeeper/models/mongoid/access_grant.rb +22 -0
  39. data/lib/doorkeeper/models/mongoid/access_token.rb +35 -0
  40. data/lib/doorkeeper/models/mongoid/application.rb +22 -0
  41. data/lib/doorkeeper/models/mongoid/revocable.rb +15 -0
  42. data/lib/doorkeeper/models/mongoid/scopes.rb +15 -0
  43. data/lib/doorkeeper/models/ownership.rb +16 -0
  44. data/lib/doorkeeper/models/revocable.rb +1 -1
  45. data/lib/doorkeeper/models/scopes.rb +9 -5
  46. data/lib/doorkeeper/oauth/access_token_request.rb +2 -2
  47. data/lib/doorkeeper/oauth/authorization/code.rb +5 -3
  48. data/lib/doorkeeper/oauth/authorization.rb +1 -0
  49. data/lib/doorkeeper/oauth/client.rb +2 -2
  50. data/lib/doorkeeper/oauth/client_credentials_request.rb +4 -1
  51. data/lib/doorkeeper/oauth/helpers/unique_token.rb +2 -5
  52. data/lib/doorkeeper/oauth/password_access_token_request.rb +3 -5
  53. data/lib/doorkeeper/oauth/token.rb +36 -0
  54. data/lib/doorkeeper/rails/routes/mapper.rb +28 -0
  55. data/lib/doorkeeper/rails/routes/mapping.rb +39 -0
  56. data/lib/doorkeeper/rails/routes.rb +77 -0
  57. data/lib/doorkeeper/version.rb +1 -1
  58. data/lib/doorkeeper.rb +14 -3
  59. data/lib/generators/doorkeeper/application_owner_generator.rb +15 -0
  60. data/lib/generators/doorkeeper/install_generator.rb +2 -9
  61. data/lib/generators/doorkeeper/migration_generator.rb +15 -0
  62. data/lib/generators/doorkeeper/templates/README +15 -1
  63. data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb +7 -0
  64. data/lib/generators/doorkeeper/templates/initializer.rb +31 -15
  65. data/lib/generators/doorkeeper/templates/migration.rb +7 -4
  66. data/lib/generators/doorkeeper/views_generator.rb +1 -1
  67. data/script/run_all +3 -0
  68. data/spec/controllers/applications_controller_spec.rb +1 -1
  69. data/spec/controllers/authorizations_controller_spec.rb +4 -4
  70. data/spec/controllers/protected_resources_controller_spec.rb +7 -7
  71. data/spec/controllers/token_info_controller_spec.rb +54 -0
  72. data/spec/controllers/tokens_controller_spec.rb +3 -2
  73. data/spec/dummy/app/controllers/custom_authorizations_controller.rb +7 -0
  74. data/spec/dummy/app/controllers/metal_controller.rb +11 -0
  75. data/spec/dummy/app/models/user.rb +16 -5
  76. data/spec/dummy/config/application.rb +4 -7
  77. data/spec/dummy/config/boot.rb +3 -7
  78. data/spec/dummy/config/initializers/doorkeeper.rb +13 -0
  79. data/spec/dummy/config/mongoid.yml +7 -0
  80. data/spec/dummy/config/routes.rb +31 -1
  81. data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +1 -1
  82. data/spec/dummy/db/migrate/20120524202412_create_doorkeeper_tables.rb +6 -4
  83. data/spec/dummy/db/schema.rb +5 -3
  84. data/spec/generators/application_owner_generator_spec.rb +23 -0
  85. data/spec/generators/install_generator_spec.rb +1 -6
  86. data/spec/generators/migration_generator_spec.rb +20 -0
  87. data/spec/lib/config_spec.rb +72 -4
  88. data/spec/lib/models/expirable_spec.rb +8 -11
  89. data/spec/lib/models/revocable_spec.rb +1 -1
  90. data/spec/lib/oauth/access_token_request_spec.rb +15 -9
  91. data/spec/lib/oauth/authorization_request_spec.rb +1 -0
  92. data/spec/lib/oauth/client_credentials_request_spec.rb +15 -9
  93. data/spec/lib/oauth/client_spec.rb +5 -8
  94. data/spec/lib/oauth/helpers/unique_token_spec.rb +2 -20
  95. data/spec/lib/oauth/password_access_token_request_spec.rb +35 -9
  96. data/spec/lib/oauth/token_spec.rb +83 -0
  97. data/spec/models/doorkeeper/access_token_spec.rb +41 -1
  98. data/spec/models/doorkeeper/application_spec.rb +53 -20
  99. data/spec/requests/flows/authorization_code_spec.rb +1 -1
  100. data/spec/requests/flows/client_credentials_spec.rb +2 -0
  101. data/spec/requests/flows/password_spec.rb +25 -0
  102. data/spec/requests/flows/refresh_token_spec.rb +5 -2
  103. data/spec/requests/protected_resources/metal_spec.rb +14 -0
  104. data/spec/requests/protected_resources/private_api_spec.rb +10 -3
  105. data/spec/routing/custom_controller_routes_spec.rb +44 -0
  106. data/spec/routing/default_routes_spec.rb +32 -0
  107. data/spec/spec_helper.rb +1 -0
  108. data/spec/spec_helper_integration.rb +18 -8
  109. data/spec/support/dependencies/factory_girl.rb +0 -3
  110. data/spec/support/orm/active_record.rb +11 -0
  111. data/spec/support/orm/mongoid.rb +26 -0
  112. data/spec/support/shared/controllers_shared_context.rb +2 -2
  113. data/spec/support/shared/models_shared_examples.rb +16 -0
  114. data/spec/validators/redirect_uri_validator_spec.rb +40 -0
  115. metadata +62 -32
  116. data/app/helpers/doorkeeper/application_helper.rb +0 -4
  117. data/app/models/doorkeeper/application.rb +0 -54
  118. data/config/routes.rb +0 -9
  119. data/lib/tasks/doorkeeper_tasks.rake +0 -4
  120. data/spec/support/dependencies/database_cleaner.rb +0 -16
@@ -1,21 +1,24 @@
1
1
  ENV["RAILS_ENV"] ||= 'test'
2
- require File.expand_path("../dummy/config/environment", __FILE__)
2
+ DOORKEEPER_ORM = (ENV["DOORKEEPER_ORM"] || :active_record).to_sym
3
3
 
4
+ $:.unshift File.dirname(__FILE__)
5
+
6
+ require 'dummy/config/environment'
4
7
  require 'rspec/rails'
5
8
  require 'rspec/autorun'
6
9
  require 'generator_spec/test_case'
7
10
  require 'timecop'
11
+ require 'database_cleaner'
8
12
 
9
- ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
10
-
13
+ puts "====> Doorkeeper.orm = #{Doorkeeper.configuration.orm.inspect}"
11
14
  puts "====> Rails version: #{Rails.version}"
12
15
  puts "====> Ruby version: #{RUBY_VERSION}"
13
16
 
14
- # load schema to in memory sqlite
15
- ActiveRecord::Migration.verbose = false
16
- load Rails.root + "db/schema.rb"
17
+ require "support/orm/#{Doorkeeper.configuration.orm}"
17
18
 
18
- Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each { |f| require f }
19
+ ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
20
+
21
+ Dir["#{File.dirname(__FILE__)}/support/{dependencies,helpers,shared}/*.rb"].each { |f| require f }
19
22
 
20
23
  RSpec.configure do |config|
21
24
  config.mock_with :rspec
@@ -23,6 +26,13 @@ RSpec.configure do |config|
23
26
  config.infer_base_class_for_anonymous_controllers = false
24
27
 
25
28
  config.before do
26
- Doorkeeper.configure {}
29
+ DatabaseCleaner.start
30
+ Doorkeeper.configure {
31
+ orm DOORKEEPER_ORM
32
+ }
33
+ end
34
+
35
+ config.after do
36
+ DatabaseCleaner.clean
27
37
  end
28
38
  end
@@ -1,5 +1,2 @@
1
1
  require 'factory_girl'
2
-
3
- FactoryGirl.definition_file_paths << File.join(ENGINE_RAILS_ROOT, 'spec/factories')
4
-
5
2
  FactoryGirl.find_definitions
@@ -0,0 +1,11 @@
1
+ # load schema to in memory sqlite
2
+ ActiveRecord::Migration.verbose = false
3
+ load Rails.root + "db/schema.rb"
4
+
5
+ module Doorkeeper
6
+ module OrmHelper
7
+ def mock_application_owner
8
+ mock_model 'User', :id => 1234
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ DatabaseCleaner[:mongoid].strategy = :truncation
2
+ DatabaseCleaner[:mongoid].clean_with :truncation
3
+
4
+ RSpec.configure do |config|
5
+ config.before :suite do
6
+ Doorkeeper::Application.create_indexes
7
+ Doorkeeper::AccessGrant.create_indexes
8
+ Doorkeeper::AccessToken.create_indexes
9
+ end
10
+ end
11
+
12
+ module Doorkeeper
13
+ class PlaceholderApplicationOwner
14
+ include Mongoid::Document
15
+
16
+ self.store_in :placeholder_application_owners
17
+ has_many :applications
18
+
19
+ end
20
+
21
+ module OrmHelper
22
+ def mock_application_owner
23
+ PlaceholderApplicationOwner.new
24
+ end
25
+ end
26
+ end
@@ -8,7 +8,7 @@ shared_context "valid token", :token => :valid do
8
8
  end
9
9
 
10
10
  before :each do
11
- Doorkeeper::AccessToken.stub(:find_by_token).with(token_string).and_return(token)
11
+ Doorkeeper::AccessToken.stub(:authenticate).with(token_string).and_return(token)
12
12
  end
13
13
  end
14
14
 
@@ -22,7 +22,7 @@ shared_context "invalid token", :token => :invalid do
22
22
  end
23
23
 
24
24
  before :each do
25
- Doorkeeper::AccessToken.stub(:find_by_token).with(token_string).and_return(token)
25
+ Doorkeeper::AccessToken.stub(:authenticate).with(token_string).and_return(token)
26
26
  end
27
27
  end
28
28
 
@@ -40,5 +40,21 @@ shared_examples "an unique token" do
40
40
  it "is generated before validation" do
41
41
  expect { subject.valid? }.to change { subject.token }.from(nil)
42
42
  end
43
+
44
+ it "is not valid if token exists" do
45
+ token1 = FactoryGirl.create factory_name
46
+ token2 = FactoryGirl.create factory_name
47
+ token2.token = token1.token
48
+ token2.should_not be_valid
49
+ end
50
+
51
+ it 'expects database to throw an error when tokens are the same' do
52
+ token1 = FactoryGirl.create factory_name
53
+ token2 = FactoryGirl.create factory_name
54
+ token2.token = token1.token
55
+ expect {
56
+ token2.save!(:validate => false)
57
+ }.to raise_error
58
+ end
43
59
  end
44
60
  end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+ require 'active_model'
3
+ require 'validators/redirect_uri_validator'
4
+
5
+ require 'spec_helper_integration'
6
+
7
+ describe RedirectUriValidator do
8
+ subject do
9
+ FactoryGirl.create(:application)
10
+ end
11
+
12
+ it 'is valid when the uri is a uri' do
13
+ subject.redirect_uri = "http://example.com/callback"
14
+ subject.should be_valid
15
+ end
16
+
17
+ it 'is invalid when the uri is not a uri' do
18
+ subject.redirect_uri = ']'
19
+ subject.should_not be_valid
20
+ subject.errors[:redirect_uri].first.should == "must be a valid URI."
21
+ end
22
+
23
+ it 'is invalid when the uri is relative' do
24
+ subject.redirect_uri = "/abcd"
25
+ subject.should_not be_valid
26
+ subject.errors[:redirect_uri].first.should == "must be an absolute URI."
27
+ end
28
+
29
+ it 'is invalid when the uri has a fragment' do
30
+ subject.redirect_uri = "http://example.com/abcd#xyz"
31
+ subject.should_not be_valid
32
+ subject.errors[:redirect_uri].first.should == "cannot contain a fragment."
33
+ end
34
+
35
+ it 'is invalid when the uri has a query parameter' do
36
+ subject.redirect_uri = "http://example.com/abcd?xyz=123"
37
+ subject.should_not be_valid
38
+ subject.errors[:redirect_uri].first.should == "cannot contain a query parameter."
39
+ end
40
+ 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: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-26 00:00:00.000000000 Z
13
+ date: 2012-10-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: railties
17
- requirement: &70213938588360 !ruby/object:Gem::Requirement
17
+ requirement: &70141743363880 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70213938588360
25
+ version_requirements: *70141743363880
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sqlite3
28
- requirement: &70213938586440 !ruby/object:Gem::Requirement
28
+ requirement: &70141743362900 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,21 +33,21 @@ dependencies:
33
33
  version: 1.3.5
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70213938586440
36
+ version_requirements: *70141743362900
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec-rails
39
- requirement: &70213938584520 !ruby/object:Gem::Requirement
39
+ requirement: &70141743361840 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: 2.10.0
44
+ version: 2.11.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70213938584520
47
+ version_requirements: *70141743361840
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: capybara
50
- requirement: &70213938582960 !ruby/object:Gem::Requirement
50
+ requirement: &70141743395920 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.1.2
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70213938582960
58
+ version_requirements: *70141743395920
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: generator_spec
61
- requirement: &70213938582320 !ruby/object:Gem::Requirement
61
+ requirement: &70141743395180 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.8.5
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70213938582320
69
+ version_requirements: *70141743395180
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: factory_girl
72
- requirement: &70213938597380 !ruby/object:Gem::Requirement
72
+ requirement: &70141743394460 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,32 +77,32 @@ dependencies:
77
77
  version: 2.6.4
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70213938597380
80
+ version_requirements: *70141743394460
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: timecop
83
- requirement: &70213938595120 !ruby/object:Gem::Requirement
83
+ requirement: &70141743393440 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
87
87
  - !ruby/object:Gem::Version
88
- version: 0.3.5
88
+ version: 0.4.3
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70213938595120
91
+ version_requirements: *70141743393440
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: database_cleaner
94
- requirement: &70213938592720 !ruby/object:Gem::Requirement
94
+ requirement: &70141743392060 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
98
98
  - !ruby/object:Gem::Version
99
- version: 0.7.1
99
+ version: '0.8'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70213938592720
102
+ version_requirements: *70141743392060
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: bcrypt-ruby
105
- requirement: &70213938591020 !ruby/object:Gem::Requirement
105
+ requirement: &70141743390940 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,7 +110,7 @@ dependencies:
110
110
  version: 3.0.1
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70213938591020
113
+ version_requirements: *70141743390940
114
114
  description: Doorkeeper is an OAuth 2 provider for Rails.
115
115
  email:
116
116
  - felipe@applicake.com
@@ -134,11 +134,9 @@ files:
134
134
  - app/controllers/doorkeeper/applications_controller.rb
135
135
  - app/controllers/doorkeeper/authorizations_controller.rb
136
136
  - app/controllers/doorkeeper/authorized_applications_controller.rb
137
+ - app/controllers/doorkeeper/token_info_controller.rb
137
138
  - app/controllers/doorkeeper/tokens_controller.rb
138
- - app/helpers/doorkeeper/application_helper.rb
139
- - app/models/doorkeeper/access_grant.rb
140
- - app/models/doorkeeper/access_token.rb
141
- - app/models/doorkeeper/application.rb
139
+ - app/validators/redirect_uri_validator.rb
142
140
  - app/views/doorkeeper/applications/_form.html.erb
143
141
  - app/views/doorkeeper/applications/edit.html.erb
144
142
  - app/views/doorkeeper/applications/index.html.erb
@@ -150,7 +148,6 @@ files:
150
148
  - app/views/layouts/doorkeeper/application.html.erb
151
149
  - config/initializers/form_errors.rb
152
150
  - config/locales/en.yml
153
- - config/routes.rb
154
151
  - doorkeeper.gemspec
155
152
  - gemfiles/gemfile.rails-3.1.x
156
153
  - gemfiles/gemfile.rails-3.2.x
@@ -158,7 +155,22 @@ files:
158
155
  - lib/doorkeeper/config.rb
159
156
  - lib/doorkeeper/doorkeeper_for.rb
160
157
  - lib/doorkeeper/engine.rb
158
+ - lib/doorkeeper/helpers/controller.rb
159
+ - lib/doorkeeper/helpers/filter.rb
160
+ - lib/doorkeeper/models/access_grant.rb
161
+ - lib/doorkeeper/models/access_token.rb
162
+ - lib/doorkeeper/models/accessible.rb
163
+ - lib/doorkeeper/models/active_record/access_grant.rb
164
+ - lib/doorkeeper/models/active_record/access_token.rb
165
+ - lib/doorkeeper/models/active_record/application.rb
166
+ - lib/doorkeeper/models/application.rb
161
167
  - lib/doorkeeper/models/expirable.rb
168
+ - lib/doorkeeper/models/mongoid/access_grant.rb
169
+ - lib/doorkeeper/models/mongoid/access_token.rb
170
+ - lib/doorkeeper/models/mongoid/application.rb
171
+ - lib/doorkeeper/models/mongoid/revocable.rb
172
+ - lib/doorkeeper/models/mongoid/scopes.rb
173
+ - lib/doorkeeper/models/ownership.rb
162
174
  - lib/doorkeeper/models/revocable.rb
163
175
  - lib/doorkeeper/models/scopes.rb
164
176
  - lib/doorkeeper/oauth/access_token_request.rb
@@ -182,26 +194,35 @@ files:
182
194
  - lib/doorkeeper/oauth/helpers/uri_checker.rb
183
195
  - lib/doorkeeper/oauth/password_access_token_request.rb
184
196
  - lib/doorkeeper/oauth/scopes.rb
197
+ - lib/doorkeeper/oauth/token.rb
198
+ - lib/doorkeeper/rails/routes.rb
199
+ - lib/doorkeeper/rails/routes/mapper.rb
200
+ - lib/doorkeeper/rails/routes/mapping.rb
185
201
  - lib/doorkeeper/validations.rb
186
202
  - lib/doorkeeper/version.rb
203
+ - lib/generators/doorkeeper/application_owner_generator.rb
187
204
  - lib/generators/doorkeeper/install_generator.rb
205
+ - lib/generators/doorkeeper/migration_generator.rb
188
206
  - lib/generators/doorkeeper/templates/README
207
+ - lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb
189
208
  - lib/generators/doorkeeper/templates/initializer.rb
190
209
  - lib/generators/doorkeeper/templates/migration.rb
191
210
  - lib/generators/doorkeeper/views_generator.rb
192
- - lib/tasks/doorkeeper_tasks.rake
193
211
  - script/rails
194
212
  - script/run_all
195
213
  - spec/controllers/applications_controller_spec.rb
196
214
  - spec/controllers/authorizations_controller_spec.rb
197
215
  - spec/controllers/protected_resources_controller_spec.rb
216
+ - spec/controllers/token_info_controller_spec.rb
198
217
  - spec/controllers/tokens_controller_spec.rb
199
218
  - spec/dummy/Rakefile
200
219
  - spec/dummy/app/assets/javascripts/application.js
201
220
  - spec/dummy/app/assets/stylesheets/application.css
202
221
  - spec/dummy/app/controllers/application_controller.rb
222
+ - spec/dummy/app/controllers/custom_authorizations_controller.rb
203
223
  - spec/dummy/app/controllers/full_protected_resources_controller.rb
204
224
  - spec/dummy/app/controllers/home_controller.rb
225
+ - spec/dummy/app/controllers/metal_controller.rb
205
226
  - spec/dummy/app/controllers/semi_protected_resources_controller.rb
206
227
  - spec/dummy/app/helpers/application_helper.rb
207
228
  - spec/dummy/app/models/user.rb
@@ -221,6 +242,7 @@ files:
221
242
  - spec/dummy/config/initializers/session_store.rb
222
243
  - spec/dummy/config/initializers/wrap_parameters.rb
223
244
  - spec/dummy/config/locales/doorkeeper.en.yml
245
+ - spec/dummy/config/mongoid.yml
224
246
  - spec/dummy/config/routes.rb
225
247
  - spec/dummy/db/migrate/20111122132257_create_users.rb
226
248
  - spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
@@ -234,7 +256,9 @@ files:
234
256
  - spec/factories/access_grant.rb
235
257
  - spec/factories/access_token.rb
236
258
  - spec/factories/application.rb
259
+ - spec/generators/application_owner_generator_spec.rb
237
260
  - spec/generators/install_generator_spec.rb
261
+ - spec/generators/migration_generator_spec.rb
238
262
  - spec/generators/templates/routes.rb
239
263
  - spec/generators/views_generator_spec.rb
240
264
  - spec/lib/config_spec.rb
@@ -260,6 +284,7 @@ files:
260
284
  - spec/lib/oauth/helpers/uri_checker_spec.rb
261
285
  - spec/lib/oauth/password_access_token_request_spec.rb
262
286
  - spec/lib/oauth/scopes_spec.rb
287
+ - spec/lib/oauth/token_spec.rb
263
288
  - spec/models/doorkeeper/access_grant_spec.rb
264
289
  - spec/models/doorkeeper/access_token_spec.rb
265
290
  - spec/models/doorkeeper/application_spec.rb
@@ -275,10 +300,12 @@ files:
275
300
  - spec/requests/flows/password_spec.rb
276
301
  - spec/requests/flows/refresh_token_spec.rb
277
302
  - spec/requests/flows/skip_authorization_spec.rb
303
+ - spec/requests/protected_resources/metal_spec.rb
278
304
  - spec/requests/protected_resources/private_api_spec.rb
305
+ - spec/routing/custom_controller_routes_spec.rb
306
+ - spec/routing/default_routes_spec.rb
279
307
  - spec/spec_helper.rb
280
308
  - spec/spec_helper_integration.rb
281
- - spec/support/dependencies/database_cleaner.rb
282
309
  - spec/support/dependencies/factory_girl.rb
283
310
  - spec/support/helpers/access_token_request_helper.rb
284
311
  - spec/support/helpers/authorization_request_helper.rb
@@ -286,8 +313,11 @@ files:
286
313
  - spec/support/helpers/model_helper.rb
287
314
  - spec/support/helpers/request_spec_helper.rb
288
315
  - spec/support/helpers/url_helper.rb
316
+ - spec/support/orm/active_record.rb
317
+ - spec/support/orm/mongoid.rb
289
318
  - spec/support/shared/controllers_shared_context.rb
290
319
  - spec/support/shared/models_shared_examples.rb
320
+ - spec/validators/redirect_uri_validator_spec.rb
291
321
  homepage: https://github.com/applicake/doorkeeper
292
322
  licenses: []
293
323
  post_install_message:
@@ -302,7 +332,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
302
332
  version: '0'
303
333
  segments:
304
334
  - 0
305
- hash: -318783597431461187
335
+ hash: -1887190500184471372
306
336
  required_rubygems_version: !ruby/object:Gem::Requirement
307
337
  none: false
308
338
  requirements:
@@ -311,7 +341,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
311
341
  version: '0'
312
342
  segments:
313
343
  - 0
314
- hash: -318783597431461187
344
+ hash: -1887190500184471372
315
345
  requirements: []
316
346
  rubyforge_project:
317
347
  rubygems_version: 1.8.12
@@ -1,4 +0,0 @@
1
- module Doorkeeper
2
- module ApplicationHelper
3
- end
4
- end
@@ -1,54 +0,0 @@
1
- module Doorkeeper
2
- class Application < ActiveRecord::Base
3
- include Doorkeeper::OAuth::Helpers
4
-
5
- self.table_name = :oauth_applications
6
-
7
- has_many :access_grants, :dependent => :destroy
8
- has_many :access_tokens, :dependent => :destroy
9
- has_many :authorized_tokens, :class_name => "AccessToken", :conditions => { :revoked_at => nil }
10
- has_many :authorized_applications, :through => :authorized_tokens, :source => :application
11
-
12
- validates :name, :secret, :redirect_uri, :presence => true
13
- validates :uid, :presence => true, :uniqueness => true
14
- validate :validate_redirect_uri
15
-
16
- before_validation :generate_uid, :generate_secret, :on => :create
17
-
18
- attr_accessible :name, :redirect_uri
19
-
20
- def self.authenticate(uid, secret)
21
- find_by_uid_and_secret(uid, secret)
22
- end
23
-
24
- def self.column_names_with_table
25
- self.column_names.map { |c| "oauth_applications.#{c}" }
26
- end
27
-
28
- def self.authorized_for(resource_owner)
29
- joins(:authorized_applications).
30
- where(:oauth_access_tokens => { :resource_owner_id => resource_owner.id }).
31
- group(column_names_with_table.join(','))
32
- end
33
-
34
- def validate_redirect_uri
35
- return unless redirect_uri
36
- uri = URI.parse(redirect_uri)
37
- errors.add(:redirect_uri, "cannot contain a fragment.") unless uri.fragment.nil?
38
- errors.add(:redirect_uri, "must be an absolute URL.") if uri.scheme.nil? || uri.host.nil?
39
- errors.add(:redirect_uri, "cannot contain a query parameter.") unless uri.query.nil?
40
- rescue URI::InvalidURIError => e
41
- errors.add(:redirect_uri, "must be a valid URI.")
42
- end
43
-
44
- private
45
-
46
- def generate_uid
47
- self.uid = UniqueToken.generate_for :uid, self.class
48
- end
49
-
50
- def generate_secret
51
- self.secret = UniqueToken.generate_for :secret, self.class
52
- end
53
- end
54
- end
data/config/routes.rb DELETED
@@ -1,9 +0,0 @@
1
- Doorkeeper::Engine.routes.draw do
2
- get 'authorize', :to => "authorizations#new", :as => :authorization
3
- post 'authorize', :to => "authorizations#create", :as => :authorization
4
- delete 'authorize', :to => "authorizations#destroy", :as => :authorization
5
- post 'token', :to => "tokens#create", :as => :token
6
-
7
- resources :applications
8
- resources :authorized_applications, :only => [:index, :destroy]
9
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :doorkeeper do
3
- # # Task goes here
4
- # end
@@ -1,16 +0,0 @@
1
- require "database_cleaner"
2
-
3
- RSpec.configure do |config|
4
- config.before(:suite) do
5
- DatabaseCleaner.strategy = :transaction
6
- DatabaseCleaner.clean_with(:truncation)
7
- end
8
-
9
- config.before(:each) do
10
- DatabaseCleaner.start
11
- end
12
-
13
- config.after(:each) do
14
- DatabaseCleaner.clean
15
- end
16
- end