# DRF Rack # Библиотека классов расширений для Django REST Framework # # Автор: Николай В. Анохин # Все права защищены. Лицензия: 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()