mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #34391 -- Added async-compatible interface to auth functions and related methods test clients.
This commit is contained in:
committed by
Mariusz Felisiak
parent
2360ba2274
commit
5e98959d92
@@ -6,6 +6,7 @@ from django.contrib.auth import (
|
||||
BACKEND_SESSION_KEY,
|
||||
SESSION_KEY,
|
||||
_clean_credentials,
|
||||
aauthenticate,
|
||||
authenticate,
|
||||
get_user,
|
||||
signals,
|
||||
@@ -764,6 +765,28 @@ class AuthenticateTests(TestCase):
|
||||
status_code=500,
|
||||
)
|
||||
|
||||
@override_settings(
|
||||
AUTHENTICATION_BACKENDS=["auth_tests.test_auth_backends.TypeErrorBackend"]
|
||||
)
|
||||
async def test_aauthenticate_sensitive_variables(self):
|
||||
try:
|
||||
await aauthenticate(
|
||||
username="testusername", password=self.sensitive_password
|
||||
)
|
||||
except TypeError:
|
||||
exc_info = sys.exc_info()
|
||||
rf = RequestFactory()
|
||||
response = technical_500_response(rf.get("/"), *exc_info)
|
||||
self.assertNotContains(response, self.sensitive_password, status_code=500)
|
||||
self.assertContains(response, "TypeErrorBackend", status_code=500)
|
||||
self.assertContains(
|
||||
response,
|
||||
'<tr><td>credentials</td><td class="code">'
|
||||
"<pre>'********************'</pre></td></tr>",
|
||||
html=True,
|
||||
status_code=500,
|
||||
)
|
||||
|
||||
def test_clean_credentials_sensitive_variables(self):
|
||||
try:
|
||||
# Passing in a list to cause an exception
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from asgiref.sync import sync_to_async
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user, get_user_model
|
||||
from django.contrib.auth import aget_user, get_user, get_user_model
|
||||
from django.contrib.auth.models import AnonymousUser, User
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.db import IntegrityError
|
||||
@@ -129,6 +131,12 @@ class TestGetUser(TestCase):
|
||||
user = get_user(request)
|
||||
self.assertIsInstance(user, AnonymousUser)
|
||||
|
||||
async def test_aget_user_anonymous(self):
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, AnonymousUser)
|
||||
|
||||
def test_get_user(self):
|
||||
created_user = User.objects.create_user(
|
||||
"testuser", "test@example.com", "testpw"
|
||||
@@ -162,3 +170,14 @@ class TestGetUser(TestCase):
|
||||
user = get_user(request)
|
||||
self.assertIsInstance(user, User)
|
||||
self.assertEqual(user.username, created_user.username)
|
||||
|
||||
async def test_aget_user(self):
|
||||
created_user = await sync_to_async(User.objects.create_user)(
|
||||
"testuser", "test@example.com", "testpw"
|
||||
)
|
||||
await self.client.alogin(username="testuser", password="testpw")
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, User)
|
||||
self.assertEqual(user.username, created_user.username)
|
||||
|
||||
Reference in New Issue
Block a user