oauth2-provider 0.0.16 → 0.0.17

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.
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
3
 
4
+ require 'bundler/setup'
4
5
  require 'rspec/core/rake_task'
5
6
 
6
7
  namespace :spec do
@@ -1,3 +1,3 @@
1
- require 'app'
1
+ require File.dirname(__FILE__) + '/app'
2
2
 
3
3
  run Sinatra::Application
@@ -1,3 +1,2 @@
1
- require 'active_support/all'
2
1
  require 'oauth2/provider/rails' if defined?(Rails)
3
2
  require 'oauth2/provider'
@@ -1,3 +1,5 @@
1
+ require 'active_support/all'
2
+
1
3
  module OAuth2
2
4
  module Provider
3
5
  autoload :Rails, 'oauth2/provider/rails'
@@ -32,6 +32,15 @@ module OAuth2::Provider::Models::Authorization
32
32
  end
33
33
 
34
34
  module ClassMethods
35
+ def allowing(client, owner, scope)
36
+ where(
37
+ :client_id => client.id,
38
+ :resource_owner_id => owner && owner.id,
39
+ :resource_owner_type => owner && owner.class.name,
40
+ :scope => scope
41
+ ).select(&:fresh?)
42
+ end
43
+
35
44
  def all_for(ro)
36
45
  return [] unless ro
37
46
  self.where(:resource_owner_id => ro.id, :resource_owner_type => ro.class.name).all
@@ -1,3 +1,5 @@
1
+ require 'addressable/uri'
2
+
1
3
  module OAuth2::Provider::Models::Client
2
4
  extend ActiveSupport::Concern
3
5
 
@@ -20,6 +22,17 @@ module OAuth2::Provider::Models::Client
20
22
  true
21
23
  end
22
24
 
25
+ def allow_redirection?(uri)
26
+ uri_host = Addressable::URI.parse(uri).host
27
+ if oauth_redirect_uri
28
+ Addressable::URI.parse(oauth_redirect_uri).host == uri_host
29
+ else
30
+ !uri_host.nil? && true
31
+ end
32
+ rescue Addressable::URI::InvalidURIError
33
+ false
34
+ end
35
+
23
36
  module ClassMethods
24
37
  def from_param(identifier)
25
38
  self.find_by_oauth_identifier(identifier)
@@ -13,7 +13,7 @@ class OAuth2::Provider::Models::Mongoid::Authorization
13
13
 
14
14
  referenced_in(:client,
15
15
  :class_name => OAuth2::Provider.client_class_name,
16
- :foreign_key => :oauth_client_id
16
+ :foreign_key => :client_id
17
17
  )
18
18
 
