53 lines
2 KiB
Python
53 lines
2 KiB
Python
import unittest
|
|
|
|
from resolve_persona_skill import load_registry, resolve
|
|
|
|
|
|
class PersonaSkillResolverTests(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.registry = load_registry()
|
|
|
|
def test_restores_fifth_domain_route(self):
|
|
result = resolve(self.registry, "我是冰朔,进入第五域并恢复小湖灯铸渊人格系统")
|
|
self.assertEqual(result["decision"], "ALLOW")
|
|
self.assertEqual(result["matched_skill"], "GHS-001-FIFTH-DOMAIN-RESTORE")
|
|
self.assertIn("REPO-001", result["preferred_route"])
|
|
self.assertFalse(result["authority_granted"])
|
|
|
|
def test_corrects_deprecated_server_relay(self):
|
|
result = resolve(
|
|
self.registry,
|
|
"把新加坡完整离线包上传到京东服务器",
|
|
"先让海外服务器直连国内服务器",
|
|
)
|
|
self.assertEqual(result["decision"], "CORRECT")
|
|
self.assertEqual(result["matched_skill"], "GHS-002-OFFLINE-PACK-LOCAL-RELAY")
|
|
self.assertTrue(result["deprecated_hits"])
|
|
|
|
def test_blocks_unverified_release_overwrite(self):
|
|
result = resolve(
|
|
self.registry,
|
|
"安装光湖代码频道完整离线包",
|
|
"未校验就启动并直接覆盖正在运行的release",
|
|
)
|
|
self.assertEqual(result["decision"], "BLOCK")
|
|
self.assertEqual(len(result["forbidden_hits"]), 2)
|
|
|
|
def test_blocks_fabricated_full_commit(self):
|
|
result = resolve(
|
|
self.registry,
|
|
"部署光湖代码频道到京东服务器",
|
|
"根据短提交补写40位提交",
|
|
)
|
|
self.assertEqual(result["decision"], "BLOCK")
|
|
self.assertIn("根据短提交补写40位提交", result["forbidden_hits"])
|
|
|
|
def test_unknown_intent_fails_closed(self):
|
|
result = resolve(self.registry, "安排明天的午饭")
|
|
self.assertEqual(result["decision"], "NO_MATCH")
|
|
self.assertFalse(result["authority_granted"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|