| from __future__ import annotations |
|
|
| import unittest |
|
|
| import requests |
|
|
| from mcp_tools.vindex_tool import ( |
| VINDEX_METHODS, |
| build_vindex_call_plan, |
| vindex_dependency_report, |
| vindex_verification_report, |
| ) |
|
|
|
|
| class VINDEXToolTest(unittest.TestCase): |
| def test_builds_non_executing_call_plan_for_supported_method(self) -> None: |
| plan = build_vindex_call_plan( |
| "logit_lens", |
| {"model_id": "minicpm5_1b", "text": "Acer"}, |
| "http://local-vindex", |
| ) |
|
|
| self.assertEqual(plan.method, "logit_lens") |
| self.assertEqual(plan.endpoint, "http://local-vindex/logit_lens") |
| self.assertFalse(plan.execute) |
| self.assertEqual(plan.payload["text"], "Acer") |
|
|
| def test_rejects_unknown_method(self) -> None: |
| with self.assertRaises(ValueError): |
| build_vindex_call_plan("unknown", {}) |
|
|
| def test_caps_star_spread_neighbors(self) -> None: |
| plan = build_vindex_call_plan("star_spread", {"n_neighbors": 12}) |
|
|
| self.assertEqual(plan.payload["n_neighbors"], 5) |
| self.assertTrue(any("capped at 5" in note for note in plan.safety_notes)) |
|
|
| def test_caps_calibrated_edit_window(self) -> None: |
| plan = build_vindex_call_plan("calibrated_edit", {"causal_window": 9}) |
|
|
| self.assertEqual(plan.payload["causal_window"], 3) |
| self.assertTrue(any("capped at 3" in note for note in plan.safety_notes)) |
|
|
| def test_dependency_report_includes_methods_and_unreachable_server(self) -> None: |
| def get_health(url: str, **kwargs): |
| del url, kwargs |
| raise requests.ConnectionError("server down") |
|
|
| report = vindex_dependency_report("http://local-vindex", get_health) |
|
|
| self.assertFalse(report["server_reachable"]) |
| self.assertEqual(report["supported_methods"], sorted(VINDEX_METHODS)) |
| self.assertIn("server down", report["server_detail"]) |
|
|
| def test_verification_report_keeps_execution_disabled(self) -> None: |
| def get_health(url: str, **kwargs): |
| del url, kwargs |
| response = requests.Response() |
| response.status_code = 200 |
| return response |
|
|
| report = vindex_verification_report( |
| "protect_relations", |
| {"protected_triplets": []}, |
| "http://local-vindex", |
| get_health, |
| ) |
|
|
| self.assertFalse(report["ready_for_execution"]) |
| self.assertTrue(report["dependency_report"]["server_reachable"]) |
| self.assertEqual(report["call_plan"]["method"], "protect_relations") |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|