tickets: 3331
This data as json
id | created | changetime | last_pulled_from_trac | stage | status | component | type | severity | version | resolution | summary | description | owner | reporter | keywords | easy | has_patch | needs_better_patch | needs_tests | needs_docs | ui_ux |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3331 | 2007-01-19 11:48:38 | 2007-07-21 05:19:26 | 2022-03-06 03:28:25.894518 | Accepted | closed | Testing framework | dev | wontfix | Client.login() fails when URL contains character requiring urlencoding | 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''. | adrian | Morgan Collett <morgan.collett@gmail.com> | unittest urlencode | 0 | 1 | 0 | 0 | 0 | 0 |