Opened 22 months ago
Closed 22 months ago
#35082 closed Bug (invalid)
AsyncRequestFactory doesn't pass REMOTE_ADDR when set
| Reported by: | alex | Owned by: | nobody |
|---|---|---|---|
| Component: | Testing framework | Version: | 5.0 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
I can describe this bug easily with an example:
from django.test import RequestFactory, AsyncRequestFactory
factory = RequestFactory()
afactory = AsyncRequestFactory()
request = factory.get("/customer/details", REMOTE_ADDR="127.0.1.1")
assert request.META["REMOTE_ADDR"] == "127.0.1.1"
request = afactory.get("/customer/details", REMOTE_ADDR="127.0.1.1")
# will fail
assert request.META["REMOTE_ADDR"] == "127.0.1.1"
I think there are some other variables also affected. I tested it only with django 5.0.
Change History (2)
comment:1 by , 22 months ago
comment:2 by , 22 months ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
According to the ASGI spec, REMOTE_ADDR is based on the client in the connection scope, so you can override it with:
>>> afactory = AsyncRequestFactory(client=("127.0.1.1", "88")) >>> request = afactory.get("/somewhere") >>> request.META["REMOTE_ADDR"] "127.0.1.1"
If you're having trouble understanding how Django works, see TicketClosingReasons/UseSupportChannels for ways to get help.
Note:
See TracTickets
for help on using tickets.
Workaround: often it is enough to use RequestFactory even it is incorrect