test: add API-level coverage for internal helpers, schemas, and service validation

This commit is contained in:
2026-04-25 22:17:41 +09:30
parent 1de10323af
commit bb977aedf9
11 changed files with 1079 additions and 0 deletions
@@ -0,0 +1,59 @@
import pytest
from gatehouse_app.api.v1.organizations._helpers import _get_system_ca_dict
from gatehouse_app.config.ssh_ca_config import SSHCAConfig, reset_config_instance
# Ed25519 key fixture data
VALID_PRIVATE_KEY = (
"-----BEGIN OPENSSH PRIVATE KEY-----\n"
"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\n"
"QyNTUxOQAAACCi+2CgIPgoFL5P6DZlNXztuHy3+TuS2shh/xIDkW89OgAAAJhDQd+ZQ0Hf\n"
"mQAAAAtzc2gtZWQyNTUxOQAAACCi+2CgIPgoFL5P6DZlNXztuHy3+TuS2shh/xIDkW89Og\n"
"AAAECMbnF+1E22w9Z1AOTUbUGspL8Pb0UyP+p8lSLpAwZSpaL7YKAg+CgUvk/oNmU1fO24\n"
"fLf5O5LayGH/EgORbz06AAAAD2NvcnlAbGFwdG9wLXZtMQECAwQFBg==\n"
"-----END OPENSSH PRIVATE KEY-----"
)
class FakeEmptyConfig(SSHCAConfig):
def get_str(self, key, default=""):
if key == "ca_key_path":
return ""
return default
class BadConfig(SSHCAConfig):
def get_str(self, key, default=""):
raise RuntimeError("config error")
class TestSystemCADict:
def test_no_key_available_returns_none(self, monkeypatch):
monkeypatch.delenv("SSH_CA_PRIVATE_KEY", raising=False)
reset_config_instance()
monkeypatch.setattr(
"gatehouse_app.config.ssh_ca_config.get_ssh_ca_config",
lambda: FakeEmptyConfig(),
)
result = _get_system_ca_dict()
assert result is None
def test_env_var_returns_dict(self, monkeypatch):
monkeypatch.setenv("SSH_CA_PRIVATE_KEY", VALID_PRIVATE_KEY)
result = _get_system_ca_dict()
assert result is not None
assert result["ca_type"] == "user"
assert result["is_system"] is True
assert "fingerprint" in result
assert result["public_key"]
assert result["public_key"].startswith("ssh-")
def test_exception_gracefully_returns_none(self, monkeypatch):
monkeypatch.delenv("SSH_CA_PRIVATE_KEY", raising=False)
reset_config_instance()
monkeypatch.setattr(
"gatehouse_app.config.ssh_ca_config.get_ssh_ca_config",
lambda: BadConfig(),
)
result = _get_system_ca_dict()
assert result is None