19
19
  references_many(:access_tokens,
@@ -6,6 +6,7 @@ class OAuth2::Provider::Models::Mongoid::Client
6
6
  include ::Mongoid::Document
7
7
  include OAuth2::Provider::Models::Client
8
8
 
9
+ field :oauth_redirect_uri
9
10
  field :oauth_secret
10
11
  field :oauth_identifier
11
12
 
@@ -8,4 +8,7 @@ module OAuth2::Provider::Rack
8
8
  autoload :ResourceRequest, 'oauth2/provider/rack/resource_request'
9
9
  autoload :Responses, 'oauth2/provider/rack/responses'
10
10
  autoload :AuthorizationCodesSupport, 'oauth2/provider/rack/authorization_codes_support'
11
+
12
+ class InvalidRequest < StandardError
13
+ end
11
14
  end
@@ -1,25 +1,24 @@
1
1
  module OAuth2::Provider::Rack
2
2
  class AuthorizationCodeRequest
3
- def initialize(env, params)
4
- @env = env
3
+ def initialize(params)
5
4
  @params = params
6
5
  end
7
6
 
8
7
  def validate!
9
- unless redirect_uri
10
- throw_response [400, {}, ['No redirect_uri provided']]
8
+ unless client_id
9
+ raise OAuth2::Provider::Rack::InvalidRequest, 'No client_id provided'
11
10
  end
12
11
 
13
- unless redirect_uri_valid?
14
- throw_response [400, {}, ['Provided redirect_uri is invalid']]
12
+ unless client
13
+ raise OAuth2::Provider::Rack::InvalidRequest, 'client_id is invalid'
15
14
  end
16
15
 
17
- unless client_id
18
- throw_response Responses.redirect_with_error('invalid_request', redirect_uri)
16
+ unless redirect_uri
17
+ raise OAuth2::Provider::Rack::InvalidRequest, 'No redirect_uri provided'
19
18
  end
20
19
 
21
- unless client
22
- throw_response Responses.redirect_with_error('invalid_client', redirect_uri)
20
+ unless redirect_uri_valid?
21
+ raise OAuth2::Provider::Rack::InvalidRequest, 'Provided redirect_uri is invalid'
23
22
  end
24
23
  end
25
24
 
@@ -55,9 +54,7 @@ module OAuth2::Provider::Rack
55
54
  end
56
55
 
57
56
  def redirect_uri_valid?
58
- Addressable::URI.parse(redirect_uri)
59
- rescue
60
- nil
57
+ client && client.allow_redirection?(redirect_uri)
61
58
  end
62
59
 
63
60
  def scope
@@ -67,8 +64,7 @@ module OAuth2::Provider::Rack
67
64
  private
68
65
 
69
66
  def throw_response(response)
70
- @env['oauth2.response'] = response
71
- throw :oauth2
67
+ throw :oauth2, response
72
68
  end
73
69
  end
74
70
  end
@@ -1,10 +1,8 @@
1
- require 'addressable/uri'
2
-
3
1
  module OAuth2::Provider::Rack::AuthorizationCodesSupport
4
2
  protected
5
3
 
6
4
  def oauth2_authorization_request
7
- request.env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.env, request.params)
5
+ request.env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
8
6
  end
9
7
 
10
8
  def block_invalid_authorization_code_requests
@@ -7,6 +7,8 @@ module OAuth2::Provider::Rack
7
7
  def call(env)
8
8
  request = env['oauth2'] = ResourceRequest.new(env)
9
9
 
10
+ env['warden'] && env['warden'].custom_failure!
11
+
10
12
  response = catch :oauth2 do
11
13
  if request.path == "/oauth/access_token"
12
14
  AccessTokenHandler.new(@app, env).process
@@ -14,15 +16,8 @@ module OAuth2::Provider::Rack
14
16
  @app.call(env)
15
17
  end
16
18
  end
17
-
18
- thrown_response(env) || response
19
- end
20
-
21
- def thrown_response(env)
22
- if env['oauth2.response']
23
- env['warden'] && env['warden'].custom_failure!
24
- env['oauth2.response']
25
- end
19
+ rescue InvalidRequest => e
20
+ [400, {}, e.message]
26
21
  end
27
22
  end
28
23
  end
@@ -84,8 +84,7 @@ module OAuth2::Provider::Rack
84
84
  private
85
85
 
86
86
  def throw_response(response)
87
- @env['oauth2.response'] = response
88
- throw :oauth2
87
+ throw :oauth2, response
89
88
  end
90
89
  end
91
90
  end
@@ -1,5 +1,5 @@
1
1
  module OAuth2
2
2
  module Provider
3
- VERSION = "0.0.16"
3
+ VERSION = "0.0.17"
4
4
  end
5
5
  end
@@ -18,12 +18,12 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ["lib"]
19
19
 
20
20
  # Main dependencies
21
- s.add_dependency 'activesupport', '~>3.0.1'
21
+ s.add_dependency 'activesupport', '~>3.0'
22
22
  s.add_dependency 'addressable', '~>2.2'
23
23
 
