openid_connect 0.3.1 → 0.3.2

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/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openid_connect (0.3.0)
4
+ openid_connect (0.3.1)
5
5
  activemodel (>= 3)
6
6
  attr_required (>= 0.0.5)
7
7
  json (>= 1.4.3)
8
- json-jwt (>= 0.0.3)
8
+ json-jwt (>= 0.3.0)
9
9
  rack-oauth2 (>= 0.14.2)
10
10
  swd (>= 0.1.2)
11
11
  tzinfo
@@ -15,16 +15,16 @@ PATH
15
15
  GEM
16
16
  remote: http://rubygems.org/
17
17
  specs:
18
- activemodel (3.2.6)
19
- activesupport (= 3.2.6)
18
+ activemodel (3.2.8)
19
+ activesupport (= 3.2.8)
20
20
  builder (~> 3.0.0)
21
- activesupport (3.2.6)
21
+ activesupport (3.2.8)
22
22
  i18n (~> 0.6)
23
23
  multi_json (~> 1.0)
24
- addressable (2.2.8)
24
+ addressable (2.3.2)
25
25
  attr_required (0.0.5)
26
26
  bouncy-castle-java (1.5.0146.1)
27
- builder (3.0.0)
27
+ builder (3.0.3)
28
28
  configatron (2.9.1)
29
29
  yamler (>= 0.1.0)
30
30
  cover_me (1.2.0)
@@ -33,12 +33,13 @@ GEM
33
33
  crack (0.3.1)
34
34
  diff-lcs (1.1.3)
35
35
  hashie (1.2.0)
36
- httpclient (2.2.5)
37
- i18n (0.6.0)
36
+ httpclient (2.2.7)
37
+ i18n (0.6.1)
38
38
  jruby-openssl (0.7.7)
39
39
  bouncy-castle-java (>= 1.5.0146.1)
40
- json (1.7.3)
41
- json-jwt (0.1.0)
40
+ json (1.7.5)
41
+ json (1.7.5-java)
42
+ json-jwt (0.3.0)
42
43
  activesupport (>= 2.3)
43
44
  i18n
44
45
  json (>= 1.4.3)
@@ -51,22 +52,22 @@ GEM
51
52
  multi_json (1.3.6)
52
53
  polyglot (0.3.3)
53
54
  rack (1.4.1)
54
- rack-oauth2 (0.14.4)
55
+ rack-oauth2 (0.14.9)
55
56
  activesupport (>= 2.3)
56
57
  attr_required (>= 0.0.5)
57
58
  httpclient (>= 2.2.0.2)
58
59
  i18n
59
- json (>= 1.4.3)
60
+ multi_json (>= 1.3.6)
60
61
  rack (>= 1.1)
61
62
  rake (0.9.2.2)
62
- rspec (2.10.0)
63
- rspec-core (~> 2.10.0)
64
- rspec-expectations (~> 2.10.0)
65
- rspec-mocks (~> 2.10.0)
66
- rspec-core (2.10.1)
67
- rspec-expectations (2.10.0)
63
+ rspec (2.11.0)
64
+ rspec-core (~> 2.11.0)
65
+ rspec-expectations (~> 2.11.0)
66
+ rspec-mocks (~> 2.11.0)
67
+ rspec-core (2.11.1)
68
+ rspec-expectations (2.11.3)
68
69
  diff-lcs (~> 1.1.3)
69
- rspec-mocks (2.10.1)
70
+ rspec-mocks (2.11.3)
70
71
  swd (0.1.2)
71
72
  activesupport (>= 3)
72
73
  attr_required (>= 0.0.5)
@@ -78,12 +79,12 @@ GEM
78
79
  polyglot (>= 0.3.1)
79
80
  tzinfo (0.3.33)
80
81
  url_safe_base64 (0.2.1)
81
- validate_email (0.1.5)
82
+ validate_email (0.1.6)
82
83
  activemodel (>= 3.0)
83
84
  mail (>= 2.2.5)
84
85
  validate_url (0.2.0)
85
86
  activemodel (>= 3.0.0)
86
- webmock (1.8.7)
87
+ webmock (1.8.11)
87
88
  addressable (>= 2.2.7)
