Fixed #3210 -- Modified test Client.login() to use urlparse, allowing absolute URLs in the Location header. Thanks, Ben Dean Kawamura.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4540 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
2fe6476180
commit
895633a80d
1
AUTHORS
1
AUTHORS
|
@ -104,6 +104,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Michael Josephson <http://www.sdjournal.com/>
|
Michael Josephson <http://www.sdjournal.com/>
|
||||||
jpellerin@gmail.com
|
jpellerin@gmail.com
|
||||||
junzhang.jn@gmail.com
|
junzhang.jn@gmail.com
|
||||||
|
Ben Dean Kawamura <ben.dean.kawamura@gmail.com>
|
||||||
Garth Kidd <http://www.deadlybloodyserious.com/>
|
Garth Kidd <http://www.deadlybloodyserious.com/>
|
||||||
kilian <kilian.cavalotti@lip6.fr>
|
kilian <kilian.cavalotti@lip6.fr>
|
||||||
Sune Kirkeby <http://ibofobi.dk/>
|
Sune Kirkeby <http://ibofobi.dk/>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import sys
|
import sys
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
from urlparse import urlparse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.handlers.base import BaseHandler
|
from django.core.handlers.base import BaseHandler
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.core.handlers.wsgi import WSGIRequest
|
||||||
|
@ -222,7 +223,7 @@ class Client:
|
||||||
if response.status_code != 302:
|
if response.status_code != 302:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
login_path, data = response['Location'].split('?')
|
_, _, login_path, _, data, _= urlparse(response['Location'])
|
||||||
next = data.split('=')[1]
|
next = data.split('=')[1]
|
||||||
|
|
||||||
# Second, GET the login page; required to set up cookies
|
# Second, GET the login page; required to set up cookies
|
||||||
|
@ -239,7 +240,8 @@ class Client:
|
||||||
response = self.post(login_path, data=form_data, **extra)
|
response = self.post(login_path, data=form_data, **extra)
|
||||||
|
|
||||||
# Login page should 302 redirect to the originally requested page
|
# Login page should 302 redirect to the originally requested page
|
||||||
if response.status_code != 302 or response['Location'] != path:
|
if (response.status_code != 302 or
|
||||||
|
urlparse(response['Location'])[2] != path):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Since we are logged in, request the actual page again
|
# Since we are logged in, request the actual page again
|
||||||
|
|
Loading…
Reference in New Issue