openid_connect 0.12.0 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3680ddb689fddf4c9acb2c53e70484ae8ff35ef4
4
- data.tar.gz: 56d09c9c222ad546aa0dddfb0b74aa76a48453cb
3
+ metadata.gz: 578c7069558b2b2d8de668f316f0282e19f439e0
4
+ data.tar.gz: f4231dc452dc98badea4a43df6764d4de4823fb7
5
5
  SHA512:
6
- metadata.gz: 8532c4c8a9c6b382d522bd86477cf05e1e27398f7a2f7f590158e6fe08fa3206fdd7cdb10de5bec32eecfddeb10062708fe8239b2f1da23817f7bcbe41b000c7
7
- data.tar.gz: f06a962a78730924277a2e86ba6d6d6283b3d33b4152c5d918ce584d62185d5af47d95dfcaeb2095aa5274cbf9df7a7c0239cdc2989a46fec5c2272fd24cdc99
6
+ metadata.gz: 9f6a3722dfe462d799e874d9218f9e783e8f8f298cba3d686c3fbebe5c35bcd8b25eb124dc6bb4b622b8a4cbfa390ec670409ed99f943573addf3ab5034aabbd
7
+ data.tar.gz: d4ac8a152776e4cf5a3190f60b203a7ae2bb4566ee2632da8c4d0e651c4503d90c5acbdcebe88f0035440737f893069d0d37e059dde8af3aa6ce3ece0abd0982
data/.travis.yml CHANGED
@@ -2,7 +2,6 @@ before_install:
2
2
  - gem install bundler
3
3
 
4
4
  rvm:
5
- - 2.0
6
- - 2.1
7
- - 2.2
8
- - 2.3.0
5
+ - 2.2.2
6
+ - 2.2.5
7
+ - 2.3.1
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.12.0
1
+ 1.0.0
@@ -9,6 +9,7 @@ module OpenIDConnect
9
9
 
10
10
  def authorization_uri(params = {})
11
11
  params[:scope] = setup_required_scope params[:scope]
12
+ params[:prompt] = Array(params[:prompt]).join(' ')
12
13
  super
13
14
  end
14
15
 
@@ -19,7 +20,7 @@ module OpenIDConnect
19
20
  private
20
21
 
21
22
  def setup_required_scope(scopes)
22
- _scopes_ = Array(scopes).collect(&:to_s).join(' ').split(' ')
23
+ _scopes_ = Array(scopes).join(' ').split(' ')
23
24
  _scopes_ << 'openid' unless _scopes_.include?('openid')
24
25
  _scopes_
25
26
  end
@@ -14,6 +14,7 @@ class Rack::OAuth2::Server::Authorize
14
14
  CONNECT_EXT_PARAMS.each do |attribute|
15
15
  self.send :"#{attribute}=", params[attribute.to_s]
16
16
  end
17
+ self.prompt = Array(prompt.to_s.split(' '))
17
18
  self.max_age = max_age.try(:to_i)
18
19
  end
19
20
 
@@ -8,7 +8,7 @@ module CryptoSpecHelper
8
8
  end
9
9
 
10
10
  def private_key