88
89
  crack (>= 0.1.7)
89
90
  yamler (0.1.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.3.2
@@ -2,10 +2,13 @@ module OpenIDConnect
2
2
  class ConnectObject
3
3
  include ActiveModel::Validations, AttrRequired, AttrOptional
4
4
 
5
+ attr_accessor :raw_attributes
6
+
5
7
  def initialize(attributes = {})
6
8
  all_attributes.each do |_attr_|
7
9
  self.send :"#{_attr_}=", attributes[_attr_]
8
10
  end
11
+ self.raw_attributes = attributes
9
12
  attr_missing!
10
13
  end
11
14
 
@@ -6,11 +6,11 @@ module OpenIDConnect
6
6
  class InvalidToken < Exception; end
7
7
 
8
8
  attr_required :iss, :user_id, :aud, :exp, :iat
9
- attr_optional :acr, :auth_time, :nonce, :at_hash, :c_hash
9
+ attr_optional :acr, :auth_time, :nonce, :user_jwk, :at_hash, :c_hash
10
10
 
11
11
  def initialize(attributes = {})
12
12
  super
13
- (all_attributes - [:exp, :iat, :auth_time]).each do |key|
13
+ (all_attributes - [:exp, :iat, :auth_time, :user_jwk]).each do |key|
14
14
  self.send "#{key}=", self.send(key).try(:to_s)
15
15
  end
16
16
  end
@@ -26,7 +26,31 @@ module OpenIDConnect
26
26
  include JWTnizable
27
27
  class << self
28
28
  def decode(jwt_string, key)
29
- new JSON::JWT.decode(jwt_string, key)
29
+ if key == :self_issued
30
+ decode_self_issued jwt_string
31
+ else
32
+ new JSON::JWT.decode jwt_string, key
33
+ end
34
+ end
35
+
36
+ def decode_self_issued(jwt_string)
37
+ jwt = JSON::JWT.decode jwt_string, :skip_verification
38
+ jwk = jwt[:user_jwk]
39
+ raise InvalidToken.new('Missing user_jwk') if jwk.blank?
40
+ public_key = JSON::JWK.decode jwk
41
+ user_id_base_string = case public_key
42
+ when OpenSSL::PKey::RSA
43
+ [jwk[:mod], jwk[:exp]].join
44
+ when OpenSSL::PKey::EC
45
+ raise NotImplementedError.new('Not Implemented Yet')
46
+ else
47
+ # Shouldn't reach here. All unknown algorithm error should occurs when decoding JWK
48
+ raise InvalidToken.new('Unknown Algorithm')
49
+ end
50
+ expected_user_id = UrlSafeBase64.encode64 OpenSSL::Digest::SHA256.digest(user_id_base_string)
51
+ raise InvalidToken.new('Invalid user_id') unless jwt[:user_id] == expected_user_id
52
+ jwt.verify public_key
53
+ new jwt
30
54
  end
31
55
  end
32
56
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_runtime_dependency "activemodel", ">= 3"
17
17
  s.add_runtime_dependency "validate_url"
18
18
  s.add_runtime_dependency "validate_email"
19
- s.add_runtime_dependency "json-jwt", ">= 0.0.3"
19
+ s.add_runtime_dependency "json-jwt", ">= 0.3.0"
20
20
  s.add_runtime_dependency "swd", ">= 0.1.2"
21
21
  s.add_runtime_dependency "rack-oauth2", ">= 0.14.2"
22
22
  s.add_development_dependency "rake", ">= 0.8"
@@ -56,7 +56,7 @@ describe OpenIDConnect::AccessToken do
56
56
  mock_json :get, endpoint, 'errors/invalid_request', :HTTP_AUTHORIZATION => 'Bearer access_token', :status => 400, :params => {
57
57
  :schema => 'openid'
58
58
  } do
59
- expect { request }.should raise_error OpenIDConnect::BadRequest
59
+ expect { request }.to raise_error OpenIDConnect::BadRequest
60
60
  end
61
61
  end
62
62
  end
@@ -66,7 +66,7 @@ describe OpenIDConnect::AccessToken do
66
66
  mock_json :get, endpoint, 'errors/invalid_access_token', :HTTP_AUTHORIZATION => 'Bearer access_token', :status => 401, :params => {
67
67
  :schema => 'openid'
68
68
  } do
69
- expect { request }.should raise_error OpenIDConnect::Unauthorized
69
+ expect { request }.to raise_error OpenIDConnect::Unauthorized
70
70
  end
71
71
  end
72
72
  end
@@ -76,7 +76,7 @@ describe OpenIDConnect::AccessToken do
76
76
  mock_json :get, endpoint, 'errors/insufficient_scope', :HTTP_AUTHORIZATION => 'Bearer access_token', :status => 403, :params => {
77
77
  :schema => 'openid'
78
78
  } do
79
- expect { request }.should raise_error OpenIDConnect::Forbidden
79
+ expect { request }.to raise_error OpenIDConnect::Forbidden
80
80
  end
81
81
  end
82
82
  end
@@ -86,7 +86,7 @@ describe OpenIDConnect::AccessToken do
86
86
  mock_json :get, endpoint, 'errors/unknown', :HTTP_AUTHORIZATION => 'Bearer access_token', :status => 500, :params => {
87
87
  :schema => 'openid'
88
88
  } do
89
- expect { request }.should raise_error OpenIDConnect::HttpError
89
+ expect { request }.to raise_error OpenIDConnect::HttpError
90
90
  end
91
91
  end
92
92
  end
@@ -56,7 +56,7 @@ describe OpenIDConnect::Client::Registrar do
56
56
  it do
57
57
  expect do
58
58
  instance
59
- end.should_not raise_error
59
+ end.not_to raise_error
60
60
  end
61
61
  it { should_not be_valid }
62
62
  end
@@ -69,7 +69,7 @@ describe OpenIDConnect::Client::Registrar do
69
69
  it do
70
70
  expect do
71
71
  instance
72
- end.should raise_error AttrRequired::AttrMissing
72
+ end.to raise_error AttrRequired::AttrMissing
73
73
  end
74
74
  end
75
75
 
@@ -208,7 +208,7 @@ describe OpenIDConnect::Client::Registrar do
208
208
  it do
209
209
  expect do
210
210
  instance.as_json
211
- end.should raise_error OpenIDConnect::ValidationFailed
211
+ end.to raise_error OpenIDConnect::ValidationFailed
212
212
  end
213
213
  end
214
214
  end
@@ -237,7 +237,7 @@ describe OpenIDConnect::Client::Registrar do
237
237
  }, :status => 400 do
