| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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()
|