Модульное тестирование Django - проверка аутентифицированного пользователя в методе модели
Я использую Django 3.2
Я пытаюсь протестировать модель, которая проверяет, аутентифицирован ли пользователь. Код модели выглядит примерно так:
class Foo(Model):
def do_something(user, **kwargs):
if user.is_authenticated():
do_one_thing(user, **kwargs)
else:
do_another_thing(**kwargs)
Мой тестовый код выглядит примерно так:
from model_bakery import baker
from django.contrib.auth import authenticate, get_user_model
User = get_user_model()
class FooModelTest(TestCase):
def setUp(self):
self.user1 = baker.make(User, username='testuser_1', password='testexample1', email='user1@example.com', is_active = True, is_superuser=False)
baker.make(User, username='testuser_2', password='testexample2', email='admin@example.com', is_active = True, is_superuser=True)
self.unauthorised_user = authenticate(username='testuser_2', password='wrongone')
def test_user(self):
self.assertTrue(self.user1.is_validated) # why is this true? - I haven't "logged in" yet?
self.assertFalse(self.unauthorised.is_validated) # Barfs here since authenticate returned a None
Итак, как мне подружиться с неаутентифицированным пользователем в целях тестирования? - поскольку кажется, что свойство is_authenticated
только для чтения?
[[ Обновление ]]
Я только что провел еще небольшое исследование + тестирование, и похоже, что решением этой проблемы будет использование AnnonymousUser
следующим образом:
from django.contrib.auth.models import AnonymousUser
self.unaunthorised_user = AnonymousUser()
Жду, когда кто-нибудь подтвердит это (желательно со ссылкой на документацию)