Opened 18 years ago
Closed 17 years ago
#3331 closed (wontfix)
Client.login() fails when URL contains character requiring urlencoding
Reported by: | Owned by: | Adrian Holovaty | |
---|---|---|---|
Component: | Testing framework | Version: | dev |
Severity: | Keywords: | unittest urlencode | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I wrote a unittest using the Test Client. It was failing to log in to a page protected by @login_required, using the login() method. My path for the login method is '/video/+sub/'. The login() method was returning False, signifying login not possible, even though the username and password were correct.
The reason for the login() failure is that the URL '/video/+sub/' becomes urlencoded as '/video/%2Bsub/' in the redirect to the login form, and the resulting redirect fails. (Why?)
Workarounds are:
- use a url without a '+' (not optimal in my application)
- call login() on a different page first, then get() on my page with '+' in the url
- Perhaps the handling of the urlencoded value is failing when it should succeed? That's beyond my current debugging experience.
- change client.py as in the attached patch - a one line change to use the non-urlencoded value in path instead of the value passed through in next.
Attachments (1)
Change History (3)
by , 18 years ago
Attachment: | client.py.diff added |
---|
comment:1 by , 18 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 17 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
The test client login() mechanism has been modified to be authentication based, rather than URL based, so this problem has gone away.
Patch for django/test/client.py