ariadne/tests/test_k8s_jobs.py

43 lines
1.2 KiB
Python

from __future__ import annotations
from ariadne.k8s.jobs import JobSpawner
def test_job_from_cronjob_applies_env_and_ttl() -> None:
cronjob = {
"spec": {
"jobTemplate": {
"spec": {
"template": {
"spec": {
"containers": [
{"name": "sync", "env": [{"name": "FOO", "value": "1"}]}
]
}
}
}
}
}
}
spawner = JobSpawner("ns", "cron")
job = spawner._job_from_cronjob(
cronjob,
"User@Name",
env_overrides=[{"name": "FOO", "value": "2"}, {"name": "BAR", "value": "3"}],
job_ttl_seconds=3600,
)
assert job["spec"]["ttlSecondsAfterFinished"] == 3600
labels = job["metadata"]["labels"]
assert labels["atlas.bstein.dev/trigger"] == "ariadne"
env = job["spec"]["template"]["spec"]["containers"][0]["env"]
env_map = {item["name"]: item["value"] for item in env}
assert env_map["FOO"] == "2"
assert env_map["BAR"] == "3"
def test_safe_name_fragment() -> None:
assert JobSpawner._safe_name_fragment("User@Name") == "user-name"