238
238
  expect do
239
239
  instance.associate!
240
- end.should raise_error OpenIDConnect::Client::Registrar::RegistrationFailed
240
+ end.to raise_error OpenIDConnect::Client::Registrar::RegistrationFailed
241
241
  end
242
242
  end
243
243
  end
@@ -274,7 +274,7 @@ describe OpenIDConnect::Client::Registrar do
274
274
  }, :status => 400 do
275
275
  expect do
276
276
  instance.update!
277
- end.should raise_error OpenIDConnect::Client::Registrar::RegistrationFailed
277
+ end.to raise_error OpenIDConnect::Client::Registrar::RegistrationFailed
278
278
  end
279
279
  end
280
280
  end
@@ -308,7 +308,7 @@ describe OpenIDConnect::Client::Registrar do
308
308
  it do
309
309
  expect do
310
310
  instance.validate!
311
- end.should_not raise_error OpenIDConnect::ValidationFailed
311
+ end.not_to raise_error OpenIDConnect::ValidationFailed
312
312
  end
313
313
  end
314
314
 
@@ -321,7 +321,7 @@ describe OpenIDConnect::Client::Registrar do
321
321
  it do
322
322
  expect do
323
323
  instance.validate!
324
- end.should raise_error OpenIDConnect::ValidationFailed
324
+ end.to raise_error OpenIDConnect::ValidationFailed
325
325
  end
326
326
  end
327
327
  end
@@ -26,7 +26,7 @@ describe OpenIDConnect::Client do
26
26
  [:authorization_uri, :user_info_uri].each do |endpoint|
27
27
  describe endpoint do
28
28
  it do
29
- expect { client.send endpoint }.should raise_error 'No Host Info'
29
+ expect { client.send endpoint }.to raise_error 'No Host Info'
30
30
  end
