QueryQuest / tests /test_policy.py
mohamedgamal04
QueryQuest — Hugging Face Spaces deploy (Docker)
0cac9cf
Raw
History Blame Contribute Delete
1.33 kB
"""Tests for engine approval policies.
Author: mohamedgamal04
"""
import asyncio
import unittest
from pathlib import Path
from queryquest.core.models import WritebackTarget
from queryquest.core.policy import AutoApprovePolicy, DenyAllPolicy
def _target(path: str) -> WritebackTarget:
return WritebackTarget(file_path=Path(path), sheet_name="Sheet1", table_name="t", affected_rows=1)
class AutoApprovePolicyTests(unittest.TestCase):
def test_approves_execution(self) -> None:
policy = AutoApprovePolicy("/data")
self.assertTrue(asyncio.run(policy.approve_execution([])))
def test_approves_writeback_inside_dir(self) -> None:
policy = AutoApprovePolicy("/data")
self.assertTrue(asyncio.run(policy.approve_writeback(_target("/data/listings.xlsx"))))
def test_rejects_writeback_outside_dir(self) -> None:
policy = AutoApprovePolicy("/data")
self.assertFalse(asyncio.run(policy.approve_writeback(_target("/etc/passwd.xlsx"))))
class DenyAllPolicyTests(unittest.TestCase):
def test_denies_everything(self) -> None:
policy = DenyAllPolicy()
self.assertFalse(asyncio.run(policy.approve_execution([])))
self.assertFalse(asyncio.run(policy.approve_writeback(_target("/data/x.xlsx"))))
if __name__ == "__main__":
unittest.main()