omniauth-cas 1.0.4 → 1.1.0.beta.1

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTU0MmMyOWM1MWY0YzBiNjMzZDRkZmE4NTljYTA4NTc3M2NmM2FiYg==
4
+ Mjc3ZjA4OWRiNjhlNDgxMzcxNTEyYWIxODE1Y2U5ZWY2Y2U0YmU4MA==
5
5
  data.tar.gz: !binary |-
6
- YjM4MmU1MTAwNThmNjJkNWU2OTJiZjJiMTc5ZDNlYjM0ZDQ2M2E3ZQ==
6
+ YmE0ZjRhNzRkYmM5NTYwNGE1M2QwNjgxNGFjODAyZjk3MDk0MTE4ZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZTdkZjEzMDY4ODVjMzY1NDQ2MmUxZTAyMzRkMGUwNzcxYzAyOGM5MzBlNDZi
10
- ZjU1OTk0OWU1ODIzNTIwYTIxNWM5ZDEzNzFiY2UyODJhYzY3NDRkZmM5ODcy
11
- NTBlMGM5YWFhZWU1MDBlMTI2YWQ0NTRmODRkZjhiYmVmMjc2ZDI=
9
+ NWYwMGVjNWEzMzkzODlhOWEwNWY0MWExYTBiNWM2YjdlNGNlMDAyZjJlMjQx
10
+ YTdiZWRkMzJhODgwOTY2YjMzZTg2ZWZiOWVjYTNiN2NlMmUzZTNhYzFjZGYx
11
+ MGJiODI3OTdkMDBkMGM3YjA3MmU1YWFkNmQ0YTg0Y2E4NjAzYjI=
12
12
  data.tar.gz: !binary |-
13
- OTY0NjU1NTFhZGZmNjdlN2E2OTY5MjNkMTU0NDY5NWQ1ZjQ3N2RiZWFjNmZj
14
- MDA3MmY4M2U1MjMwOThkZmRhNzYwZDI5NzljYjRiYzk5YjY5MWFlNjBjYjY0
15
- NzBhNjE1OWViZjMzMGVmYzkzMWM5MTk5MGNmNjk1MTU3YjYxYWU=
13
+ YTkyYjcwZTQxMzE3NzNmYmFjOWE0ZjkyMDY4MzMxMjlhNDU1MTg2ZjQwYmFm
14
+ YzA2MzJkZGNlNjYzYmE2YjE3NjZiMTZiZGJkYzZkMzdlMzY3NjE1OWU5MjI1
15
+ MGYxZWQ1MDQ2NzhmNjUzNjVmNzJkMTc0OGJjMGIyOTYyN2MwOGM=
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Cas
3
- VERSION = '1.0.4'
3
+ VERSION = '1.1.0.beta.1'
4
4
  end
5
5
  end
@@ -139,6 +139,12 @@ module OmniAuth
139
139
  end.to_s
140
140
  end
141
141
 
142
+ # Adds support for custom callback_paths
143
+ # See: https://github.com/intridea/omniauth/issues/630
144
+ def callback_path
145
+ options[:callback_path].is_a?(String) ? options[:callback_path] : (custom_path(:callback_path) || custom_path(:request_path) || "#{path_prefix}/#{name}/callback")
146
+ end
147
+
142
148
  private
143
149
 
144
150
  # Deletes Hash pairs with `nil` values.
@@ -41,20 +41,15 @@ module OmniAuth
41
41
 
42
42
  {}.tap do |hash|
43
43
  node.children.each do |e|
44
- node_name = e.name.sub(/^cas:/, '')
45
44
  unless e.kind_of?(Nokogiri::XML::Text) ||
46
- node_name == 'proxies'
45
+ e.name == 'cas:proxies' ||
46
+ e.name == 'proxies'
47
47
  # There are no child elements
48
48
  if e.element_children.count == 0
49
- hash[node_name] = e.content
49
+ hash[e.name.sub(/^cas:/, '')] = e.content
50
50
  elsif e.element_children.count
51
- # JASIG style extra attributes
52
- if node_name == 'attributes'
53
- hash.merge! parse_user_info e
54
- else
55
- hash[node_name] = [] if hash[node_name].nil?
56
- hash[node_name].push parse_user_info e
57
- end
51
+ hash[e.name.sub(/^cas:/, '')] = [] if hash[e.name.sub(/^cas:/, '')].nil?
52
+ hash[e.name.sub(/^cas:/, '')].push parse_user_info e
58
53
  end
