Spaces:
Sleeping
Sleeping
File size: 2,268 Bytes
b634764 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import unittest
from types import SimpleNamespace
from backend import main
from backend.models import UserResponse
from backend.roles import (
CANONICAL_SUPERADMIN_USERNAME,
can_delete_user,
validate_superadmin_username,
validate_superadmin_password,
validate_role_change,
)
class AdminApiTests(unittest.TestCase):
def test_admin_routes_expose_user_response_schema(self):
self.assertIs(main.UserResponse, UserResponse)
def test_only_canonical_username_can_keep_superadmin_role(self):
superadmin = SimpleNamespace(
username=CANONICAL_SUPERADMIN_USERNAME, role="superadmin"
)
other_user = SimpleNamespace(username="other@example.com", role="admin")
with self.assertRaises(ValueError):
validate_role_change(superadmin, other_user, "superadmin")
with self.assertRaises(ValueError):
validate_role_change(superadmin, superadmin, "admin")
def test_superadmin_can_change_or_delete_noncanonical_accounts(self):
superadmin = SimpleNamespace(
id=1, username=CANONICAL_SUPERADMIN_USERNAME, role="superadmin"
)
other_user = SimpleNamespace(id=2, username="other@example.com", role="admin")
self.assertEqual("user", validate_role_change(superadmin, other_user, "user"))
self.assertTrue(can_delete_user(superadmin, other_user))
def test_canonical_superadmin_cannot_be_deleted(self):
superadmin = SimpleNamespace(
id=1, username=CANONICAL_SUPERADMIN_USERNAME, role="superadmin"
)
self.assertFalse(can_delete_user(superadmin, superadmin))
def test_only_canonical_username_can_be_provisioned_as_superadmin(self):
self.assertEqual(
CANONICAL_SUPERADMIN_USERNAME,
validate_superadmin_username(CANONICAL_SUPERADMIN_USERNAME),
)
with self.assertRaises(ValueError):
validate_superadmin_username("another@example.com")
def test_superadmin_password_is_validated_for_database_seeding(self):
self.assertEqual("secret", validate_superadmin_password("secret"))
with self.assertRaises(ValueError):
validate_superadmin_password("123")
if __name__ == "__main__":
unittest.main() |