24
- # Development only dependencies
25
- s.add_development_dependency 'rails', '~>3.0.1'
26
- s.add_development_dependency 'rspec-rails', '~>2.1.0'
24
+ s.add_development_dependency 'rack-test', '~>0.5.7'
25
+ s.add_development_dependency 'activerecord', '~>3.0.1'
26
+ s.add_development_dependency 'rspec', '~>2.1.0'
27
27
  s.add_development_dependency 'rake', '~>0.8.7'
28
28
  s.add_development_dependency 'sqlite3-ruby', '~>1.3.1'
29
29
  s.add_development_dependency 'timecop', '~>0.3.4'
@@ -31,5 +31,4 @@ Gem::Specification.new do |s|
31
31
  s.add_development_dependency 'mongoid', '2.0.0.rc.6'
32
32
  s.add_development_dependency 'bson', '1.2.0'
33
33
  s.add_development_dependency 'bson_ext', '1.2.0'
34
- s.add_development_dependency 'sdoc', '~>0.2.20'
35
34
  end
@@ -5,39 +5,39 @@ describe OAuth2::Provider.authorization_class do
5
5
  subject do
6
6
  result = OAuth2::Provider.authorization_class.new :client => create_client
7
7
  end
8
-
8
+
9
9
  it "is valid with a client" do
10
10
  subject.client.should_not be_nil
11
11
  subject.should be_valid
12
12
  end
13
-
13
+
14
14
  it "is invalid without a client" do
15
15
  subject.client = nil
16
16
  subject.should_not be_valid
17
17
  end
18
-
18
+
19
19
  it "has a given scope, if scope string includes scope" do
20
20
  subject.scope = "first second third"
21
21
  subject.should have_scope("first")
22
22
  subject.should have_scope("second")
23
23
  subject.should have_scope("third")
24
24
  end
25
-
25
+
26
26
  it "doesn't have a given scope, if scope string doesn't scope" do
27
27
  subject.scope = "first second third"
28
28
  subject.should_not have_scope("fourth")
29
29
  end
30
30
  end
31
-
31
+
32
32
  describe "a new instance" do
33
33
  subject do
34
34
  OAuth2::Provider.authorization_class.new
35
35
  end
36
-
36
+
37
37
  it "has no expiry time by default" do
38
38
  subject.expires_at.should be_nil
39
39
  end
40
-
40
+
41
41
  it "is never expired" do
42
42
  subject.should_not be_expired
43
43
  Timecop.travel(100.years.from_now)
@@ -85,7 +85,47 @@ describe OAuth2::Provider.authorization_class do
85
85
  end
86
86
  end
87
87
 
88
- describe "being revoked" do
88
+ describe ".allowing(client, owner, scope)" do
89
+ before :each do
90
+ @client = create_client
91
+ @owner = create_resource_owner
92
+ @scope = "any-scope"
93
+ @authorization = OAuth2::Provider.authorization_class.create!(
94
+ :client => @client,
95
+ :resource_owner => @owner,
96
+ :scope => @scope,
97
+ :expires_at => 1.hour.from_now
98
+ )
99
+ end
100
+
101
+ it "returns existing authorizations for the given client, owner and scope" do
102
+ results = OAuth2::Provider.authorization_class.allowing(@client, @owner, @scope).to_a
103
+ results.should eql([@authorization])
104
+ end
105
+
106
+ it "doesn't return authorizations where client is different" do
107
+ results = OAuth2::Provider.authorization_class.allowing(create_client, @owner, @scope).to_a
108
+ results.should eql([])
109
+ end
110
+
111
+ it "doesn't return authorizations where owner is different" do
112
+ results = OAuth2::Provider.authorization_class.allowing(@client, create_resource_owner, @scope).to_a
113
+ results.should eql([])
114
+ end
115
+
116
+ it "doesn't return authorizations where scope is different" do
117
+ results = OAuth2::Provider.authorization_class.allowing(@client, @owner, 'another-scope').to_a
118
+ results.should eql([])
119
+ end
120
+
121
+ it "doesn't return expired authorizations" do
122
+ Timecop.travel 4.hours.from_now
123
+ results = OAuth2::Provider.authorization_class.allowing(@client, @owner, @scope).to_a
124
+ results.should eql([])
125
+ end
126
+ end
127
+
128
+ describe "#revoke" do
89
129
  subject do
