60 lines
2.1 KiB
Python
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()
|