sand-boxer/tests/test_secrets.py

51 lines
1.6 KiB
Python
Raw Normal View History

"""Setup secret resolution tests."""
from __future__ import annotations
import pytest
from sandboxer.models import Profile, SetupSpec
from sandboxer.secrets.resolver import resolve_secret_ref, resolve_setup_secrets
def test_resolve_secret_ref_from_env(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("SANDBOXER_SECRET_BUILD_REGISTRY_TOKEN", "tok123")
assert resolve_secret_ref("build-registry-token") == "tok123"
def test_resolve_setup_secrets_success(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("SANDBOXER_SECRET_BUILD_REGISTRY_TOKEN", "tok123")
profile = Profile.model_validate(
{
"id": "profile.build",
"version": "1.0.0",
"extension": "ext.vm-packer",
"setup": SetupSpec(secret_refs=["build-registry-token"]).model_dump(),
}
)
secrets = resolve_setup_secrets(profile)
assert secrets["build-registry-token"] == "tok123"
def test_resolve_setup_secrets_missing_raises() -> None:
profile = Profile.model_validate(
{
"id": "profile.build",
"version": "1.0.0",
"extension": "ext.vm-packer",
"setup": SetupSpec(secret_refs=["missing-ref"]).model_dump(),
}
)
with pytest.raises(ValueError, match="Unresolved secret_refs"):
resolve_setup_secrets(profile)
def test_empty_secret_refs() -> None:
profile = Profile.model_validate(
{
"id": "profile.compose-e2e",
"version": "1.0.0",
"extension": "ext.compose-ssh",
}
)
assert resolve_setup_secrets(profile) == {}