Files
zkxw/backend/tests/test_process_route_builtin.py
2026-09-01 11:32:49 +08:00

60 lines
2.1 KiB
Python

import unittest
from types import SimpleNamespace
from unittest.mock import MagicMock
from app.crud.process_route import (
assert_route_writable,
assert_step_route_writable,
is_super_admin_user,
)
class TestIsSuperAdminUser(unittest.TestCase):
def test_super_admin(self):
self.assertTrue(is_super_admin_user({"role": "super_admin"}))
def test_admin_not_super(self):
self.assertFalse(is_super_admin_user({"role": "admin"}))
def test_none(self):
self.assertFalse(is_super_admin_user(None))
class TestAssertRouteWritable(unittest.TestCase):
def test_missing_route(self):
db = MagicMock()
db.query.return_value.filter.return_value.first.return_value = None
with self.assertRaisesRegex(ValueError, "路线不存在"):
assert_route_writable(db, "r1", {"role": "admin"})
def test_builtin_blocks_non_super(self):
db = MagicMock()
route = SimpleNamespace(id="r1", is_builtin="1", route_id=None)
db.query.return_value.filter.return_value.first.return_value = route
with self.assertRaisesRegex(ValueError, "内置模版"):
assert_route_writable(db, "r1", {"role": "admin"})
def test_builtin_allows_super(self):
db = MagicMock()
route = SimpleNamespace(id="r1", is_builtin="1")
db.query.return_value.filter.return_value.first.return_value = route
self.assertIs(assert_route_writable(db, "r1", {"role": "super_admin"}), route)
def test_normal_allows_admin(self):
db = MagicMock()
route = SimpleNamespace(id="r1", is_builtin="0")
db.query.return_value.filter.return_value.first.return_value = route
self.assertIs(assert_route_writable(db, "r1", {"role": "admin"}), route)
class TestAssertStepRouteWritable(unittest.TestCase):
def test_missing_step(self):
db = MagicMock()
db.query.return_value.filter.return_value.first.return_value = None
with self.assertRaisesRegex(ValueError, "步骤不存在"):
assert_step_route_writable(db, "s1", {"role": "admin"})
if __name__ == "__main__":
unittest.main()