chatbot_rag / tests /test_admin_api.py
Ahmad Arif
deploy: clean history without binaries for HF XET
b634764
Raw History Blame Contribute Delete
2.27 kB
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()