-
-
Notifications
You must be signed in to change notification settings - Fork 6.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unit testing: calling APIClient.force_authenticate()
with user=None
does not work as intended
#8211
Comments
Created an issue from this as I'm doing a PR to fix it. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
having this issue as well -- any updates? |
Thanks for the prompt, I just addressed the outstanding comment so hopefully it can be merged soon. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
I closed my PR #8212 that fixes this as it's being ignored. However it's ready to merge so if anyone gets round to looking at it, I can reopen it. |
Closed via #8212 |
Discussed in #8184
Originally posted by willbeaufoy September 24, 2021
If you call
APIClient.force_authenticate()
with atoken
param but without auser
param,self.handler._force_token
is set to the provided token, but thenself.logout()
is called, which immediately setsself.handler._force_token
toNone
again. Surely this is not intended? The docstring and the docs say you can use either a user or a token or both, but in reality you cannot just use a token.I discovered this while writing a unit test for an endpoint with access authorised by the OAuth client credentials method (provided by django-oauth-toolkit), where requests have a token but no user. Therefore I tried to authenticate then call my endpoint like this:
But my test fails as I get a 401 Unauthorized response.
However if I comment out the line in
APIClient.logout()
that setsself.handler._force_token
toNone
, the request makes it through to my endpoint successfully and my test passes.The PR that changed the
logout()
method to setself.handler._force_user
andself.handler._force_token
toNone
was done for an unrelated reason. Perhaps at the time it was overlooked that this broke the case I am trying to test above?If you agree that this current apparently broken behaviour is a bug, then I can do a PR to fix it.
The text was updated successfully, but these errors were encountered: