test: add API-level coverage for internal helpers, schemas, and service validation
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user