Django user check_password возвращает False в тестах
Я настроил свой User manager создал create_user
и create_superuser
метод и он работает нормально, но когда я запускаю тест на нем, он не работает из-за user.check_password()
он возвращает False. Я нашел этот пост, согласно которому Django не может определить правильный хэшер.
.
Это мой UserManager
класс
class UserManager(BaseUserManager):
def create_user(self, email, passowrd=None, **extra_fields):
'''Creates and saves a new user'''
phone = extra_fields.get('phone')
if not email:
raise ValueError("User must have an email address")
if not phone:
raise ValueError("User must have a phone number")
user = self.model(email=self.normalize_email(email), **extra_fields)
user.phone = phone
user.set_password(passowrd)
user.save(using=self._db)
return user
def create_superuser(self, email, password, **extra_fields):
'''Creates and saves a new superuser'''
user = self.create_user(email, password, **extra_fields)
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
а это мой тестовый метод для проверки создания пользователя
def test_create_user_with_email_and_phone(self):
'''Test creating new user with an email and phone successfuly'''
email = 'demo@gmail.com'
password = 'demo@1234'
phone = 1234567890
user = get_user_model().objects.create_user(
email=email,
password=password,
phone=phone
)
self.assertEqual(user.email, email)
self.assertEqual(user.phone, phone)
print(f'\n User Password : {user.password} \n')
print(f'\n Check Password : {user.check_password(password)} \n')
self.assertTrue(user.check_password(password))
это вывод функции print()
User Password : !dAqIjSVT6hpEhKj4JEjLLDAB3hAJt042Zaj8JS8R
Check Password : False