90
130
  OAuth2::Provider.authorization_class.create! :client => create_client
91
131
  end
@@ -72,4 +72,38 @@ describe OAuth2::Provider.client_class do
72
72
  subject.should == OAuth2::Provider.client_class.from_param(subject.oauth_identifier)
73
73
  end
74
74
  end
75
+
76
+ describe "#allow_redirection?(uri)" do
77
+ describe "on a client with an oauth_redirect_uri" do
78
+ subject do
79
+ OAuth2::Provider.client_class.new :name => 'client', :oauth_redirect_uri => "http://valid.example.com/any/path"
80
+ end
81
+
82
+ it "returns true if hosts match" do
83
+ subject.allow_redirection?("http://valid.example.com/another/path").should be_true
84
+ end
85
+
86
+ it "returns false if hosts are different match" do
87
+ subject.allow_redirection?("http://invalid.example.com/another/path").should be_false
88
+ end
89
+
90
+ it "returns false if the provided uri isn't a valid uri" do
91
+ subject.allow_redirection?("a-load-of-rubbish").should be_false
92
+ end
93
+ end
94
+
95
+ describe "on a client without an oauth_redirect_uri" do
96
+ subject do
97
+ OAuth2::Provider.client_class.new :name => 'client'
98
+ end
99
+
100
+ it "always returns true" do
101
+ subject.allow_redirection?("http://anything.example.com/any/path").should be_true
102
+ end
103
+
104
+ it "returns false if the provided uri isn't a valid uri" do
105
+ subject.allow_redirection?("a-load-of-rubbish").should be_false
106
+ end
107
+ end
108
+ end
75
109
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
3
+ describe OAuth2::Provider::Rack::AuthorizationCodeRequest do
4
4
  before :each do
5
5
  ExampleResourceOwner.destroy_all
6
6
  @client = OAuth2::Provider.client_class.create! :name => 'client'
@@ -14,7 +14,7 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
14
14
  describe "Validating requests" do
15
15
  action do |env|
16
16
  request = Rack::Request.new(env)
17
- env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(env, request.params)
17
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
18
18
  env['oauth2.authorization_request'].validate!
19
19
  successful_response
20
20
  end
@@ -34,7 +34,9 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
34
34
  get '/oauth/authorize', @valid_params.except(:client_id)
35
35
  end
36
36
 
37
- redirects_back_with_error 'invalid_request'
37
+ it "returns 400" do
38
+ response.status.should == 400
39
+ end
38
40
  end
39
41
 
40
42
  describe "Any request without a redirect_uri" do
@@ -62,13 +64,15 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
62
64
  get '/oauth/authorize', @valid_params.merge(:client_id => 'unknown')
63
65
  end
64
66
 
65
- redirects_back_with_error 'invalid_client'
67
+ it "returns 400" do
68
+ response.status.should == 400
69
+ end
66
70
  end
67
71
 
68
72
  describe "A request where the scope is declared invalid" do
69
73
  action do |env|
70
74
  request = Rack::Request.new(env)
71
- env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(env, request.params)
75
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
72
76
  env['oauth2.authorization_request'].validate!
73
77
  env['oauth2.authorization_request'].invalid_scope!
74
78
  successful_response
@@ -82,10 +86,58 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
82
86
  end
83
87
  end
84
88
 
