Spaces:
Running
Running
File size: 2,345 Bytes
117b6e0 d9886c6 117b6e0 d9886c6 117b6e0 d9886c6 117b6e0 d9886c6 117b6e0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | from __future__ import annotations
import unittest
from api.task_tool_policy import build_task_tool_policy
class TaskToolPolicyTests(unittest.TestCase):
def test_e2e_literal_contract_forbids_tools_and_returns_exact_token(self) -> None:
policy = build_task_tool_policy(
"Rispondi ESCLUSIVAMENTE con TEST_E2E_OK. Non usare strumenti, tool, "
"comandi shell, file, rete, servizi esterni, azioni o card."
)
self.assertTrue(policy.forbid_tools)
self.assertEqual(policy.literal_response, "TEST_E2E_OK")
self.assertFalse(policy.allow_local_csv_conversion)
def test_explicit_tool_denial_without_literal_contract_stays_tool_free(self) -> None:
policy = build_task_tool_policy("Spiega il concetto senza usare strumenti o rete.")
self.assertTrue(policy.forbid_tools)
self.assertIsNone(policy.literal_response)
self.assertFalse(policy.allow_local_csv_conversion)
def test_restricted_local_csv_conversion_is_explicitly_qualified(self) -> None:
policy = build_task_tool_policy(
"Esegui solo nel workspace VFS locale questa conversione deterministica.\n"
"Crea capability_catalog.csv con contenuto esatto: id,name,active\n"
"1,alpha,true\n2,beta,false\n"
". Poi crea capability_catalog.json con lo stesso catalogo come array JSON valido di due oggetti.\n"
"Non usare rete, shell, servizi esterni o provider aggiuntivi."
)
self.assertTrue(policy.forbid_tools)
self.assertIsNone(policy.literal_response)
self.assertTrue(policy.allow_local_csv_conversion)
def test_normal_task_remains_unrestricted(self) -> None:
policy = build_task_tool_policy("Cerca le notizie di oggi e sintetizzale.")
self.assertFalse(policy.forbid_tools)
self.assertIsNone(policy.literal_response)
self.assertFalse(policy.allow_local_csv_conversion)
def test_partial_wording_does_not_create_a_literal_contract(self) -> None:
policy = build_task_tool_policy("Rispondi esclusivamente con una spiegazione, senza strumenti.")
self.assertTrue(policy.forbid_tools)
self.assertIsNone(policy.literal_response)
self.assertFalse(policy.allow_local_csv_conversion)
if __name__ == "__main__":
unittest.main()
|