test.Client does not handle domain changes on redirection follow
|Reported by:||jdunck||Owned by:||nobody|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
Description (last modified by jdunck)
The default SERVER_NAME used by the test client is testserver.
I have a multi-tenant site serving www.foo.com and www.bar.com. I also have a view which redirects from /spam/ to /eggs/.
Middleware handles the domain redirection, while a view handles the /spam/ -> /eggs/ redirection.
If the test client requests http://www.foo.com/spam/, it is redirected to http://www.bar.com/spam/, but _handle_redirects, while parsing url into scheme and path, does not also update SERVER_NAME in extras. This causes the 2nd request handling to be handled as though it were for http://www.foo.com/spam/ (again), causing a redirection loop.
I think that just as wsgi.url_scheme is updated for scheme, extra['SERVER_NAME'] should be updated for netloc.
It's debatable to me whether this is a bug or a feature -- I realize multi-tenancy is relatively unusual under Django.
Change History (7)
comment:4 Changed 5 years ago by aaugustin
- Component changed from Uncategorized to Testing framework
- Triage Stage changed from Unreviewed to Accepted