Files
drf-rack/net/xeaf/rack/tests/models/account_model_tests.py

57 lines
2.5 KiB
Python

# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса AccountModelTests
"""
from django.db.utils import IntegrityError
from net.xeaf.rack.core.tests import CoreTestCase
from net.xeaf.rack.management.userstory import AccountTestData
from net.xeaf.rack.models import AccountModel
class AccountModelTests(CoreTestCase):
"""
Тесты для класса AccountModel
"""
def test_user_story_accounts_exist(self):
"""
Проверяет, что эталонные пользователи успешно созданы в User Story
"""
# Ищем Ивана Иванова по фиксированному UUID
ivanov = AccountModel.objects.get(id=AccountTestData.I_IVANOV_ID)
self.assertEqual(ivanov.username, "i.ivanov@xeaf.net")
self.assertEqual(ivanov.full_name, "Иван И. Иванов")
self.assertEqual(ivanov.get_short_name(), "Иван")
# Проверяем, что наше исправление JSONField (default=dict) работает:
# Поле extra должно быть пустым словарем, а не None, готовым к .update()
self.assertEqual(ivanov.extra, {})
def test_password_hashing_works(self):
"""Проверяет, что пароли пользователей в User Story захешированы, а не лежат строкой"""
ivanov = AccountModel.objects.get(id=AccountTestData.I_IVANOV_ID)
# Проверяем, что стандартный джанговский механизм проверки пароля работает
self.assertTrue(ivanov.check_password(AccountTestData.DEFAULT_PASSWORD))
# Гарантируем, что в базе лежит хэш, а не сырая строка
self.assertNotEqual(ivanov.password, AccountTestData.DEFAULT_PASSWORD)
def test_username_uniqueness_constraint(self):
"""Проверяет жесткое ограничение уникальности email-username"""
# Попытка создать пользователя с дублирующим email Ивана должна намертво упасть
duplicate_account = AccountModel()
duplicate_account.username = "i.ivanov@xeaf.net"
with self.assertRaises(IntegrityError):
duplicate_account.save()