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:
Russell Keith-Magee 2007-02-18 08:02:00 +00:00
parent 2fe6476180
commit 895633a80d
2 changed files with 5 additions and 2 deletions

View File

@ -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/>

View File

@ -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