11
- @private_key ||= OpenSSL::PKey::RSA.new rsa_key.export(OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC'), 'pass-phrase'), 'pass-phrase'
11
+ @private_key ||= OpenSSL::PKey::RSA.new rsa_key.export(OpenSSL::Cipher.new('DES-EDE3-CBC'), 'pass-phrase'), 'pass-phrase'
12
12
  end
13
13
 
14
14
  def ec_key
@@ -35,10 +35,12 @@ describe OpenIDConnect::Client do
35
35
 
36
36
  describe '#authorization_uri' do
37
37
  let(:scope) { nil }
38
+ let(:prompt) { nil }
38
39
  let(:response_type) { nil }
39
40
  let(:query) do
40
41
  params = {
41
42
  scope: scope,
43
+ prompt: prompt,
42
44
  response_type: response_type
43
45
  }.reject do |k,v|
44
46
  v.blank?
@@ -97,6 +99,27 @@ describe OpenIDConnect::Client do
97
99
  it { should == 'openid' }
98
100
  end
99
101
  end
102
+
103
+ describe 'prompt' do
104
+ subject do
105
+ query[:prompt]
106
+ end
107
+
108
+ context 'when prompt is a scalar value' do
109
+ let(:prompt) { :login }
110
+ it { should == 'login' }
111
+ end
112
+
113
+ context 'when prompt is a space-delimited string' do
114
+ let(:prompt) { 'login consent' }
115
+ it { should == 'login consent' }
116
+ end
117
+
118
+ context 'when prompt is an array' do
119
+ let(:prompt) { [:login, :consent] }
120
+ it { should == 'login consent' }
121
+ end
122
+ end
100
123
  end
101
124
 
102
125
  describe '#access_token!' do
@@ -53,4 +53,15 @@ describe Rack::OAuth2::Server::Authorize::Extension::CodeAndIdTokenAndToken do
53
53
  expect { response }.to raise_error AttrRequired::AttrMissing, "'access_token', 'code', 'id_token' required."
54
54
  end
55
55
  end
56
+
57
+ context 'when error response' do
58
+ let(:env) { Rack::MockRequest.env_for("/authorize?client_id=client_id") }
59
+ let(:request) { Rack::OAuth2::Server::Authorize::Extension::CodeAndIdTokenAndToken::Request.new env }
60
+
61
+ it 'should set protocol_params_location = :fragment' do
62
+ expect { request.bad_request! }.to raise_error(Rack::OAuth2::Server::Authorize::BadRequest) { |e|
63
+ e.protocol_params_location.should == :fragment
64
+ }
65
+ end
66
+ end
56
67
  end
@@ -50,4 +50,15 @@ describe Rack::OAuth2::Server::Authorize::Extension::CodeAndIdToken do
50
50
  expect { response }.to raise_error AttrRequired::AttrMissing, "'id_token' required."
51
51
  end
52
52
  end
53
+
54
+ context 'when error response' do
55
+ let(:env) { Rack::MockRequest.env_for("/authorize?client_id=client_id") }
56
+ let(:request) { Rack::OAuth2::Server::Authorize::Extension::CodeAndIdToken::Request.new env }
57
+
58
+ it 'should set protocol_params_location = :fragment' do
59
+ expect { request.bad_request! }.to raise_error(Rack::OAuth2::Server::Authorize::BadRequest) { |e|
60
+ e.protocol_params_location.should == :fragment
61
+ }
62
+ end
63
+ end
53
64
  end
@@ -51,4 +51,15 @@ describe Rack::OAuth2::Server::Authorize::Extension::IdTokenAndToken do
51
51
  expect { response }.to raise_error AttrRequired::AttrMissing, "'id_token' required."
52
52
  end
53
53
  end
54
+
55
+ context 'when error response' do
56
+ let(:env) { Rack::MockRequest.env_for("/authorize?client_id=client_id") }
57
+ let(:request) { Rack::OAuth2::Server::Authorize::Extension::IdTokenAndToken::Request.new env }
58
+
59
+ it 'should set protocol_params_location = :fragment' do
60
+ expect { request.bad_request! }.to raise_error(Rack::OAuth2::Server::Authorize::BadRequest) { |e|
61
+ e.protocol_params_location.should == :fragment
62
+ }
63
+ end
64
+ end
54
65
  end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rack::OAuth2::Server::Authorize::RequestWithConnectParams do
4
+ let(:base_params) do
5
+ {
6
+ client_id: 'client_id',
7
+ redirect_uri: 'https://client.example.com/callback'
8
+ }
9
+ end
10
+ let(:env) { Rack::MockRequest.env_for("/authorize?#{base_params.to_query}&#{params.to_query}") }
11
+ let(:request) { Rack::OAuth2::Server::Authorize::Request.new env }
12
+ subject { request }
13
+
14
+ describe 'prompt' do
15
+ context 'when a space-delimited string given' do
16
+ let(:params) do
17
+ {prompt: 'login consent'}
18
+ end
19
+ its(:prompt) { should == ['login', 'consent']}
20
+ end
21
+
22
+ context 'when a single string given' do
23
+ let(:params) do
24
+ {prompt: 'login'}
25
+ end
26
+ its(:prompt) { should == ['login']}
27
+ end
28
+ end
29
+
30
+ describe 'max_age' do
31
+ context 'when numeric value given' do
32
+ let(:params) do
33
+ {max_age: '5'}
34
+ end
35
+ its(:max_age) { should == 5}
36
+ end
37
+
38
+ context 'when non-numeric string given' do
39
+ let(:params) do
40
+ {max_age: 'foo'}
41
+ end
42
+ its(:max_age) { should == 0}
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openid_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov matake
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-20 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -309,6 +309,7 @@ files:
309
309
  - spec/rack/oauth2/server/authorize/extension/code_and_id_token_spec.rb
310
310
  - spec/rack/oauth2/server/authorize/extension/id_token_and_token_spec.rb
311
311
  - spec/rack/oauth2/server/authorize/extension/id_token_spec.rb
312
+ - spec/rack/oauth2/server/authorize/request_with_connect_params_spec.rb
312
313
  - spec/rack/oauth2/server/token/authorization_code_spec.rb
313
314
  - spec/rack/oauth2/server/token/refresh_token_spec.rb
314
315
  - spec/spec_helper.rb
@@ -332,7 +333,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
332
333
  version: '0'
333
334
  requirements: []
334
335
  rubyforge_project:
335
- rubygems_version: 2.5.1
336
+ rubygems_version: 2.6.8
336
337
  signing_key:
337
338
  specification_version: 4
338
339
  summary: OpenID Connect Server & Client Library
@@ -380,6 +381,7 @@ test_files:
380
381
  - spec/rack/oauth2/server/authorize/extension/code_and_id_token_spec.rb
381
382
  - spec/rack/oauth2/server/authorize/extension/id_token_and_token_spec.rb
382
383
  - spec/rack/oauth2/server/authorize/extension/id_token_spec.rb
384
+ - spec/rack/oauth2/server/authorize/request_with_connect_params_spec.rb
383
385
  - spec/rack/oauth2/server/token/authorization_code_spec.rb
384
386
  - spec/rack/oauth2/server/token/refresh_token_spec.rb
385
387
  - spec/spec_helper.rb