Skip to content

Commit

Permalink
Validate k8s object labels (#413)
Browse files Browse the repository at this point in the history
* Improve 'make clean'

* Add some default chart tests that validate labels.

* Remove get_cached_chart because it doesn't speed anything up
  • Loading branch information
danielhoherd authored and pgvishnuram committed May 23, 2023
1 parent 2f27575 commit 81cde4c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ unittest-chart: charts venv ## Unittest the helm chart
clean: ## Clean build and test artifacts
rm -rf venv
rm -rf charts
rm -rf .ruff_cache
rm -rf .pytest_cache
rm -rf test-results
find . -name __pycache__ -exec rm -rf {} \+

.PHONY: update-requirements
update-requirements: ## Update all requirements.txt files
Expand Down
29 changes: 24 additions & 5 deletions tests/chart_tests/test_default_chart.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,33 @@

from tests.chart_tests.helm_template_generator import render_chart


def test_default_chart_with_basedomain():
"""Test that each template used with just baseDomain set renders."""
docs = render_chart()
assert len(docs) == 29
from .. import supported_k8s_versions


@pytest.mark.parametrize("namespace", ["abc", "123", "123abc", "123-abc"])
def test_namespace_names(namespace):
"""Test various namespace names to make sure they render correctly in templates"""
render_chart(namespace=namespace)


@pytest.mark.parametrize("kube_version", supported_k8s_versions)
class TestExtraObjects:
def test_default_chart_with_basedomain(self, kube_version):
"""Test that each template used with just baseDomain set renders."""
docs = render_chart(kube_version=kube_version)
assert len(docs) == 29

def test_default_labels(self, kube_version):
"""Test that extra-objects works as default."""
docs = render_chart(kube_version=kube_version)
exclusions = ["release-name-postgresql", "release-name-postgresql-hl"]

for doc in docs:
if doc["metadata"]["name"] in exclusions:
continue
assert doc["metadata"]["labels"]["chart"].startswith("airflow")
assert doc["metadata"]["labels"]["release"] == "release-name"
assert doc["metadata"]["labels"]["tier"] == "airflow"
assert doc["metadata"]["labels"]["heritage"] == "Helm"

assert all(bool(x) for x in doc["metadata"]["labels"].values())

0 comments on commit 81cde4c

Please sign in to comment.