Я пытаюсь написать приспособление для генерации Django пользователей из пользовательской модели пользователя. Странно то, что вновь созданный пользователь проверяет подлинность по умолчанию, хотя я ожидаю, что он будет анонимным. Что я делаю не так?
Приспособление:
import pytest
@pytest.fixture
def create_user(db, django_user_model):
def make_user(**kwargs):
return django_user_model.objects.create_user(**kwargs)
return make_user
Проверка приспособления:
@pytest.mark.django_db
def test_fixture_create_user(create_user):
user = create_user(email='foo@bar.com', password='bar')
assert user.is_authenticated is True # <-- this should be False but it's True
assert user.is_anonymous is True # <-- this fails
Проверка не проходит таким образом:
E assert False is True
E + where False = <CustomUser: foo@bar.com>.is_anonymous
Пользовательская модель пользователя:
class CustomUser(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = CustomUserManager()
CustomUserManager:
class CustomUserManager(BaseUserManager):
"""
Custom user model manager where email is the unique identifiers
for authentication instead of usernames.
"""
def create_user(self, email, password, **extra_fields):
"""
Create and save a User with the given email and password.
"""
if not email:
raise ValueError(_('The Email must be set'))
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save()
return user