89
+ describe "Intercepting invalid requests" do
90
+ action do |env|
91
+ request = Rack::Request.new(env)
92
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
93
+ begin
94
+ env['oauth2.authorization_request'].validate!
95
+ successful_response
96
+ rescue OAuth2::Provider::Rack::InvalidRequest => e
97
+ [418, {'Content-Type' => 'text/plain'}, e.to_s]
98
+ end
99
+ end
100
+
101
+ before :each do
102
+ get '/oauth/authorize', @valid_params.except(:client_id)
103
+ end
104
+
105
+ it "should return the specific response" do
106
+ response.status.should == 418
107
+ end
108
+ end
109
+
110
+ describe "When the client has a redirect_uri attribute" do
111
+ before :each do
112
+ @client = OAuth2::Provider.client_class.create! :name => 'client', :oauth_redirect_uri => "https://redirect.example.com/callback"
113
+ @valid_params = {
114
+ :client_id => @client.oauth_identifier,
115
+ :redirect_uri => "https://redirect.example.com/callback"
116
+ }
117
+ end
118
+
119
+ action do |env|
120
+ request = Rack::Request.new(env)
121
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
122
+ env['oauth2.authorization_request'].validate!
123
+ successful_response
124
+ end
125
+
126
+ it "returns a 400 if the redirect_uri parameter doesn't match hostnames" do
127
+ get '/oauth/authorize', @valid_params.merge(:redirect_uri => "https://evil.example.com/callback")
128
+ response.status.should == 400
129
+ end
130
+
131
+ it "returns a 200 if the redirect_uri parameter matches hostname but the path is different" do
132
+ get '/oauth/authorize', @valid_params.merge(:redirect_uri => "https://redirect.example.com/other_callback")
133
+ response.status.should == 200
134
+ end
135
+ end
136
+
85
137
  describe "Granting a code" do
86
138
  action do |env|
87
139
  request = Rack::Request.new(env)
88
- env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(env, request.params)
140
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
89
141
  env['oauth2.authorization_request'].grant! ExampleResourceOwner.first
90
142
  end
91
143
 
@@ -108,7 +160,7 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
108
160
  describe "Granting a code with a scope" do
109
161
  action do |env|
110
162
  request = Rack::Request.new(env)
111
- env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(env, request.params)
163
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
112
164
  env['oauth2.authorization_request'].grant! ExampleResourceOwner.first
113
165
  end
114
166
 
@@ -126,7 +178,7 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
126
178
  describe "Granting a code with custom authorization length" do
127
179
  action do |env|
128
180
  request = Rack::Request.new(env)
129
- env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(env, request.params)
181
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
130
182
  env['oauth2.authorization_request'].grant! ExampleResourceOwner.first, 5.years.from_now
131
183
  end
132
184
 
@@ -144,7 +196,7 @@ describe OAuth2::Provider::Rack::AuthorizationCodesSupport do
144
196
  describe "Denying a code" do
145
197
  action do |env|
146
198
  request = Rack::Request.new(env)
147
- env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(env, request.params)
199
+ env['oauth2.authorization_request'] ||= OAuth2::Provider::Rack::AuthorizationCodeRequest.new(request.params)
148
200
  env['oauth2.authorization_request'].deny!
149
201
  end
150
202
 
data/spec/schema.rb CHANGED
@@ -6,6 +6,7 @@ ActiveRecord::Schema.define(:version => 20110323171649) do
6
6
 
7
7
  create_table 'oauth_clients', :force => true do |t|
8
8
  t.string 'name'
9
+ t.string 'oauth_redirect_uri'
9
10
  t.string 'oauth_identifier', :null => false
10
11
  t.string 'oauth_secret', :null => false
11
12
  end
data/spec/spec_helper.rb CHANGED
@@ -14,7 +14,7 @@ require 'support/rack'
14
14
 
15
15
  RSpec.configure do |config|
16
16
  config.before :each do
17
- Timecop.freeze
17
+ Timecop.freeze 2001, 1, 1, 12
18
18
  end
19
19
 
