Files
matrix-alertmanager-receiver/tests/assert_chart.py
T
feedc0de 3da15981bd
Validate, publish and promote Matrix Alertmanager receiver chart / validate (push) Successful in 20s
Validate, publish and promote Matrix Alertmanager receiver chart / publish (push) Successful in 31s
Add Helm chart for Matrix Alertmanager receiver
2026-10-21 18:54:33 +02:00

36 lines
1.7 KiB
Python

#!/usr/bin/env python3
import sys
from pathlib import Path
import yaml
chart_dir = Path(sys.argv[1])
rendered_path = Path(sys.argv[2])
chart = yaml.safe_load((chart_dir / "Chart.yaml").read_text())
values = yaml.safe_load((chart_dir / "values.yaml").read_text())
documents = [doc for doc in yaml.safe_load_all(rendered_path.read_text()) if doc]
by_kind = {(doc["kind"], doc["metadata"]["name"]): doc for doc in documents}
name = "matrix-alertmanager-receiver"
deployment = by_kind[("Deployment", name)]
service = by_kind[("Service", name)]
service_monitor = by_kind[("ServiceMonitor", name)]
config = by_kind[("ConfigMap", name)]["data"]["config.yaml"]
container = deployment["spec"]["template"]["spec"]["containers"][0]
service_port = service["spec"]["ports"][0]
app_config = yaml.safe_load(config)
assert container["image"] == f'{values["image"]["repository"]}:{chart["appVersion"]}'
assert deployment["spec"]["replicas"] == 1
assert deployment["spec"]["selector"]["matchLabels"] == service["spec"]["selector"]
assert deployment["spec"]["selector"]["matchLabels"]["app.kubernetes.io/name"] == chart["name"]
assert container["ports"][0]["containerPort"] == service_port["port"]
assert service_port["targetPort"] == container["ports"][0]["name"]
assert container["readinessProbe"]["httpGet"]["path"] == "/metrics"
assert container["livenessProbe"]["httpGet"]["path"] == "/metrics"
assert container["env"][0]["valueFrom"]["secretKeyRef"]["key"] == values["matrix"]["accessTokenSecret"]["key"]
assert "access-token: ${MATRIX_ACCESS_TOKEN}" in config
assert app_config["matrix"]["access-token"] == "${MATRIX_ACCESS_TOKEN}"
assert service_monitor["spec"]["endpoints"][0]["port"] == service_port["name"]
assert service_monitor["spec"]["endpoints"][0]["path"] == "/metrics"