Files
artifact-store/tests/unit/test_config_storage.py

40 lines
1.4 KiB
Python

"""Storage configuration parsing tests."""
from __future__ import annotations
from pathlib import Path
import pytest
from artifactstore.config import parse_backend_routes, resolve_secret_ref
def test_parse_backend_routes_supports_wildcards() -> None:
routes = parse_backend_routes("guide-board:release-evidence=s3,*:*=local")
assert len(routes) == 2
assert routes[0].matches(producer="guide-board", retention_class="release-evidence")
assert not routes[0].matches(producer="guide-board", retention_class="raw-evidence")
assert routes[1].matches(producer="anything", retention_class="raw-evidence")
assert routes[0].backend_id == "s3"
def test_parse_backend_routes_rejects_invalid_entry() -> None:
with pytest.raises(ValueError):
parse_backend_routes("guide-board=s3")
def test_resolve_secret_ref_from_env(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("ARTIFACTSTORE_TEST_SECRET", "secret")
assert resolve_secret_ref("env:ARTIFACTSTORE_TEST_SECRET") == "secret"
def test_resolve_secret_ref_from_file(tmp_path: Path) -> None:
secret_file = tmp_path / "secret"
secret_file.write_text("secret\n", encoding="utf-8")
assert resolve_secret_ref(f"file:{secret_file}") == "secret"
def test_resolve_secret_ref_rejects_literal() -> None:
with pytest.raises(ValueError):
resolve_secret_ref("literal-secret")