20
20
  config.after :each do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth2-provider
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 16
10
- version: 0.0.16
9
+ - 17
10
+ version: 0.0.17
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tom Ward
@@ -15,28 +15,26 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-17 00:00:00 +01:00
18
+ date: 2011-05-31 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: activesupport
23
- prerelease: false
22
+ type: :runtime
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ~>
28
27
  - !ruby/object:Gem::Version
29
- hash: 5
28
+ hash: 7
30
29
  segments:
31
30
  - 3
32
31
  - 0
33
- - 1
34
- version: 3.0.1
35
- type: :runtime
32
+ version: "3.0"
36
33
  version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: addressable
34
+ name: activesupport
39
35
  prerelease: false
36
+ - !ruby/object:Gem::Dependency
37
+ type: :runtime
40
38
  requirement: &id002 !ruby/object:Gem::Requirement
41
39
  none: false
42
40
  requirements:
@@ -47,12 +45,28 @@ dependencies:
47
45
  - 2
48
46
  - 2
49
47
  version: "2.2"
50
- type: :runtime
51
48
  version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: rails
49
+ name: addressable
54
50
  prerelease: false
51
+ - !ruby/object:Gem::Dependency
52
+ type: :development
55
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ hash: 5
59
+ segments:
60
+ - 0
61
+ - 5
62
+ - 7
63
+ version: 0.5.7
64
+ version_requirements: *id003
65
+ name: rack-test
66
+ prerelease: false
67
+ - !ruby/object:Gem::Dependency
68
+ type: :development
69
+ requirement: &id004 !ruby/object:Gem::Requirement
56
70
  none: false
57
71
  requirements:
58
72
  - - ~>
@@ -63,12 +77,12 @@ dependencies:
63
77
  - 0
64
78
  - 1
65
79
  version: 3.0.1
66
- type: :development
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: rspec-rails
80
+ version_requirements: *id004
81
+ name: activerecord
70
82
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
83
+ - !ruby/object:Gem::Dependency
84
+ type: :development
85
+ requirement: &id005 !ruby/object:Gem::Requirement
72
86
  none: false
73
87
  requirements:
74
88
  - - ~>
@@ -79,12 +93,12 @@ dependencies:
79
93
  - 1
80
94
  - 0
81
95
  version: 2.1.0
82
- type: :development
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- name: rake
96
+ version_requirements: *id005
97
+ name: rspec
86
98
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
99
+ - !ruby/object:Gem::Dependency
100
+ type: :development
101
+ requirement: &id006 !ruby/object:Gem::Requirement
88
102
  none: false
89
103
  requirements:
90
104
  - - ~>
@@ -95,12 +109,12 @@ dependencies:
95
109
  - 8
96
110
  - 7
97
111
  version: 0.8.7
98
- type: :development
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: sqlite3-ruby
112
+ version_requirements: *id006
113
+ name: rake
102
114
  prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
115
+ - !ruby/object:Gem::Dependency
116
+ type: :development
117
+ requirement: &id007 !ruby/object:Gem::Requirement
104
118
  none: false
105
119
  requirements:
106
120
  - - ~>
@@ -111,12 +125,12 @@ dependencies:
111
125
  - 3
112
126
  - 1
113
127
  version: 1.3.1
114
- type: :development
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: timecop
128
+ version_requirements: *id007
129
+ name: sqlite3-ruby
118
130
  prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
131
+ - !ruby/object:Gem::Dependency
132
+ type: :development
133
+ requirement: &id008 !ruby/object:Gem::Requirement
120
134
  none: false
121
135
  requirements:
122
136
  - - ~>
@@ -127,12 +141,12 @@ dependencies:
127
141
  - 3
128
142
  - 4
129
143
  version: 0.3.4
130
- type: :development
131
- version_requirements: *id007
132
- - !ruby/object:Gem::Dependency
133
- name: yajl-ruby
144
+ version_requirements: *id008
145
+ name: timecop
134
146
  prerelease: false
135
- requirement: &id008 !ruby/object:Gem::Requirement
147
+ - !ruby/object:Gem::Dependency
148
+ type: :development
149
+ requirement: &id009 !ruby/object:Gem::Requirement
136
150
  none: false
