Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
django-cas-server
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Samir
django-cas-server
Commits
d4b9d660
Commit
d4b9d660
authored
Jun 29, 2016
by
Valentin Samir
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleaner BaseHTTPRequestHandler
parent
e5efdadd
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
32 additions
and
13 deletions
+32
-13
cas_server/tests/test_view.py
cas_server/tests/test_view.py
+4
-4
cas_server/tests/utils.py
cas_server/tests/utils.py
+3
-3
cas_server/utils.py
cas_server/utils.py
+25
-6
No files found.
cas_server/tests/test_view.py
View file @
d4b9d660
...
...
@@ -863,7 +863,7 @@ class ValidateServiceTestCase(TestCase, XmlContent):
def
test_validate_service_view_ok_pgturl
(
self
):
"""test the retrieval of a ProxyGrantingTicket"""
(
h
ost
,
port
)
=
utils
.
PGTUrlHandler
.
run
()[
1
:
3
]
(
h
ttpd
,
host
,
port
)
=
utils
.
HttpParamsHandler
.
run
()[
0
:
3
]
service
=
"http://%s:%s"
%
(
host
,
port
)
ticket
=
get_user_ticket_request
(
service
)[
1
]
...
...
@@ -873,7 +873,7 @@ class ValidateServiceTestCase(TestCase, XmlContent):
'/serviceValidate'
,
{
'ticket'
:
ticket
.
value
,
'service'
:
service
,
'pgtUrl'
:
service
}
)
pgt_params
=
utils
.
PGTUrlHandler
.
PARAMS
.
copy
()
pgt_params
=
httpd
.
PARAMS
self
.
assertEqual
(
response
.
status_code
,
200
)
root
=
etree
.
fromstring
(
response
.
content
)
...
...
@@ -887,7 +887,7 @@ class ValidateServiceTestCase(TestCase, XmlContent):
def
test_validate_service_pgturl_sslerror
(
self
):
"""test the retrieval of a ProxyGrantingTicket with a SSL error on the pgtUrl"""
(
host
,
port
)
=
utils
.
PGTUrl
Handler
.
run
()[
1
:
3
]
(
host
,
port
)
=
utils
.
HttpParams
Handler
.
run
()[
1
:
3
]
service
=
"https://%s:%s"
%
(
host
,
port
)
ticket
=
get_user_ticket_request
(
service
)[
1
]
...
...
@@ -907,7 +907,7 @@ class ValidateServiceTestCase(TestCase, XmlContent):
test the retrieval on a ProxyGrantingTicket then to pgtUrl return a http error.
PGT creation should be aborted but the ticket still be valid
"""
(
host
,
port
)
=
utils
.
PGTUrlHandler404
.
run
()[
1
:
3
]
(
host
,
port
)
=
utils
.
Http404Handler
.
run
()[
1
:
3
]
service
=
"http://%s:%s"
%
(
host
,
port
)
ticket
=
get_user_ticket_request
(
service
)[
1
]
...
...
cas_server/tests/utils.py
View file @
d4b9d660
...
...
@@ -55,14 +55,14 @@ def get_user_ticket_request(service):
def
get_pgt
():
"""return a dict contening a service, user and PGT ticket for this service"""
(
h
ost
,
port
)
=
utils
.
PGTUrlHandler
.
run
()[
1
:
3
]
(
h
ttpd
,
host
,
port
)
=
utils
.
HttpParamsHandler
.
run
()[
0
:
3
]
service
=
"http://%s:%s"
%
(
host
,
port
)
(
user
,
ticket
)
=
get_user_ticket_request
(
service
)
(
user
,
ticket
)
=
get_user_ticket_request
(
service
)
[:
2
]
client
=
Client
()
client
.
get
(
'/serviceValidate'
,
{
'ticket'
:
ticket
.
value
,
'service'
:
service
,
'pgtUrl'
:
service
})
params
=
utils
.
PGTUrlHandler
.
PARAMS
.
copy
()
params
=
httpd
.
PARAMS
params
[
"service"
]
=
service
params
[
"user"
]
=
user
...
...
cas_server/utils.py
View file @
d4b9d660
...
...
@@ -23,6 +23,7 @@ import hashlib
import
crypt
import
base64
import
six
import
cgi
from
threading
import
Thread
from
importlib
import
import_module
from
six.moves
import
BaseHTTPServer
...
...
@@ -150,9 +151,11 @@ def gen_saml_id():
return
_gen_ticket
(
'_'
)
class
PGTUrlHandler
(
BaseHTTPServer
.
BaseHTTPRequestHandler
):
"""A simple http server that return 200 on GET and store GET parameters. Used in unit tests"""
PARAMS
=
{}
class
HttpParamsHandler
(
BaseHTTPServer
.
BaseHTTPRequestHandler
):
"""
A simple http server that return 200 on GET or POST
and store GET or POST parameters. Used in unit tests
"""
def
do_GET
(
self
):
"""Called on a GET request on the BaseHTTPServer"""
...
...
@@ -162,7 +165,19 @@ class PGTUrlHandler(BaseHTTPServer.BaseHTTPRequestHandler):
self
.
wfile
.
write
(
b
"ok"
)
url
=
urlparse
(
self
.
path
)
params
=
dict
(
parse_qsl
(
url
.
query
))
PGTUrlHandler
.
PARAMS
.
update
(
params
)
self
.
server
.
PARAMS
=
params
def
do_POST
(
self
):
"""Called on a POST request on the BaseHTTPServer"""
ctype
,
pdict
=
cgi
.
parse_header
(
self
.
headers
.
get
(
'content-type'
))
if
ctype
==
'multipart/form-data'
:
postvars
=
cgi
.
parse_multipart
(
self
.
rfile
,
pdict
)
elif
ctype
==
'application/x-www-form-urlencoded'
:
length
=
int
(
self
.
headers
.
get
(
'content-length'
))
postvars
=
cgi
.
parse_qs
(
self
.
rfile
.
read
(
length
),
keep_blank_values
=
1
)
else
:
postvars
=
{}
self
.
server
.
PARAMS
=
postvars
def
log_message
(
self
,
*
args
):
"""silent any log message"""
...
...
@@ -183,10 +198,10 @@ class PGTUrlHandler(BaseHTTPServer.BaseHTTPRequestHandler):
httpd_thread
=
Thread
(
target
=
lauch
)
httpd_thread
.
daemon
=
True
httpd_thread
.
start
()
return
(
httpd
_thread
,
host
,
port
)
return
(
httpd
,
host
,
port
)
class
PGTUrlHandler404
(
PGTUrl
Handler
):
class
Http404Handler
(
HttpParams
Handler
):
"""A simple http server that always return 404 not found. Used in unit tests"""
def
do_GET
(
self
):
"""Called on a GET request on the BaseHTTPServer"""
...
...
@@ -195,6 +210,10 @@ class PGTUrlHandler404(PGTUrlHandler):
self
.
end_headers
()
self
.
wfile
.
write
(
b
"error 404 not found"
)
def
do_POST
(
self
):
"""Called on a POST request on the BaseHTTPServer"""
return
self
.
do_GET
()
class
LdapHashUserPassword
(
object
):
"""Please see https://tools.ietf.org/id/draft-stroeder-hashed-userpassword-values-01.html"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment