Модульное тестирование 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()

Жду, когда кто-нибудь подтвердит это (желательно со ссылкой на документацию)

Вернуться на верх