137
151
  requirements:
138
152
  - - ~>
@@ -143,12 +157,12 @@ dependencies:
143
157
  - 7
144
158
  - 5
145
159
  version: 0.7.5
146
- type: :development
147
- version_requirements: *id008
148
- - !ruby/object:Gem::Dependency
149
- name: mongoid
160
+ version_requirements: *id009
161
+ name: yajl-ruby
150
162
  prerelease: false
151
- requirement: &id009 !ruby/object:Gem::Requirement
163
+ - !ruby/object:Gem::Dependency
164
+ type: :development
165
+ requirement: &id010 !ruby/object:Gem::Requirement
152
166
  none: false
153
167
  requirements:
154
168
  - - "="
@@ -161,12 +175,12 @@ dependencies:
161
175
  - rc
162
176
  - 6
163
177
  version: 2.0.0.rc.6
164
- type: :development
165
- version_requirements: *id009
166
- - !ruby/object:Gem::Dependency
167
- name: bson
178
+ version_requirements: *id010
179
+ name: mongoid
168
180
  prerelease: false
169
- requirement: &id010 !ruby/object:Gem::Requirement
181
+ - !ruby/object:Gem::Dependency
182
+ type: :development
183
+ requirement: &id011 !ruby/object:Gem::Requirement
170
184
  none: false
171
185
  requirements:
172
186
  - - "="
@@ -177,12 +191,12 @@ dependencies:
177
191
  - 2
178
192
  - 0
179
193
  version: 1.2.0
180
- type: :development
181
- version_requirements: *id010
182
- - !ruby/object:Gem::Dependency
183
- name: bson_ext
194
+ version_requirements: *id011
195
+ name: bson
184
196
  prerelease: false
185
- requirement: &id011 !ruby/object:Gem::Requirement
197
+ - !ruby/object:Gem::Dependency
198
+ type: :development
199
+ requirement: &id012 !ruby/object:Gem::Requirement
186
200
  none: false
187
201
  requirements:
188
202
  - - "="
@@ -193,24 +207,9 @@ dependencies:
193
207
  - 2
194
208
  - 0
195
209
  version: 1.2.0
196
- type: :development
197
- version_requirements: *id011
198
- - !ruby/object:Gem::Dependency
199
- name: sdoc
200
- prerelease: false
201
- requirement: &id012 !ruby/object:Gem::Requirement
202
- none: false
203
- requirements:
204
- - - ~>
205
- - !ruby/object:Gem::Version
206
- hash: 63
207
- segments:
208
- - 0
209
- - 2
210
- - 20
211
- version: 0.2.20
212
- type: :development
213
210
  version_requirements: *id012
211
+ name: bson_ext
212
+ prerelease: false
214
213
  description: OAuth2 Provider, extracted from api.hashblue.com
215
214
  email:
216
215
  - tom@popdog.net
@@ -312,7 +311,7 @@ files:
312
311
  - spec/models/client_spec.rb
313
312
  - spec/requests/access_tokens_controller_spec.rb
314
313
  - spec/requests/authentication_spec.rb
315
- - spec/requests/authorization_codes_support_spec.rb
314
+ - spec/requests/authorization_code_request_spec.rb
316
315
  - spec/schema.rb
317
316
  - spec/set_backend_env_to_mongoid.rb
318
317
  - spec/spec_helper.rb
@@ -362,7 +361,7 @@ test_files:
362
361
  - spec/models/client_spec.rb
363
362
  - spec/requests/access_tokens_controller_spec.rb
364
363
  - spec/requests/authentication_spec.rb
365
- - spec/requests/authorization_codes_support_spec.rb
364
+ - spec/requests/authorization_code_request_spec.rb
366
365
  - spec/schema.rb
367
366
  - spec/set_backend_env_to_mongoid.rb
368
367
  - spec/spec_helper.rb