59
54
  end
60
55
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.version = Omniauth::Cas::VERSION
17
17
 
18
18
  gem.add_dependency 'omniauth', '~> 1.1.0'
19
- gem.add_dependency 'nokogiri', '~> 1.6'
19
+ gem.add_dependency 'nokogiri', '~> 1.5'
20
20
  gem.add_dependency 'addressable', '~> 2.3'
21
21
 
22
22
  gem.add_development_dependency 'rake', '~> 0.9'
@@ -81,84 +81,72 @@ describe OmniAuth::Strategies::CAS, type: :strategy do
81
81
  end
82
82
 
83
83
  describe 'GET /auth/cas/callback with a valid ticket' do
84
- shared_examples :successful_validation do
85
- before do
86
- stub_request(:get, /^http:\/\/cas.example.org:8080?\/serviceValidate\?([^&]+&)?ticket=593af/)
87
- .with { |request| @request_uri = request.uri.to_s }
88
- .to_return( body: File.read("spec/fixtures/#{xml_file_name}") )
89
-
90
- get "/auth/cas/callback?ticket=593af&url=#{return_url}"
91
- end
92
-
93
- it 'should strip the ticket parameter from the callback URL' do
94
- @request_uri.scan('ticket=').length.should == 1
95
- end
84
+ let(:return_url) { 'http://127.0.0.10/?some=parameter' }
96
85
 
97
- it 'should properly encode the service URL' do
98
- WebMock.should have_requested(:get, 'http://cas.example.org:8080/serviceValidate')
99
- .with(query: {
100
- ticket: '593af',
101
- service: 'http://example.org/auth/cas/callback?url=' + Rack::Utils.escape('http://127.0.0.10/?some=parameter')
102
- })
103
- end
86
+ before do
87
+ stub_request(:get, /^http:\/\/cas.example.org:8080?\/serviceValidate\?([^&]+&)?ticket=593af/)
88
+ .with { |request| @request_uri = request.uri.to_s }
89
+ .to_return( body: File.read('spec/fixtures/cas_success.xml') )
104
90
 
105
- context "request.env['omniauth.auth']" do
106
- subject { last_request.env['omniauth.auth'] }
91
+ get "/auth/cas/callback?ticket=593af&url=#{return_url}"
92
+ end
107
93
 
108
- it { should be_kind_of Hash }
94
+ it 'should strip the ticket parameter from the callback URL' do
95
+ @request_uri.scan('ticket=').length.should == 1
96
+ end
109
97
 
110
- its(:provider) { should == :cas }
98
+ it 'should properly encode the service URL' do
99
+ WebMock.should have_requested(:get, 'http://cas.example.org:8080/serviceValidate')
100
+ .with(query: {
101
+ ticket: '593af',
102
+ service: 'http://example.org/auth/cas/callback?url=' + Rack::Utils.escape('http://127.0.0.10/?some=parameter')
103
+ })
104
+ end
111
105
 
112
- its(:uid) { should == '54'}
106
+ context "request.env['omniauth.auth']" do
107
+ subject { last_request.env['omniauth.auth'] }
113
108
 
114
- context 'the info hash' do
115
- subject { last_request.env['omniauth.auth']['info'] }
109
+ it { should be_kind_of Hash }
116
110
 
117
- it { should have(6).items }
111
+ its(:provider) { should == :cas }
118
112
 
119
- its(:name) { should == 'Peter Segel' }
120
- its(:first_name) { should == 'Peter' }
121
- its(:last_name) { should == 'Segel' }
122
- its(:email) { should == 'psegel@intridea.com' }
123
- its(:location) { should == 'Washington, D.C.' }
124
- its(:image) { should == '/images/user.jpg' }
125
- its(:phone) { should == '555-555-5555' }
126
- end
113
+ its(:uid) { should == '54'}
127
114
 
128
- context 'the extra hash' do
129
- subject { last_request.env['omniauth.auth']['extra'] }
115
+ context 'the info hash' do
116
+ subject { last_request.env['omniauth.auth']['info'] }
130
117
 
131
- it { should have(3).items }
118
+ it { should have(6).items }
132
119
 