31
31
  end
32
32
  end
@@ -109,7 +109,7 @@ describe OpenIDConnect::Client do
109
109
  mock_json :post, client.token_endpoint, 'access_token/invalid_json', :request_header => header_params, :params => protocol_params do
110
110
  expect do
111
111
  access_token
112
- end.should raise_error OpenIDConnect::Exception, 'Unknown Token Type'
112
+ end.to raise_error OpenIDConnect::Exception, 'Unknown Token Type'
113
113
  end
114
114
  end
115
115
  end
@@ -117,7 +117,7 @@ describe OpenIDConnect::Client do
117
117
  context 'otherwise' do
118
118
  it 'should raise Unexpected Token Type exception' do
119
119
  mock_json :post, client.token_endpoint, 'access_token/mac', :request_header => header_params, :params => protocol_params do
120
- expect { access_token }.should raise_error OpenIDConnect::Exception, 'Unexpected Token Type: mac'
120
+ expect { access_token }.to raise_error OpenIDConnect::Exception, 'Unexpected Token Type: mac'
121
121
  end
122
122
  end
123
123
  end
@@ -35,13 +35,13 @@ describe OpenIDConnect::ConnectObject do
35
35
  {:optional => 'Optional'}
36
36
  end
37
37
  it do
38
- expect { klass.new attributes }.should raise_error AttrRequired::AttrMissing
38
+ expect { klass.new attributes }.to raise_error AttrRequired::AttrMissing
39
39
  end
40
40
  end
41
41
 
42
42
  context 'otherwise' do
43
43
  it do
44
- expect { klass.new }.should raise_error AttrRequired::AttrMissing
44
+ expect { klass.new }.to raise_error AttrRequired::AttrMissing
45
45
  end
46
46
  end
47
47
  end
@@ -59,7 +59,7 @@ describe OpenIDConnect::ConnectObject do
59
59
  end
60
60
 
61
61
  it 'should raise OpenIDConnect::ValidationFailed with ActiveModel::Errors owner' do
62
- expect { instance.as_json }.should raise_error(OpenIDConnect::ValidationFailed) { |e|
62
+ expect { instance.as_json }.to raise_error(OpenIDConnect::ValidationFailed) { |e|
63
63
  e.message.should include 'Required is not included in the list'
64
64
  e.message.should include 'Required is too long (maximum is 10 characters)'
65
65
  e.object.errors.should be_a ActiveModel::Errors
@@ -80,7 +80,7 @@ describe OpenIDConnect::ConnectObject do
80
80
  end
81
81
 
82
82
  it 'should raise OpenIDConnect::ValidationFailed with ActiveModel::Errors owner' do
83
- expect { instance.validate! }.should raise_error(OpenIDConnect::ValidationFailed) { |e|
83
+ expect { instance.validate! }.to raise_error(OpenIDConnect::ValidationFailed) { |e|
84
84
  e.message.should include 'Required is not included in the list'
85
85
  e.message.should include 'Required is too long (maximum is 10 characters)'
86
86
  e.object.errors.should be_a ActiveModel::Errors
@@ -37,7 +37,7 @@ describe OpenIDConnect::Discovery::Principal::URI do
37
37
  describe 'error handling' do
38
38
  let(:identifier) { '**' }
39
39
  it do
40
- expect { uri }.should raise_error OpenIDConnect::Discovery::InvalidIdentifier
40
+ expect { uri }.to raise_error OpenIDConnect::Discovery::InvalidIdentifier
41
41
  end
42
42
  end
43
43
  end
@@ -26,7 +26,7 @@ describe OpenIDConnect::Discovery::Principal do
26
26
  context 'when discovery failed' do
27
27
  it do
28
28
  SWD.should_receive(:discover!).and_raise(SWD::Exception)
29
- expect { request }.should raise_error OpenIDConnect::Discovery::DiscoveryFailed
29
+ expect { request }.to raise_error OpenIDConnect::Discovery::DiscoveryFailed
30
30
  end
31
31
  end
32
32
  end
@@ -104,7 +104,7 @@ describe OpenIDConnect::RequestObject do
104
104
  it do
105
105
  expect do
106
106
  request_object.as_json
107
- end.should raise_error OpenIDConnect::ValidationFailed
107
+ end.to raise_error OpenIDConnect::ValidationFailed
108
108
  end
109
109
  end
110
110
  end
@@ -19,7 +19,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
19
19
  describe 'attributes' do
20
20
  subject { klass }
21
21
  its(:required_attributes) { should == [:iss, :user_id, :aud, :exp, :iat] }
22
- its(:optional_attributes) { should == [:acr, :auth_time, :nonce, :at_hash, :c_hash] }
22
+ its(:optional_attributes) { should == [:acr, :auth_time, :nonce, :user_jwk, :at_hash, :c_hash] }
23
23
  end
24
24
 
25
25
  describe '#verify!' do
@@ -39,7 +39,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
39
39
  :issuer => attributes[:iss],
40
40
  :client_id => attributes[:aud]
41
41
  )
42
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
42
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
43
43
  end
44
44
  end
45
45
  end
@@ -51,7 +51,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
51
51
  :issuer => 'invalid_issuer',
52
52
  :client_id => attributes[:aud]
53
53
  )
54
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
54
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
55
55
  end
56
56
  end
57
57
 
@@ -61,7 +61,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
61
61
  id_token.verify!(
62
62
  :client_id => attributes[:aud]
63
63
  )
64
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
64
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
65
65
  end
66
66
  end
67
67
 
@@ -72,7 +72,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
72
72
  :issuer => attributes[:iss],
73
73
  :client_id => 'invalid_client'
74
74
  )
75
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
75
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
76
76
  end
77
77
  end
78
78
 
@@ -82,7 +82,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
82
82
  id_token.verify!(
83
83
  :issuer => attributes[:iss]
84
84
  )
85
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
85
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
86
86
  end
87
87
  end
88
88
 
@@ -107,7 +107,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
107
107
  :client_id => attributes[:aud],
108
108
  :nonce => 'invalid_nonce'
109
109
  )
