openid_connect 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,4 +1,21 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/Gemfile.lock ADDED
@@ -0,0 +1,67 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ openid_connect (0.0.0)
5
+ activemodel
6
+ attr_required
7
+ rack-oauth2 (>= 0.9.0)
8
+ tzinfo
9
+ validate_email
10
+ validate_url
11
+
12
+ GEM
13
+ remote: http://rubygems.org/
14
+ specs:
15
+ activemodel (3.0.9)
16
+ activesupport (= 3.0.9)
17
+ builder (~> 2.1.2)
18
+ i18n (~> 0.5.0)
19
+ activesupport (3.0.9)
20
+ attr_required (0.0.3)
21
+ builder (2.1.2)
22
+ diff-lcs (1.1.2)
23
+ httpclient (2.2.1)
24
+ i18n (0.5.0)
25
+ json (1.5.3)
26
+ mail (2.3.0)
27
+ i18n (>= 0.4.0)
28
+ mime-types (~> 1.16)
29
+ treetop (~> 1.4.8)
30
+ mime-types (1.16)
31
+ polyglot (0.3.2)
32
+ rack (1.3.2)
33
+ rack-oauth2 (0.9.0)
34
+ activesupport (>= 2.3)
35
+ attr_required (>= 0.0.3)
36
+ httpclient (>= 2.2.0.2)
37
+ i18n
38
+ json (>= 1.4.3)
39
+ rack (>= 1.1)
40
+ rake (0.9.2)
41
+ rcov (0.9.10)
42
+ rspec (2.6.0)
43
+ rspec-core (~> 2.6.0)
44
+ rspec-expectations (~> 2.6.0)
45
+ rspec-mocks (~> 2.6.0)
46
+ rspec-core (2.6.4)
47
+ rspec-expectations (2.6.0)
48
+ diff-lcs (~> 1.1.2)
49
+ rspec-mocks (2.6.0)
50
+ treetop (1.4.10)
51
+ polyglot
52
+ polyglot (>= 0.3.1)
53
+ tzinfo (0.3.29)
54
+ validate_email (0.1.5)
55
+ activemodel (>= 3.0)
56
+ mail (>= 2.2.5)
57
+ validate_url (0.2.0)
58
+ activemodel (>= 3.0.0)
59
+
60
+ PLATFORMS
61
+ ruby
62
+
63
+ DEPENDENCIES
64
+ openid_connect!
65
+ rake (>= 0.8)
66
+ rcov (>= 0.9)
67
+ rspec (>= 2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.0.1
@@ -1,7 +1,5 @@
1
1
  require 'rack/oauth2'
2
- require 'rack/oauth2/server/authorize/extensions/id_token'
3
- require 'rack/oauth2/server/authorize/extensions/id_token_and_token'
2
+ require 'rack/oauth2/server/authorize/extension/id_token'
3
+ require 'rack/oauth2/server/authorize/extension/id_token_and_token'
4
4
 
5
- module OpenIDConnect
6
- # Your code goes here...
7
- end
5
+ require 'openid_connect/response_object'
@@ -0,0 +1,42 @@
1
+ require 'active_model'
2
+ require 'tzinfo'
3
+ require 'validate_url'
4
+ require 'validate_email'
5
+ require 'attr_required'
6
+ require 'attr_optional'
7
+
8
+ module OpenIDConnect
9
+ class ResponseObject
10
+ include ActiveModel::Validations, AttrRequired, AttrOptional
11
+
12
+ def initialize(attributes = {})
13
+ all_attriutes.each do |_attr_|
14
+ self.send :"#{_attr_}=", attributes[_attr_]
15
+ end
16
+ attr_missing!
17
+ end
18
+
19
+ def all_attriutes
20
+ required_attributes + optional_attributes
21
+ end
22
+
23
+ def require_at_least_one_attributes
24
+ all_blank = all_attriutes.all? do |key|
25
+ self.send(key).blank?
26
+ end
27
+ errors.add :base, 'At least one attribute is required' if all_blank
28
+ end
29
+
30
+ def as_json(options = {})
31
+ all_attriutes.inject({}) do |hash, _attr_|
32
+ hash.merge! _attr_ => self.send(_attr_)
33
+ end.delete_if do |key, value|
34
+ value.nil?
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ Dir[File.dirname(__FILE__) + '/response_object/*.rb'].each do |file|
41
+ require file
42
+ end
@@ -0,0 +1,13 @@
1
+ module OpenIDConnect
2
+ class ResponseObject
3
+ class IdToken < ResponseObject
4
+ attr_required :iss, :user_id, :aud, :exp
5
+ attr_optional :iso29115, :nonce, :issued_to
6
+
7
+ def to_jwt
8
+ # TODO
9
+ 'jwt_header.jwt_part2.jwt_part3'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ Dir[File.dirname(__FILE__) + '/user_info/*.rb'].each do |file|
2
+ require file
3
+ end
@@ -0,0 +1,47 @@
1
+ module OpenIDConnect
2
+ class ResponseObject
3
+ module UserInfo
4
+ class OpenID < ResponseObject
5
+ attr_optional :id, :name, :given_name, :family_name, :middle_name, :nickname
6
+
7
+ attr_optional :phone_number
8
+
9
+ attr_optional :verified, :gender, :zoneinfo, :locale
10
+ validates_inclusion_of :verified, :in => [true, false], :allow_nil => true
11
+ validates_inclusion_of :gender, :in => [:male, :female], :allow_nil => true
12
+ validates_inclusion_of :zoneinfo, :in => TZInfo::TimezoneProxy.all.collect(&:name), :allow_nil => true
13
+ # TODO: validate locale
14
+
15
+ attr_optional :birthday, :updated_time
16
+
17
+ attr_optional :profile, :picture, :website
18
+ validates :profile, :picture, :website, :url => true, :allow_nil => true
19
+
20
+ attr_optional :email
21
+ validates :email, :email => true, :allow_nil => true
22
+
23
+ attr_optional :address
24
+ validate :validate_address
25
+
26
+ validate :require_at_least_one_attributes
27
+
28
+ def validate_address
29
+ errors.add :address, 'cannot be blank' unless address.blank? || address.valid?
30
+ end
31
+
32
+ def address=(hash_or_address)
33
+ @address = case hash_or_address
34
+ when Hash
35
+ Address.new hash_or_address
36
+ when Address
37
+ hash_or_address
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ Dir[File.dirname(__FILE__) + '/open_id/*.rb'].each do |file|
46
+ require file
47
+ end
@@ -0,0 +1,12 @@
1
+ module OpenIDConnect
2
+ class ResponseObject
3
+ module UserInfo
4
+ class OpenID
5
+ class Address < ResponseObject
6
+ attr_optional :formatted, :street_address, :locality, :region, :postal_code, :country
7
+ validate :require_at_least_one_attributes
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -2,7 +2,7 @@ module Rack
2
2
  module OAuth2
3
3
  module Server
4
4
  class Authorize
5
- module Extensions
5
+ module Extension
6
6
  class IdToken < Abstract::Handler
7
7
  class << self
8
8
  def response_type_for?(response_type)
@@ -16,15 +16,28 @@ module Rack
16
16
  super
17
17
  end
18
18
 
19
- class Request < Authorize::Token::Request
19
+ class Request < Authorize::Request
20
20
  def initialize(env)
21
21
  super
22
22
  @response_type = :id_token
23
23
  attr_missing!
24
24
  end
25
+
26
+ def error_params_location
27
+ :fragment
28
+ end
25
29
  end
26
30
 
27
- class Response < Authorize::Token::Response
31
+ class Response < Authorize::Response
32
+ attr_required :id_token
33
+
34
+ def protocol_params
35
+ super.merge :id_token => id_token.to_jwt
36
+ end
37
+
38
+ def protocol_params_location
39
+ :fragment
40
+ end
28
41
  end
29
42
  end
30
43
  end
@@ -2,7 +2,7 @@ module Rack
2
2
  module OAuth2
3
3
  module Server
4
4
  class Authorize
5
- module Extensions
5
+ module Extension
6
6
  class IdTokenAndToken < Abstract::Handler
7
7
  class << self
8
8
  def response_type_for?(response_type)
@@ -25,6 +25,11 @@ module Rack
25
25
  end
26
26
 
27
27
  class Response < Authorize::Token::Response
28
+ attr_required :id_token
29
+
30
+ def protocol_params
31
+ super.merge :id_token => id_token.to_jwt
32
+ end
28
33
  end
29
34
  end
30
35
  end
@@ -10,6 +10,11 @@ Gem::Specification.new do |s|
10
10
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
11
11
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
12
  s.require_paths = ["lib"]
13
+ s.add_runtime_dependency "activemodel"
14
+ s.add_runtime_dependency "validate_url"
15
+ s.add_runtime_dependency "validate_email"
16
+ s.add_runtime_dependency "tzinfo"
17
+ s.add_runtime_dependency "attr_required"
13
18
  s.add_runtime_dependency "rack-oauth2", ">= 0.9.0"
14
19
  s.add_development_dependency "rake", ">= 0.8"
15
20
  s.add_development_dependency "rcov", ">= 0.9"
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenIDConnect::ResponseObject::IdToken do
4
+ let(:klass) { OpenIDConnect::ResponseObject::IdToken }
5
+
6
+ describe 'attributes' do
7
+ subject { klass }
8
+ its(:required_attributes) { should == [:iss, :user_id, :aud, :exp] }
9
+ its(:optional_attributes) { should == [:iso29115, :nonce, :issued_to] }
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenIDConnect::ResponseObject::UserInfo::OpenID::Address do
4
+ let(:klass) { OpenIDConnect::ResponseObject::UserInfo::OpenID::Address }
5
+
6
+ describe 'attributes' do
7
+ subject { klass }
8
+ its(:required_attributes) { should == [] }
9
+ its(:optional_attributes) { should == [:formatted, :street_address, :locality, :region, :postal_code, :country] }
10
+ end
11
+
12
+ describe 'validations' do
13
+ subject do
14
+ instance = klass.new attributes
15
+ instance.valid?
16
+ instance
17
+ end
18
+
19
+ context 'when all attributes are blank' do
20
+ let :attributes do
21
+ {}
22
+ end
23
+ its(:valid?) { should be_false }
24
+ its(:errors) { should include :base }
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,101 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenIDConnect::ResponseObject::UserInfo::OpenID do
4
+ let(:klass) { OpenIDConnect::ResponseObject::UserInfo::OpenID }
5
+ let(:instance) { klass.new attributes }
6
+ subject { instance }
7
+
8
+ describe 'attributes' do
9
+ subject { klass }
10
+ its(:required_attributes) { should == [] }
11
+ its(:optional_attributes) do
12
+ should == [
13
+ :id, :name, :given_name, :family_name, :middle_name, :nickname,
14
+ :phone_number,
15
+ :verified, :gender, :zoneinfo, :locale,
16
+ :birthday, :updated_time,
17
+ :profile, :picture, :website,
18
+ :email,
19
+ :address
20
+ ]
21
+ end
22
+ end
23
+
24
+ describe 'validations' do
25
+ subject do
26
+ _instance_ = instance
27
+ _instance_.valid?
28
+ _instance_
29
+ end
30
+
31
+ context 'when all attributes are blank' do
32
+ let :attributes do
33
+ {}
34
+ end
35
+ its(:valid?) { should be_false }
36
+ its(:errors) { should include :base }
37
+ end
38
+
39
+ [:verified, :gender, :zoneinfo].each do |one_of_list|
40
+ context "when #{one_of_list} is invalid" do
41
+ let :attributes do
42
+ {one_of_list => 'Out of List'}
43
+ end
44
+ its(:valid?) { should be_false }
45
+ its(:errors) { should include one_of_list }
46
+ end
47
+ end
48
+
49
+ context "when locale is invalid" do
50
+ it :TODO
51
+ end
52
+
53
+ [:profile, :picture, :website].each do |url|
54
+ context "when #{url} is invalid" do
55
+ let :attributes do
56
+ {url => 'Invalid'}
57
+ end
58
+ its(:valid?) { should be_false }
59
+ its(:errors) { should include url }
60
+ end
61
+ end
62
+
63
+ context 'when address is blank' do
64
+ let :attributes do
65
+ {:address => {}}
66
+ end
67
+ its(:valid?) { should be_false }
68
+ its(:errors) { should include :address }
69
+ end
70
+ end
71
+
72
+ describe '#address=' do
73
+ context 'when Hash is given' do
74
+ let :attributes do
75
+ {:address => {}}
76
+ end
77
+ its(:address) { should be_a OpenIDConnect::ResponseObject::UserInfo::OpenID::Address }
78
+ end
79
+
80
+ context 'when Address is given' do
81
+ let :attributes do
82
+ {:address => OpenIDConnect::ResponseObject::UserInfo::OpenID::Address.new}
83
+ end
84
+ its(:address) { should be_a OpenIDConnect::ResponseObject::UserInfo::OpenID::Address }
85
+ end
86
+ end
87
+
88
+ describe '#to_json' do
89
+ let :attributes do
90
+ {
91
+ :id => 'http://example.com/nov.matake#12345',
92
+ :address => {
93
+ :formatted => 'Tokyo, Japan'
94
+ }
95
+ }
96
+ end
97
+ its(:to_json) do
98
+ should == attributes.to_json
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenIDConnect::ResponseObject do
4
+ class OpenIDConnect::ResponseObject::SubClass < OpenIDConnect::ResponseObject
5
+ attr_required :required
6
+ attr_optional :optional
7
+ end
8
+
9
+ let(:klass) { OpenIDConnect::ResponseObject::SubClass }
10
+ subject { klass.new attributes }
11
+
12
+ context 'when required attributes are given' do
13
+ context 'when optional attributes are given' do
14
+ let :attributes do
15
+ {:required => 'Required', :optional => 'Optional'}
16
+ end
17
+ its(:required) { should == 'Required' }
18
+ its(:optional) { should == 'Optional' }
19
+ end
20
+
21
+ context 'otherwise' do
22
+ let :attributes do
23
+ {:required => 'Required'}
24
+ end
25
+ its(:required) { should == 'Required' }
26
+ its(:optional) { should == nil }
27
+ end
28
+ end
29
+
30
+ context 'otherwise' do
31
+ context 'when optional attributes are given' do
32
+ let :attributes do
33
+ {:optional => 'Optional'}
34
+ end
35
+ it do
36
+ expect { klass.new attributes }.should raise_error AttrRequired::AttrMissing
37
+ end
38
+ end
39
+
40
+ context 'otherwise' do
41
+ it do
42
+ expect { klass.new }.should raise_error AttrRequired::AttrMissing
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '#as_json' do
48
+ let :attributes do
49
+ {:required => 'Required', :optional => 'Optional'}
50
+ end
51
+ its(:as_json) do
52
+ should == {:required => 'Required', :optional => 'Optional'}
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rack::OAuth2::Server::Authorize::Extension::IdTokenAndToken do
4
+ let(:request) { Rack::MockRequest.new app }
5
+ let(:redirect_uri) { 'http://client.example.com/callback' }
6
+ let(:access_token) { 'access_token' }
7
+ let(:response) do
8
+ request.get("/?response_type=id_token%20token&client_id=client&redirect_uri=#{redirect_uri}")
9
+ end
10
+
11
+ context "when approved" do
12
+ subject { response }
13
+ let(:bearer_token) { Rack::OAuth2::AccessToken::Bearer.new(:access_token => access_token) }
14
+ let :app do
15
+ Rack::OAuth2::Server::Authorize.new do |request, response|
16
+ response.redirect_uri = redirect_uri
17
+ response.access_token = bearer_token
18
+ response.approve!
19
+ end
20
+ end
21
+ its(:status) { should == 302 }
22
+ its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
23
+
24
+ context 'when refresh_token is given' do
25
+ let :bearer_token do
26
+ Rack::OAuth2::AccessToken::Bearer.new(
27
+ :access_token => access_token,
28
+ :refresh_token => 'refresh'
29
+ )
30
+ end
31
+ its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
32
+ end
33
+ end
34
+
35
+ context 'when denied' do
36
+ let :app do
37
+ Rack::OAuth2::Server::Authorize.new do |request, response|
38
+ request.verify_redirect_uri! redirect_uri
39
+ request.access_denied!
40
+ end
41
+ end
42
+ it 'should redirect with error in fragment' do
43
+ response.status.should == 302
44
+ error_message = {
45
+ :error => :access_denied,
46
+ :error_description => Rack::OAuth2::Server::Authorize::ErrorMethods::DEFAULT_DESCRIPTION[:access_denied]
47
+ }
48
+ response.location.should == "#{redirect_uri}##{error_message.to_query}"
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rack::OAuth2::Server::Authorize::Extension::IdToken do
4
+ let(:request) { Rack::MockRequest.new app }
5
+ let(:redirect_uri) { 'http://client.example.com/callback' }
6
+ let(:access_token) { 'access_token' }
7
+ let(:response) do
8
+ request.get("/?response_type=id_token&client_id=client&redirect_uri=#{redirect_uri}")
9
+ end
10
+
11
+ context "when approved" do
12
+ subject { response }
13
+ let(:bearer_token) { Rack::OAuth2::AccessToken::Bearer.new(:access_token => access_token) }
14
+ let :app do
15
+ Rack::OAuth2::Server::Authorize.new do |request, response|
16
+ response.redirect_uri = redirect_uri
17
+ response.access_token = bearer_token
18
+ response.approve!
19
+ end
20
+ end
21
+ its(:status) { should == 302 }
22
+ its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
23
+
24
+ context 'when refresh_token is given' do
25
+ let :bearer_token do
26
+ Rack::OAuth2::AccessToken::Bearer.new(
27
+ :access_token => access_token,
28
+ :refresh_token => 'refresh'
29
+ )
30
+ end
31
+ its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
32
+ end
33
+ end
34
+
35
+ context 'when denied' do
36
+ let :app do
37
+ Rack::OAuth2::Server::Authorize.new do |request, response|
38
+ request.verify_redirect_uri! redirect_uri
39
+ request.access_denied!
40
+ end
41
+ end
42
+ it 'should redirect with error in fragment' do
43
+ response.status.should == 302
44
+ error_message = {
45
+ :error => :access_denied,
46
+ :error_description => Rack::OAuth2::Server::Authorize::ErrorMethods::DEFAULT_DESCRIPTION[:access_denied]
47
+ }
48
+ response.location.should == "#{redirect_uri}##{error_message.to_query}"
49
+ end
50
+ end
51
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: openid_connect
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.0
5
+ version: 0.0.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - nov matake
@@ -10,52 +10,107 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-11 00:00:00 Z
13
+ date: 2011-08-13 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rack-oauth2
16
+ name: activemodel
17
17
  prerelease: false
18
18
  requirement: &id001 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.0
23
+ version: "0"
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
27
- name: rake
27
+ name: validate_url
28
28
  prerelease: false
29
29
  requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: validate_email
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: tzinfo
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :runtime
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: attr_required
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ type: :runtime
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: rack-oauth2
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 0.9.0
79
+ type: :runtime
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: rake
83
+ prerelease: false
84
+ requirement: &id007 !ruby/object:Gem::Requirement
30
85
  none: false
31
86
  requirements:
32
87
  - - ">="
33
88
  - !ruby/object:Gem::Version
34
89
  version: "0.8"
35
90
  type: :development
36
- version_requirements: *id002
91
+ version_requirements: *id007
37
92
  - !ruby/object:Gem::Dependency
38
93
  name: rcov
39
94
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
95
+ requirement: &id008 !ruby/object:Gem::Requirement
41
96
  none: false
42
97
  requirements:
43
98
  - - ">="
44
99
  - !ruby/object:Gem::Version
45
100
  version: "0.9"
46
101
  type: :development
47
- version_requirements: *id003
102
+ version_requirements: *id008
48
103
  - !ruby/object:Gem::Dependency
49
104
  name: rspec
50
105
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
106
+ requirement: &id009 !ruby/object:Gem::Requirement
52
107
  none: false
53
108
  requirements:
54
109
  - - ">="
55
110
  - !ruby/object:Gem::Version
56
111
  version: "2"
57
112
  type: :development
58
- version_requirements: *id004
113
+ version_requirements: *id009
59
114
  description: OpenID Connect Server & Client Library
60
115
  email:
61
116
  - nov@matake.jp
@@ -68,12 +123,24 @@ extra_rdoc_files: []
68
123
  files:
69
124
  - .gitignore
70
125
  - Gemfile
126
+ - Gemfile.lock
71
127
  - Rakefile
72
128
  - VERSION
73
129
  - lib/openid_connect.rb
74
- - lib/rack/oauth2/server/authorize/extensions/id_token.rb
75
- - lib/rack/oauth2/server/authorize/extensions/id_token_and_token.rb
130
+ - lib/openid_connect/response_object.rb
131
+ - lib/openid_connect/response_object/id_token.rb
132
+ - lib/openid_connect/response_object/user_info.rb
133
+ - lib/openid_connect/response_object/user_info/open_id.rb
134
+ - lib/openid_connect/response_object/user_info/open_id/address.rb
135
+ - lib/rack/oauth2/server/authorize/extension/id_token.rb
136
+ - lib/rack/oauth2/server/authorize/extension/id_token_and_token.rb
76
137
  - openid_connect.gemspec
138
+ - spec/openid_connect/response_object/id_token_spec.rb
139
+ - spec/openid_connect/response_object/user_info/open_id/address_spec.rb
140
+ - spec/openid_connect/response_object/user_info/open_id_spec.rb
141
+ - spec/openid_connect/response_object_spec.rb
142
+ - spec/rack/oauth2/server/authorize/extension/id_token_and_token_spec.rb
143
+ - spec/rack/oauth2/server/authorize/extension/id_token_spec.rb
77
144
  - spec/spec_helper.rb
78
145
  homepage: https://github.com/nov/openid_connect
79
146
  licenses: []
@@ -103,4 +170,10 @@ signing_key:
103
170
  specification_version: 3
104
171
  summary: OpenID Connect Server & Client Library
105
172
  test_files:
173
+ - spec/openid_connect/response_object/id_token_spec.rb
174
+ - spec/openid_connect/response_object/user_info/open_id/address_spec.rb
175
+ - spec/openid_connect/response_object/user_info/open_id_spec.rb
176
+ - spec/openid_connect/response_object_spec.rb
177
+ - spec/rack/oauth2/server/authorize/extension/id_token_and_token_spec.rb
178
+ - spec/rack/oauth2/server/authorize/extension/id_token_spec.rb
106
179
  - spec/spec_helper.rb