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"