110
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
110
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
111
111
  end
112
112
  end
113
113
 
@@ -118,7 +118,7 @@ describe OpenIDConnect::ResponseObject::IdToken do
118
118
  :issuer => attributes[:iss],
119
119
  :client_id => attributes[:aud]
120
120
  )
121
- end.should raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
121
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken
122
122
  end
123
123
  end
124
124
  end
@@ -157,5 +157,53 @@ describe OpenIDConnect::ResponseObject::IdToken do
157
157
  its(key) { should == attributes[key] }
158
158
  end
159
159
  its(:exp) { should == attributes[:exp].to_i }
160
+
161
+ context 'when self-issued' do
162
+ context 'when valid' do
163
+ let(:self_issued) do
164
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlbGYtaXNzdWVkLm1lIiwidXNlcl9pZCI6IkN5amplQ0trLU9xSS1YcW5GYzduX1pSOG4xaXlLNFlIcXNzNkp1SHlnNkUiLCJhdWQiOiJ0YXBpZC50YXBpZGVudGl0eS5jb20iLCJleHAiOjEzNDkyNDc3ODAsImlhdCI6MTM0OTI0NDE4MCwidXNlcl9qd2siOnsiYWxnIjoiUlNBIiwibW9kIjoibWtra29uTXZuQkxiWkRCZE9lNkM3Ukk3T2xLbjVZazl0eTBSQ0NFa2E5TkVDVVhWRmJqaHdrVjlNeFpSekQ2Q3ZIZDQzUmU5ak5iRFFVQVloNm1peHZtdFFSODlDUFlMeWNvOXIzTlEySXpEZmVPZjlUbFpMUXhpOG9FSVBOeURyN1FoSHlpUTlBRkd6YUhNLW1DU1hCcTRnM0Z4Nko4U1d0MFBRSERoZV9MN3FURTJHbzA4NGRyZUtXMFZSazhBRkxrM2V3cVlvV0RQRXhjcFlNYWNNSUhnaFd1N0pRSG9xX0xId2hmdnk3cnN2MFh1QTR0ai1oNnhvaDhubUR6MjBfdUc5Wm9MZHJ0cE44ZHF1MTdOTDgwTmQ1cVotaHRwVUpSemUzVzdyN3F4Y0dwNEtzQnRhc0NqWlcyWGlyQlZ1eXU2bDNqc3JnTlB2S1NaZ2NpUGdRIiwiZXhwIjoiQVFBQiJ9fQ.gp7Yr3mT3oneZusYMOKB3_777QwJNrQlqiK4x7HpYreuPNbBYHOKo8Jsmqe8gCnrWcOtGHe2Flt1NvN_Yy-7TgVP9L8XyaM9KnWrVEPVCDlf2tIqIAd6MSOfWtiDsA--a7AHfg7o2HcxH3-V3JXS3LQJnzpKBHuaJJIYwj1_8W9sUXwljqNCmnCytrqkmIWocQazoAy5mvmUcpcTWGnSsiibQGk_eQTRjZaiouDDbHWi87IneVQ7UeuurPIYoVK6PWhj0894zcJEyJFWkf2UshgP1grGVO8FC6dvlF5dayt6aUYeGMrTEV8KL6FNYAB9dZKR7xDC4uOjumHTjvQFfA'
165
+ end
166
+
167
+ context 'when key == :self_issued' do
168
+ it do
169
+ expect do
170
+ klass.decode self_issued, :self_issued
171
+ end.not_to raise_error
172
+ end
173
+ end
174
+
175
+ context 'when key == public_key' do
176
+ it do
177
+ expect do
178
+ klass.decode self_issued, public_key
179
+ end.to raise_error JSON::JWS::VerificationFailed
180
+ end
181
+ end
182
+ end
183
+
184
+ context 'when invalid user_id' do
185
+ let(:self_issued) do
186
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlbGYtaXNzdWVkLm1lIiwidXNlcl9pZCI6ImludmFsaWRfdXNlcl9pZCIsImF1ZCI6InRhcGlkLnRhcGlkZW50aXR5LmNvbSIsImV4cCI6MTM0OTI0ODgxOCwiaWF0IjoxMzQ5MjQ1MjE4LCJ1c2VyX2p3ayI6eyJhbGciOiJSU0EiLCJtb2QiOiJta2trb25Ndm5CTGJaREJkT2U2QzdSSTdPbEtuNVlrOXR5MFJDQ0VrYTlORUNVWFZGYmpod2tWOU14WlJ6RDZDdkhkNDNSZTlqTmJEUVVBWWg2bWl4dm10UVI4OUNQWUx5Y285cjNOUTJJekRmZU9mOVRsWkxReGk4b0VJUE55RHI3UWhIeWlROUFGR3phSE0tbUNTWEJxNGczRng2SjhTV3QwUFFIRGhlX0w3cVRFMkdvMDg0ZHJlS1cwVlJrOEFGTGszZXdxWW9XRFBFeGNwWU1hY01JSGdoV3U3SlFIb3FfTEh3aGZ2eTdyc3YwWHVBNHRqLWg2eG9oOG5tRHoyMF91Rzlab0xkcnRwTjhkcXUxN05MODBOZDVxWi1odHBVSlJ6ZTNXN3I3cXhjR3A0S3NCdGFzQ2paVzJYaXJCVnV5dTZsM2pzcmdOUHZLU1pnY2lQZ1EiLCJleHAiOiJBUUFCIn19.JTIAhIrjbI5s4-1QelTveJYqFjHz2vMQrkRo---TLtSkSDL4IaBXxXabQm_hgXR_Rh80GV2nAD9BR7PSdH2v4BK-xBzHnVzOIfWGzbB-fySvwEF3AO0cQpy8v95no6R8cbVF6exzVmuC5kLesS3BCjoHjywl-fS1H9fUMhUwDS6OatVg4AC3guz0_9l-cM1JE4Ryko-zLAzAkE8cfvVYyH0UCHAQUcTd2T45JmW4_hzN37ziuTs-xKkQ4fZ6TLURS_Q0sxX2vNIhdP1QQWzBwHwxObFK1O_Zb00KVe7MCB7Uxfisz1FDlFgq0Z0QCrQHuVyFqHqcJQjvPh3ORv0_6g'
187
+ end
188
+
189
+ it do
190
+ expect do
191
+ klass.decode self_issued, :self_issued
192
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken, 'Invalid user_id'
193
+ end
194
+ end
195
+
196
+ context 'when no user_jwk' do
197
+ let(:self_issued) do
198
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlbGYtaXNzdWVkLm1lIiwidXNlcl9pZCI6IkN5amplQ0trLU9xSS1YcW5GYzduX1pSOG4xaXlLNFlIcXNzNkp1SHlnNkUiLCJhdWQiOiJ0YXBpZC50YXBpZGVudGl0eS5jb20iLCJleHAiOjEzNDkyNDg5NjAsImlhdCI6MTM0OTI0NTM2MH0.SyXFCTAAB0l29qxnfUxj5G217cQqVhCiPlQDCq_ZZmtZyGqM4eLI-5D2MPZTc905i10sbwKHTeKqwjhYki2pVOuU5n-N9duTlO64kimg8hAnwEJKsil9jvRPb5hCnc-5vRyXaRV3N1zYFurCEZFmVvXCg4ccKbA_viyuhIYtiMQPHOGY-ELFokfwsbEv11hi9d0kt89pfBMlDyEIZiEDYT0fEl-w7e8tPEk99rCzD_jkitTtdXv18_UsgeM2pDaO9G7_8wQYAX4ldHZjXSihKp2DuTY7edZpP4arYIFHPibtPVcKEnpmK-25mk9Ujo6k7N5kqz9SX6isktbE9-3W4Q'
199
+ end
200
+
201
+ it do
202
+ expect do
203
+ klass.decode self_issued, :self_issued
204
+ end.to raise_error OpenIDConnect::ResponseObject::IdToken::InvalidToken, 'Missing user_jwk'
205
+ end
206
+ end
207
+ end
160
208
  end
