29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
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()
|