from pathlib import Path import pytest from tai.input_parser import InputValidationError, build_request def test_build_request_normalizes_values() -> None: req = build_request( issue=" apache fails to start ", host=" web01 ", port=5566, target_paths=["/etc/apache2", "~/logs"], identity_file="~/.ssh/id_ed25519", jump_host=" bastion01 ", ignore_ssh_config=True, ) assert req.issue == "apache fails to start" assert req.host == "web01" assert req.port == 5566 assert req.target_paths[0] == Path("/etc/apache2") assert req.target_paths[1] == Path("~/logs").expanduser() assert req.identity_file == Path("~/.ssh/id_ed25519").expanduser() assert req.jump_host == "bastion01" assert req.ignore_ssh_config is True def test_build_request_rejects_empty_issue() -> None: with pytest.raises(InputValidationError): build_request( issue=" ", host="web01", port=22, target_paths=[], identity_file=None, jump_host=None, ignore_ssh_config=False, ) def test_build_request_rejects_empty_host() -> None: with pytest.raises(InputValidationError): build_request( issue="apache down", host=" ", port=22, target_paths=[], identity_file=None, jump_host=None, ignore_ssh_config=False, ) def test_build_request_rejects_invalid_port() -> None: with pytest.raises(InputValidationError): build_request( issue="apache down", host="web01", port=70000, target_paths=[], identity_file=None, jump_host=None, ignore_ssh_config=False, )