oa-enterprise 0.2.3 → 0.2.4
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/.gemtest +0 -0
- data/.rspec +3 -0
- data/.yardopts +4 -0
- data/Gemfile +3 -0
- data/Rakefile +6 -0
- data/oa-enterprise.gemspec +29 -0
- data/spec/fixtures/cas_failure.xml +4 -0
- data/spec/fixtures/cas_success.xml +8 -0
- data/spec/omniauth/strategies/cas_spec.rb +94 -0
- data/spec/spec_helper.rb +17 -0
- metadata +70 -69
data/.gemtest
ADDED
File without changes
|
data/.rspec
ADDED
data/.yardopts
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../../omniauth/lib/omniauth/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.add_runtime_dependency 'addressable', '2.2.4'
|
6
|
+
gem.add_runtime_dependency 'oa-core', Omniauth::VERSION.dup
|
7
|
+
gem.add_runtime_dependency 'nokogiri', '~> 1.4.2'
|
8
|
+
gem.add_runtime_dependency 'net-ldap', '~> 0.1.1'
|
9
|
+
gem.add_runtime_dependency 'rubyntlm', '~> 0.1.1'
|
10
|
+
gem.add_runtime_dependency 'pyu-ruby-sasl', '~> 0.0.3.1'
|
11
|
+
gem.add_development_dependency 'simplecov', '~> 0.4'
|
12
|
+
gem.add_development_dependency 'rack-test', '~> 0.5'
|
13
|
+
gem.add_development_dependency 'rake', '~> 0.8'
|
14
|
+
gem.add_development_dependency 'rspec', '~> 2.5'
|
15
|
+
gem.add_development_dependency 'webmock', '~> 1.6'
|
16
|
+
gem.add_development_dependency 'yard', '~> 0.6'
|
17
|
+
gem.name = 'oa-enterprise'
|
18
|
+
gem.version = Omniauth::VERSION.dup
|
19
|
+
gem.summary = %q{Enterprise strategies for OmniAuth.}
|
20
|
+
gem.description = %q{Enterprise strategies for OmniAuth.}
|
21
|
+
gem.email = ['james.a.rosen@gmail.com', 'ping@intridea.com', 'michael@intridea.com', 'sferik@gmail.com']
|
22
|
+
gem.homepage = 'http://github.com/intridea/omniauth'
|
23
|
+
gem.authors = ['James A. Rosen', 'Ping Yu', 'Michael Bleigh', 'Erik Michaels-Ober']
|
24
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
25
|
+
gem.files = `git ls-files`.split("\n")
|
26
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
27
|
+
gem.require_paths = ['lib']
|
28
|
+
gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if gem.respond_to? :required_rubygems_version=
|
29
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
|
2
|
+
<cas:authenticationSuccess>
|
3
|
+
<cas:user>psegel</cas:user>
|
4
|
+
<cas:first-name>Peter</cas:first-name>
|
5
|
+
<cas:last-name>Segel</cas:last-name>
|
6
|
+
<hire-date>2004-07-13</hire-date>
|
7
|
+
</cas:authenticationSuccess>
|
8
|
+
</cas:serviceResponse>
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
describe OmniAuth::Strategies::CAS, :type => :strategy do
|
5
|
+
|
6
|
+
include OmniAuth::Test::StrategyTestCase
|
7
|
+
|
8
|
+
def strategy
|
9
|
+
@cas_server ||= 'https://cas.example.org'
|
10
|
+
[OmniAuth::Strategies::CAS, {:cas_server => @cas_server}]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'GET /auth/cas' do
|
14
|
+
before do
|
15
|
+
get '/auth/cas'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should redirect to the CAS server' do
|
19
|
+
last_response.should be_redirect
|
20
|
+
return_to = CGI.escape(last_request.url + '/callback')
|
21
|
+
last_response.headers['Location'].should == @cas_server + '/login?service=' + return_to
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'GET /auth/cas/callback without a ticket' do
|
26
|
+
before do
|
27
|
+
get '/auth/cas/callback'
|
28
|
+
end
|
29
|
+
it 'should fail' do
|
30
|
+
last_response.should be_redirect
|
31
|
+
last_response.headers['Location'].should =~ /no_ticket/
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'GET /auth/cas/callback with an invalid ticket' do
|
36
|
+
before do
|
37
|
+
stub_request(:get, /^https:\/\/cas.example.org(:443)?\/serviceValidate\?([^&]+&)?ticket=9391d/).
|
38
|
+
to_return(:body => File.read(File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'cas_failure.xml')))
|
39
|
+
get '/auth/cas/callback?ticket=9391d'
|
40
|
+
end
|
41
|
+
it 'should fail' do
|
42
|
+
last_response.should be_redirect
|
43
|
+
last_response.headers['Location'].should =~ /invalid_ticket/
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'GET /auth/cas/callback with a valid ticket' do
|
48
|
+
before do
|
49
|
+
stub_request(:get, /^https:\/\/cas.example.org(:443)?\/serviceValidate\?([^&]+&)?ticket=593af/).
|
50
|
+
with { |request| @request_uri = request.uri.to_s }.
|
51
|
+
to_return(:body => File.read(File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'cas_success.xml')))
|
52
|
+
get '/auth/cas/callback?ticket=593af'
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should strip the ticket parameter from the callback URL before sending it to the CAS server' do
|
56
|
+
@request_uri.scan('ticket=').length.should == 1
|
57
|
+
end
|
58
|
+
|
59
|
+
sets_an_auth_hash
|
60
|
+
sets_provider_to 'cas'
|
61
|
+
sets_uid_to 'psegel'
|
62
|
+
|
63
|
+
it 'should set additional user information' do
|
64
|
+
extra = (last_request.env['omniauth.auth'] || {})['extra']
|
65
|
+
extra.should be_kind_of(Hash)
|
66
|
+
extra['first-name'].should == 'Peter'
|
67
|
+
extra['last-name'].should == 'Segel'
|
68
|
+
extra['hire-date'].should == '2004-07-13'
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should call through to the master app' do
|
72
|
+
last_response.body.should == 'true'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
unless RUBY_VERSION =~ /^1\.8\.\d$/
|
77
|
+
describe 'GET /auth/cas/callback with a valid ticket and gzipped response from the server on ruby >1.8' do
|
78
|
+
before do
|
79
|
+
zipped = StringIO.new
|
80
|
+
Zlib::GzipWriter.wrap zipped do |io|
|
81
|
+
io.write File.read(File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'cas_success.xml'))
|
82
|
+
end
|
83
|
+
stub_request(:get, /^https:\/\/cas.example.org(:443)?\/serviceValidate\?([^&]+&)?ticket=593af/).
|
84
|
+
with { |request| @request_uri = request.uri.to_s }.
|
85
|
+
to_return(:body => zipped.string, :headers => { 'content-encoding' => 'gzip' })
|
86
|
+
get '/auth/cas/callback?ticket=593af'
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should call through to the master app when response is gzipped' do
|
90
|
+
last_response.body.should == 'true'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
require 'rspec'
|
4
|
+
require 'rspec/autorun'
|
5
|
+
require 'webmock/rspec'
|
6
|
+
require 'rack/test'
|
7
|
+
require 'omniauth/core'
|
8
|
+
require 'omniauth/test'
|
9
|
+
require 'omniauth/enterprise'
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.include WebMock::API
|
13
|
+
config.include Rack::Test::Methods
|
14
|
+
config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
|
15
|
+
end
|
16
|
+
|
17
|
+
WebMock.disable_net_connect!
|
metadata
CHANGED
@@ -2,53 +2,55 @@
|
|
2
2
|
name: oa-enterprise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James A. Rosen
|
9
9
|
- Ping Yu
|
10
|
+
- Michael Bleigh
|
11
|
+
- Erik Michaels-Ober
|
10
12
|
autorequire:
|
11
13
|
bindir: bin
|
12
14
|
cert_chain: []
|
13
15
|
|
14
|
-
date: 2011-04-
|
15
|
-
default_executable:
|
16
|
+
date: 2011-04-22 00:00:00 Z
|
16
17
|
dependencies:
|
17
18
|
- !ruby/object:Gem::Dependency
|
18
|
-
name:
|
19
|
+
name: addressable
|
20
|
+
prerelease: false
|
19
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
22
|
none: false
|
21
23
|
requirements:
|
22
24
|
- - "="
|
23
25
|
- !ruby/object:Gem::Version
|
24
|
-
version:
|
26
|
+
version: 2.2.4
|
25
27
|
type: :runtime
|
26
|
-
prerelease: false
|
27
28
|
version_requirements: *id001
|
28
29
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
30
|
+
name: oa-core
|
31
|
+
prerelease: false
|
30
32
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
33
|
none: false
|
32
34
|
requirements:
|
33
|
-
- -
|
35
|
+
- - "="
|
34
36
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
37
|
+
version: 0.2.4
|
36
38
|
type: :runtime
|
37
|
-
prerelease: false
|
38
39
|
version_requirements: *id002
|
39
40
|
- !ruby/object:Gem::Dependency
|
40
|
-
name:
|
41
|
+
name: nokogiri
|
42
|
+
prerelease: false
|
41
43
|
requirement: &id003 !ruby/object:Gem::Requirement
|
42
44
|
none: false
|
43
45
|
requirements:
|
44
46
|
- - ~>
|
45
47
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
48
|
+
version: 1.4.2
|
47
49
|
type: :runtime
|
48
|
-
prerelease: false
|
49
50
|
version_requirements: *id003
|
50
51
|
- !ruby/object:Gem::Dependency
|
51
|
-
name:
|
52
|
+
name: net-ldap
|
53
|
+
prerelease: false
|
52
54
|
requirement: &id004 !ruby/object:Gem::Requirement
|
53
55
|
none: false
|
54
56
|
requirements:
|
@@ -56,109 +58,101 @@ dependencies:
|
|
56
58
|
- !ruby/object:Gem::Version
|
57
59
|
version: 0.1.1
|
58
60
|
type: :runtime
|
59
|
-
prerelease: false
|
60
61
|
version_requirements: *id004
|
61
62
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
63
|
+
name: rubyntlm
|
64
|
+
prerelease: false
|
63
65
|
requirement: &id005 !ruby/object:Gem::Requirement
|
64
66
|
none: false
|
65
67
|
requirements:
|
66
68
|
- - ~>
|
67
69
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
70
|
+
version: 0.1.1
|
69
71
|
type: :runtime
|
70
|
-
prerelease: false
|
71
72
|
version_requirements: *id005
|
72
73
|
- !ruby/object:Gem::Dependency
|
73
|
-
name:
|
74
|
+
name: pyu-ruby-sasl
|
75
|
+
prerelease: false
|
74
76
|
requirement: &id006 !ruby/object:Gem::Requirement
|
75
77
|
none: false
|
76
78
|
requirements:
|
77
|
-
- -
|
79
|
+
- - ~>
|
78
80
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.
|
80
|
-
type: :
|
81
|
-
prerelease: false
|
81
|
+
version: 0.0.3.1
|
82
|
+
type: :runtime
|
82
83
|
version_requirements: *id006
|
83
84
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
85
|
+
name: simplecov
|
86
|
+
prerelease: false
|
85
87
|
requirement: &id007 !ruby/object:Gem::Requirement
|
86
88
|
none: false
|
87
89
|
requirements:
|
88
|
-
- -
|
90
|
+
- - ~>
|
89
91
|
- !ruby/object:Gem::Version
|
90
|
-
version: "0"
|
92
|
+
version: "0.4"
|
91
93
|
type: :development
|
92
|
-
prerelease: false
|
93
94
|
version_requirements: *id007
|
94
95
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
96
|
+
name: rack-test
|
97
|
+
prerelease: false
|
96
98
|
requirement: &id008 !ruby/object:Gem::Requirement
|
97
99
|
none: false
|
98
100
|
requirements:
|
99
101
|
- - ~>
|
100
102
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0.
|
103
|
+
version: "0.5"
|
102
104
|
type: :development
|
103
|
-
prerelease: false
|
104
105
|
version_requirements: *id008
|
105
106
|
- !ruby/object:Gem::Dependency
|
106
|
-
name:
|
107
|
+
name: rake
|
108
|
+
prerelease: false
|
107
109
|
requirement: &id009 !ruby/object:Gem::Requirement
|
108
110
|
none: false
|
109
111
|
requirements:
|
110
112
|
- - ~>
|
111
113
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
114
|
+
version: "0.8"
|
113
115
|
type: :development
|
114
|
-
prerelease: false
|
115
116
|
version_requirements: *id009
|
116
117
|
- !ruby/object:Gem::Dependency
|
117
|
-
name:
|
118
|
+
name: rspec
|
119
|
+
prerelease: false
|
118
120
|
requirement: &id010 !ruby/object:Gem::Requirement
|
119
121
|
none: false
|
120
122
|
requirements:
|
121
123
|
- - ~>
|
122
124
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
125
|
+
version: "2.5"
|
124
126
|
type: :development
|
125
|
-
prerelease: false
|
126
127
|
version_requirements: *id010
|
127
128
|
- !ruby/object:Gem::Dependency
|
128
|
-
name:
|
129
|
+
name: webmock
|
130
|
+
prerelease: false
|
129
131
|
requirement: &id011 !ruby/object:Gem::Requirement
|
130
132
|
none: false
|
131
133
|
requirements:
|
132
134
|
- - ~>
|
133
135
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
136
|
+
version: "1.6"
|
135
137
|
type: :development
|
136
|
-
prerelease: false
|
137
138
|
version_requirements: *id011
|
138
139
|
- !ruby/object:Gem::Dependency
|
139
|
-
name:
|
140
|
+
name: yard
|
141
|
+
prerelease: false
|
140
142
|
requirement: &id012 !ruby/object:Gem::Requirement
|
141
143
|
none: false
|
142
144
|
requirements:
|
143
145
|
- - ~>
|
144
146
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
147
|
+
version: "0.6"
|
146
148
|
type: :development
|
147
|
-
prerelease: false
|
148
149
|
version_requirements: *id012
|
149
|
-
- !ruby/object:Gem::Dependency
|
150
|
-
name: evernote
|
151
|
-
requirement: &id013 !ruby/object:Gem::Requirement
|
152
|
-
none: false
|
153
|
-
requirements:
|
154
|
-
- - ~>
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
version: 0.9.0
|
157
|
-
type: :development
|
158
|
-
prerelease: false
|
159
|
-
version_requirements: *id013
|
160
150
|
description: Enterprise strategies for OmniAuth.
|
161
|
-
email:
|
151
|
+
email:
|
152
|
+
- james.a.rosen@gmail.com
|
153
|
+
- ping@intridea.com
|
154
|
+
- michael@intridea.com
|
155
|
+
- sferik@gmail.com
|
162
156
|
executables: []
|
163
157
|
|
164
158
|
extensions: []
|
@@ -166,16 +160,25 @@ extensions: []
|
|
166
160
|
extra_rdoc_files: []
|
167
161
|
|
168
162
|
files:
|
163
|
+
- .gemtest
|
164
|
+
- .rspec
|
165
|
+
- .yardopts
|
166
|
+
- Gemfile
|
167
|
+
- LICENSE
|
168
|
+
- README.rdoc
|
169
|
+
- Rakefile
|
169
170
|
- lib/oa-enterprise.rb
|
170
171
|
- lib/omniauth/enterprise.rb
|
172
|
+
- lib/omniauth/strategies/cas.rb
|
171
173
|
- lib/omniauth/strategies/cas/configuration.rb
|
172
174
|
- lib/omniauth/strategies/cas/service_ticket_validator.rb
|
173
|
-
- lib/omniauth/strategies/cas.rb
|
174
|
-
- lib/omniauth/strategies/ldap/adaptor.rb
|
175
175
|
- lib/omniauth/strategies/ldap.rb
|
176
|
-
-
|
177
|
-
-
|
178
|
-
|
176
|
+
- lib/omniauth/strategies/ldap/adaptor.rb
|
177
|
+
- oa-enterprise.gemspec
|
178
|
+
- spec/fixtures/cas_failure.xml
|
179
|
+
- spec/fixtures/cas_success.xml
|
180
|
+
- spec/omniauth/strategies/cas_spec.rb
|
181
|
+
- spec/spec_helper.rb
|
179
182
|
homepage: http://github.com/intridea/omniauth
|
180
183
|
licenses: []
|
181
184
|
|
@@ -189,25 +192,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
192
|
requirements:
|
190
193
|
- - ">="
|
191
194
|
- !ruby/object:Gem::Version
|
192
|
-
hash: 1711090766640589691
|
193
|
-
segments:
|
194
|
-
- 0
|
195
195
|
version: "0"
|
196
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
197
|
none: false
|
198
198
|
requirements:
|
199
199
|
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
|
202
|
-
segments:
|
203
|
-
- 0
|
204
|
-
version: "0"
|
201
|
+
version: 1.3.6
|
205
202
|
requirements: []
|
206
203
|
|
207
204
|
rubyforge_project:
|
208
|
-
rubygems_version: 1.
|
205
|
+
rubygems_version: 1.7.2
|
209
206
|
signing_key:
|
210
207
|
specification_version: 3
|
211
208
|
summary: Enterprise strategies for OmniAuth.
|
212
|
-
test_files:
|
213
|
-
|
209
|
+
test_files:
|
210
|
+
- spec/fixtures/cas_failure.xml
|
211
|
+
- spec/fixtures/cas_success.xml
|
212
|
+
- spec/omniauth/strategies/cas_spec.rb
|
213
|
+
- spec/spec_helper.rb
|
214
|
+
has_rdoc:
|