rubycas-server 0.1.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.
- data/CHANGELOG.txt +3 -0
- data/LICENSE.txt +339 -0
- data/Manifest.txt +32 -0
- data/README.txt +27 -0
- data/Rakefile +59 -0
- data/bin/rubycas-server +8 -0
- data/config.example.yml +197 -0
- data/lib/casserver.rb +152 -0
- data/lib/casserver/authenticators/active_directory_ldap.rb +8 -0
- data/lib/casserver/authenticators/base.rb +22 -0
- data/lib/casserver/authenticators/ldap.rb +40 -0
- data/lib/casserver/authenticators/sql.rb +37 -0
- data/lib/casserver/authenticators/test.rb +8 -0
- data/lib/casserver/cas.rb +224 -0
- data/lib/casserver/conf.rb +78 -0
- data/lib/casserver/controllers.rb +253 -0
- data/lib/casserver/models.rb +109 -0
- data/lib/casserver/utils.rb +33 -0
- data/lib/casserver/version.rb +9 -0
- data/lib/casserver/views.rb +185 -0
- data/lib/themes/cas.css +112 -0
- data/lib/themes/ok.png +0 -0
- data/lib/themes/simple/bg.png +0 -0
- data/lib/themes/simple/login_box_bg.png +0 -0
- data/lib/themes/simple/logo.png +0 -0
- data/lib/themes/simple/theme.css +28 -0
- data/lib/themes/urbacon/bg.png +0 -0
- data/lib/themes/urbacon/login_box_bg.png +0 -0
- data/lib/themes/urbacon/logo.png +0 -0
- data/lib/themes/urbacon/theme.css +33 -0
- data/lib/themes/warning.png +0 -0
- data/setup.rb +1585 -0
- data/test/test_casserver.rb +150 -0
- metadata +103 -0
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'mosquito'
|
3
|
+
|
4
|
+
$CONF = {:authenticator => {:class => "CASServer::Authenticators::Test"}}
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + "/../lib/casserver"
|
7
|
+
|
8
|
+
include CASServer::Models
|
9
|
+
CASServer.create
|
10
|
+
|
11
|
+
class TestCASServer < Camping::FunctionalTest
|
12
|
+
|
13
|
+
def test_test_atuhenticator
|
14
|
+
require File.dirname(__FILE__) + "/../lib/casserver/authenticators/test"
|
15
|
+
|
16
|
+
valid_credentials = {:username => "testuser", :password => "testpassword"}
|
17
|
+
invalid_credentials = {:username => "asdfsdf", :password => "asdfsdf"}
|
18
|
+
|
19
|
+
assert_equal CASServer::Authenticators::Test, $AUTH.class
|
20
|
+
assert $AUTH.validate(valid_credentials)
|
21
|
+
assert !$AUTH.validate(invalid_credentials)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_valid_login
|
25
|
+
lt = start_login
|
26
|
+
|
27
|
+
post '/login',
|
28
|
+
:lt => lt.ticket,
|
29
|
+
:username => "testuser",
|
30
|
+
:password => "testpassword"
|
31
|
+
|
32
|
+
assert_match_body("You have successfully logged in")
|
33
|
+
|
34
|
+
lt = LoginTicket.find_by_ticket(lt.ticket)
|
35
|
+
|
36
|
+
assert_not_nil @cookies[:tgt]
|
37
|
+
assert_not_nil TicketGrantingTicket.find_by_ticket(@cookies[:tgt])
|
38
|
+
|
39
|
+
assert lt.consumed?
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_valid_login_with_service
|
43
|
+
lt = start_login
|
44
|
+
|
45
|
+
fake_service = "http://www.google.com/"
|
46
|
+
|
47
|
+
post '/login',
|
48
|
+
:lt => lt.ticket,
|
49
|
+
:username => "testuser",
|
50
|
+
:password => "testpassword",
|
51
|
+
:service => fake_service
|
52
|
+
|
53
|
+
@response.headers['Location'].to_s =~ /(.*?)\?ticket=(.*)/
|
54
|
+
redirected_to = $~[1]
|
55
|
+
service_ticket = $~[2]
|
56
|
+
|
57
|
+
assert_equal fake_service, redirected_to
|
58
|
+
|
59
|
+
assert_not_nil service_ticket
|
60
|
+
st = ServiceTicket.find_by_ticket(service_ticket)
|
61
|
+
assert_equal fake_service, st.service
|
62
|
+
assert_equal "testuser", st.username
|
63
|
+
assert !st.consumed?
|
64
|
+
|
65
|
+
assert_not_nil @cookies[:tgt]
|
66
|
+
assert_not_nil TicketGrantingTicket.find_by_ticket(@cookies[:tgt])
|
67
|
+
|
68
|
+
assert LoginTicket.find_by_ticket(lt.ticket).consumed?
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_invalid_login
|
72
|
+
lt = start_login
|
73
|
+
|
74
|
+
post '/login',
|
75
|
+
:lt => lt.ticket,
|
76
|
+
:username => "testuser",
|
77
|
+
:password => "badpassword"
|
78
|
+
|
79
|
+
assert_match_body("Incorrect username or password")
|
80
|
+
|
81
|
+
# reusing the same login ticket should fail
|
82
|
+
post '/login',
|
83
|
+
:lt => lt.ticket,
|
84
|
+
:username => "testuser",
|
85
|
+
:password => "testpassword"
|
86
|
+
|
87
|
+
assert_match_body("The login ticket you provided has already been used up")
|
88
|
+
|
89
|
+
# missing username/password
|
90
|
+
lt = start_login
|
91
|
+
post '/login',
|
92
|
+
:lt => lt.ticket
|
93
|
+
|
94
|
+
assert_match_body("Incorrect username or password")
|
95
|
+
|
96
|
+
# missing login ticket
|
97
|
+
post '/login',
|
98
|
+
:username => "testuser",
|
99
|
+
:password => "testpassword"
|
100
|
+
|
101
|
+
assert_match_body("Your login request did not include a login ticket")
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
def start_login
|
106
|
+
assert_difference(LoginTicket, :count, 1) do
|
107
|
+
get '/login'
|
108
|
+
end
|
109
|
+
|
110
|
+
assert_response :success
|
111
|
+
assert_match_body("Login")
|
112
|
+
|
113
|
+
@response.body =~ /LT-[a-zA-Z0-9]*/
|
114
|
+
lt = $~[0]
|
115
|
+
assert_not_nil lt
|
116
|
+
|
117
|
+
lt = LoginTicket.find_by_ticket(lt)
|
118
|
+
assert_not_nil lt
|
119
|
+
|
120
|
+
assert !lt.consumed?
|
121
|
+
|
122
|
+
lt
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
#class TestPost < Camping::UnitTest
|
128
|
+
#
|
129
|
+
# fixtures :blog_posts, :blog_users, :blog_comments
|
130
|
+
#
|
131
|
+
# def test_create
|
132
|
+
# post = create
|
133
|
+
# assert post.valid?
|
134
|
+
# end
|
135
|
+
#
|
136
|
+
# def test_assoc
|
137
|
+
# post = Post.find :first
|
138
|
+
# assert_kind_of User, post.user
|
139
|
+
# assert_equal 1, post.user.id
|
140
|
+
# end
|
141
|
+
#
|
142
|
+
# private
|
143
|
+
#
|
144
|
+
# def create(options={})
|
145
|
+
# Post.create({ :user_id => 1,
|
146
|
+
# :title => "Title",
|
147
|
+
# :body => "Body"}.merge(options))
|
148
|
+
# end
|
149
|
+
#
|
150
|
+
#end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.0
|
3
|
+
specification_version: 1
|
4
|
+
name: rubycas-server
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.1.0
|
7
|
+
date: 2007-03-08 00:00:00 -05:00
|
8
|
+
summary: Provides single sign on for web applications using the CAS protocol.
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: matt@roughest.net
|
12
|
+
homepage: http://rubycas-server.rubyforge.org
|
13
|
+
rubyforge_project: rubycas-server
|
14
|
+
description: Provides single sign on for web applications using the CAS protocol.
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Matt Zukowski
|
31
|
+
files:
|
32
|
+
- CHANGELOG.txt
|
33
|
+
- LICENSE.txt
|
34
|
+
- Manifest.txt
|
35
|
+
- README.txt
|
36
|
+
- Rakefile
|
37
|
+
- config.example.yml
|
38
|
+
- lib/casserver.rb
|
39
|
+
- lib/casserver/authenticators/active_directory_ldap.rb
|
40
|
+
- lib/casserver/authenticators/base.rb
|
41
|
+
- lib/casserver/authenticators/ldap.rb
|
42
|
+
- lib/casserver/authenticators/sql.rb
|
43
|
+
- lib/casserver/authenticators/test.rb
|
44
|
+
- lib/casserver/cas.rb
|
45
|
+
- lib/casserver/conf.rb
|
46
|
+
- lib/casserver/controllers.rb
|
47
|
+
- lib/casserver/models.rb
|
48
|
+
- lib/casserver/utils.rb
|
49
|
+
- lib/casserver/version.rb
|
50
|
+
- lib/casserver/views.rb
|
51
|
+
- lib/themes/cas.css
|
52
|
+
- lib/themes/ok.png
|
53
|
+
- lib/themes/simple/bg.png
|
54
|
+
- lib/themes/simple/login_box_bg.png
|
55
|
+
- lib/themes/simple/logo.png
|
56
|
+
- lib/themes/simple/theme.css
|
57
|
+
- lib/themes/urbacon/bg.png
|
58
|
+
- lib/themes/urbacon/login_box_bg.png
|
59
|
+
- lib/themes/urbacon/logo.png
|
60
|
+
- lib/themes/urbacon/theme.css
|
61
|
+
- lib/themes/warning.png
|
62
|
+
- setup.rb
|
63
|
+
- test/test_casserver.rb
|
64
|
+
test_files:
|
65
|
+
- test/test_casserver.rb
|
66
|
+
rdoc_options: []
|
67
|
+
|
68
|
+
extra_rdoc_files: []
|
69
|
+
|
70
|
+
executables:
|
71
|
+
- rubycas-server
|
72
|
+
extensions: []
|
73
|
+
|
74
|
+
requirements: []
|
75
|
+
|
76
|
+
dependencies:
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: camping
|
79
|
+
version_requirement:
|
80
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: "1.5"
|
85
|
+
version:
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: sqlite3-ruby
|
88
|
+
version_requirement:
|
89
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.2.0
|
94
|
+
version:
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: activesupport
|
97
|
+
version_requirement:
|
98
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.4.0
|
103
|
+
version:
|