Files
Owner/tests/test_cli_acceptance.py
T

38 lines
1.1 KiB
Python

from __future__ import annotations
import io
import json
import unittest
from contextlib import redirect_stdout
from owner_voice_pet.cli import main
class CliAcceptanceTests(unittest.TestCase):
def call(self, *args: str) -> tuple[int, dict[str, object]]:
buffer = io.StringIO()
with redirect_stdout(buffer):
code = main(list(args))
return code, json.loads(buffer.getvalue())
def test_acceptance_command_runs_end_to_end(self) -> None:
code, data = self.call("acceptance")
self.assertEqual(code, 0)
self.assertTrue(data["success"])
self.assertEqual(data["transcript"], "你是谁")
self.assertGreaterEqual(data["played_segments"], 1)
def test_validate_assets_command(self) -> None:
code, data = self.call("validate-assets")
self.assertEqual(code, 0)
self.assertTrue(data["valid"])
def test_security_check_command_has_no_leaks(self) -> None:
code, data = self.call("security-check")
self.assertEqual(code, 0)
self.assertEqual(data["secret_leaks"], [])
if __name__ == "__main__":
unittest.main()