161
209
  end
@@ -50,7 +50,7 @@ describe Rack::OAuth2::Server::Authorize::Extension::CodeAndIdTokenAndToken do
50
50
  end
51
51
  end
52
52
  it do
53
- expect { response }.should raise_error AttrRequired::AttrMissing, "'access_token', 'code', 'id_token' required."
53
+ expect { response }.to raise_error AttrRequired::AttrMissing, "'access_token', 'code', 'id_token' required."
54
54
  end
55
55
  end
56
56
  end
@@ -47,7 +47,7 @@ describe Rack::OAuth2::Server::Authorize::Extension::CodeAndIdToken do
47
47
  end
48
48
  end
49
49
  it do
50
- expect { response }.should raise_error AttrRequired::AttrMissing, "'id_token' required."
50
+ expect { response }.to raise_error AttrRequired::AttrMissing, "'id_token' required."
51
51
  end
52
52
  end
53
53
  end
@@ -48,7 +48,7 @@ describe Rack::OAuth2::Server::Authorize::Extension::IdTokenAndToken do
48
48
  end
49
49
  end
50
50
  it do
51
- expect { response }.should raise_error AttrRequired::AttrMissing, "'id_token' required."
51
+ expect { response }.to raise_error AttrRequired::AttrMissing, "'id_token' required."
52
52
  end
53
53
  end
54
54
  end
@@ -43,7 +43,7 @@ describe Rack::OAuth2::Server::Authorize::Extension::IdToken do
43
43
  end
44
44
  end
45
45
  it do
46
- expect { response }.should raise_error AttrRequired::AttrMissing, "'id_token' required."
46
+ expect { response }.to raise_error AttrRequired::AttrMissing, "'id_token' required."
47
47
  end
48
48
  end
49
49
  end
@@ -6,7 +6,7 @@ describe Rack::OAuth2::Server::Resource::ErrorWithConnectExt do
6
6
 
7
7
  describe 'invalid_schema!' do
8
8
  it do
9
- expect { request.invalid_schema! }.should raise_error Rack::OAuth2::Server::Resource::BadRequest
9
+ expect { request.invalid_schema! }.to raise_error Rack::OAuth2::Server::Resource::BadRequest
10
10
  end
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openid_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-06 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -114,7 +114,7 @@ dependencies:
114
114
  requirements:
115
115
  - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
- version: 0.0.3
117
+ version: 0.3.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
- version: 0.0.3
125
+ version: 0.3.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: swd
128
128
  requirement: !ruby/object:Gem::Requirement