133
- its(:user) { should == 'psegel' }
134
- its(:employeeid) { should == '54' }
135
- its(:hire_date) { should == '2004-07-13' }
136
- end
120
+ its(:name) { should == 'Peter Segel' }
121
+ its(:first_name) { should == 'Peter' }
122
+ its(:last_name) { should == 'Segel' }
123
+ its(:email) { should == 'psegel@intridea.com' }
124
+ its(:location) { should == 'Washington, D.C.' }
125
+ its(:image) { should == '/images/user.jpg' }
126
+ its(:phone) { should == '555-555-5555' }
127
+ end
137
128
 
138
- context 'the credentials hash' do
139
- subject { last_request.env['omniauth.auth']['credentials'] }
129
+ context 'the extra hash' do
130
+ subject { last_request.env['omniauth.auth']['extra'] }
140
131
 
141
- it { should have(1).items }
132
+ it { should have(3).items }
142
133
 
143
- its(:ticket) { should == '593af' }
144
- end
134
+ its(:user) { should == 'psegel' }
135
+ its(:employeeid) { should == '54' }
136
+ its(:hire_date) { should == '2004-07-13' }
145
137
  end
146
138
 
147
- it 'should call through to the master app' do
148
- last_response.body.should == 'true'
149
- end
150
- end
139
+ context 'the credentials hash' do
140
+ subject { last_request.env['omniauth.auth']['credentials'] }
151
141
 
152
- let(:return_url) { 'http://127.0.0.10/?some=parameter' }
142
+ it { should have(1).items }
153
143
 
154
- context 'with JASIG flavored XML' do
155
- let(:xml_file_name) { 'cas_success_jasig.xml' }
156
- it_behaves_like :successful_validation
144
+ its(:ticket) { should == '593af' }
145
+ end
157
146
  end
158
147
 
159
- context 'with classic XML' do
160
- let(:xml_file_name) { 'cas_success.xml' }
161
- it_behaves_like :successful_validation
148
+ it 'should call through to the master app' do
149
+ last_response.body.should == 'true'
162
150
  end
163
151
  end
164
152
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-cas
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Lindahl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-10 00:00:00.000000000 Z
11
+ date: 2013-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '1.6'
33
+ version: '1.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '1.6'
40
+ version: '1.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: addressable
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -160,7 +160,6 @@ files:
160
160
  - omniauth-cas.gemspec
161
161
  - spec/fixtures/cas_failure.xml
162
162
  - spec/fixtures/cas_success.xml
163
- - spec/fixtures/cas_success_jasig.xml
164
163
  - spec/omniauth/strategies/cas/configuration_spec.rb
165
164
  - spec/omniauth/strategies/cas/service_ticket_validator_spec.rb
166
165
  - spec/omniauth/strategies/cas_spec.rb
@@ -179,9 +178,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
178
  version: '0'
180
179
  required_rubygems_version: !ruby/object:Gem::Requirement
181
180
  requirements:
182
- - - ! '>='
181
+ - - ! '>'
183
182
  - !ruby/object:Gem::Version
184
- version: '0'
183
+ version: 1.3.1
185
184
  requirements: []
186
185
  rubyforge_project:
187
186
  rubygems_version: 2.0.3
@@ -191,7 +190,6 @@ summary: CAS Strategy for OmniAuth
191
190
  test_files:
192
191
  - spec/fixtures/cas_failure.xml
193
192
  - spec/fixtures/cas_success.xml
194
- - spec/fixtures/cas_success_jasig.xml
195
193
  - spec/omniauth/strategies/cas/configuration_spec.rb
196
194
  - spec/omniauth/strategies/cas/service_ticket_validator_spec.rb
197
195
  - spec/omniauth/strategies/cas_spec.rb
@@ -1,16 +0,0 @@
1
- <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
2
- <cas:authenticationSuccess>
3
- <cas:user>psegel</cas:user>
4
- <cas:attributes>
5
- <cas:employeeid>54</cas:employeeid>
6
- <cas:first_name>P. Segel</cas:first_name>
7
- <cas:first_name>Peter</cas:first_name>
8
- <cas:last_name>Segel</cas:last_name>
9
- <cas:email>psegel@intridea.com</cas:email>
10
- <cas:location>Washington, D.C.</cas:location>
11
- <cas:image>/images/user.jpg</cas:image>
12
- <cas:phone>555-555-5555</cas:phone>
13
- <cas:hire_date>2004-07-13</cas:hire_date>
14
- </cas:attributes>
15
- </cas:authenticationSuccess>
16
- </cas:serviceResponse>