import unittest from types import SimpleNamespace from api.deps import require_knowledge_operator from utils.exceptions import ForbiddenError class KnowledgeAuthTests(unittest.IsolatedAsyncioTestCase): async def test_allows_admin_or_knowledge_operator(self): admin = SimpleNamespace(user_type="ADMIN", employee_role=None) operator = SimpleNamespace(user_type="EMPLOYEE", employee_role="KNOWLEDGE_OPERATOR") self.assertIs(await require_knowledge_operator(admin), admin) self.assertIs(await require_knowledge_operator(operator), operator) async def test_rejects_customer_and_unrelated_employee(self): with self.assertRaises(ForbiddenError): await require_knowledge_operator( SimpleNamespace(user_type="CUSTOMER", employee_role=None) ) with self.assertRaises(ForbiddenError): await require_knowledge_operator( SimpleNamespace(user_type="EMPLOYEE", employee_role="ADVISOR") ) if __name__ == "__main__": unittest.main()