from django.core.management.base import CommandError from django.test import TestCase, override_settings from apps.accounts.models import User from apps.farms.models import Cycle, Site from django.core.management import call_command @override_settings( BOOTSTRAP_ADMIN_USER="admin", BOOTSTRAP_ADMIN_PASSWORD="Pr04dm1n", BOOTSTRAP_STAFF_USER="", BOOTSTRAP_STAFF_PASSWORD="", ) class BootstrapAdminTests(TestCase): def test_creates_superadmin_without_demo_data(self): call_command("bootstrap_admin") user = User.objects.get(user_name="admin") self.assertEqual(user.status, User.STATUS_SUPERADMIN) self.assertTrue(user.check_password("Pr04dm1n")) self.assertFalse(Site.objects.exists()) self.assertFalse(Cycle.objects.exists()) def test_requires_password(self): with self.settings(BOOTSTRAP_ADMIN_PASSWORD=""): with self.assertRaises(CommandError): call_command("bootstrap_admin") @override_settings( BOOTSTRAP_STAFF_USER="staff", BOOTSTRAP_STAFF_PASSWORD="St4ff!", ) def test_creates_staff_when_configured(self): call_command("bootstrap_admin") staff = User.objects.get(user_name="staff") self.assertEqual(staff.status, User.STATUS_ACTIVE) self.assertTrue(staff.is_staff) self.assertFalse(staff.is_superuser) self.assertTrue(staff.check_password("St4ff!")) @override_settings( BOOTSTRAP_STAFF_USER="staff", BOOTSTRAP_STAFF_PASSWORD="", ) def test_requires_staff_password_when_user_set(self): with self.assertRaises(CommandError): call_command("bootstrap_admin") @override_settings( BOOTSTRAP_STAFF_USER="admin", BOOTSTRAP_STAFF_PASSWORD="St4ff!", ) def test_rejects_staff_same_as_admin(self): with self.assertRaises(CommandError): call_command("bootstrap_admin")