From 74e7e5cdfb5c192c03a3a43ea564607014324aa1 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Sat, 24 May 2025 22:42:54 +0200 Subject: [PATCH] [tests] Add tests for tenant Kubernetes cluster Signed-off-by: Andrei Kvapil --- hack/e2e-apps.bats | 94 +++++++++++++++++++++++++++++ hack/{e2e.bats => e2e-cluster.bats} | 8 +-- packages/core/testing/Makefile | 16 ++++- 3 files changed, 111 insertions(+), 7 deletions(-) create mode 100755 hack/e2e-apps.bats rename hack/{e2e.bats => e2e-cluster.bats} (98%) diff --git a/hack/e2e-apps.bats b/hack/e2e-apps.bats new file mode 100755 index 00000000..9610a64a --- /dev/null +++ b/hack/e2e-apps.bats @@ -0,0 +1,94 @@ +#!/usr/bin/env bats +# ----------------------------------------------------------------------------- +# Cozystack end‑to‑end provisioning test (Bats) +# ----------------------------------------------------------------------------- + +@test "Create tenant with isolated mode enabled" { + kubectl create -f - <&2 @@ -376,7 +373,10 @@ EOF # Verify Grafana via ingress ingress_ip=$(kubectl get svc root-ingress-controller -n tenant-root -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - curl -sS -k "https://${ingress_ip}" -H 'Host: grafana.example.org' | grep -q Found + if ! curl -sS -k "https://${ingress_ip}" -H 'Host: grafana.example.org' --max-time 30 | grep -q Found; then + echo "Failed to access Grafana via ingress at ${ingress_ip}" >&2 + exit 1 + fi } @test "Keycloak OIDC stack is healthy" { diff --git a/packages/core/testing/Makefile b/packages/core/testing/Makefile index 2b67da45..f3a97eee 100755 --- a/packages/core/testing/Makefile +++ b/packages/core/testing/Makefile @@ -30,8 +30,13 @@ image-e2e-sandbox: yq -i '.e2e.image = strenv(IMAGE)' values.yaml rm -f images/e2e-sandbox.json -test: ## Run the end-to-end tests in existing sandbox. - docker exec "${SANDBOX_NAME}" sh -c 'cd /workspace && export COZYSTACK_INSTALLER_YAML=$$(helm template -n cozy-system installer ./packages/core/installer) && hack/cozytest.sh hack/e2e.bats' +test: test-cluster test-apps ## Run the end-to-end tests in existing sandbox + +test-cluster: ## Run the end-to-end for creating a cluster + docker exec "${SANDBOX_NAME}" sh -c 'cd /workspace && export COZYSTACK_INSTALLER_YAML=$$(helm template -n cozy-system installer ./packages/core/installer) && hack/cozytest.sh hack/e2e-cluster.bats' + +test-apps: ## Run the end-to-end tests for apps + docker exec "${SANDBOX_NAME}" sh -c 'cd /workspace && hack/cozytest.sh hack/e2e-apps.bats' delete: ## Remove sandbox from existing Kubernetes cluster. docker rm -f "${SANDBOX_NAME}" || true @@ -40,5 +45,10 @@ exec: ## Opens an interactive shell in the sandbox container. docker exec -ti "${SANDBOX_NAME}" bash apply: delete - docker run -d --rm --name "${SANDBOX_NAME}" --privileged "$$(yq .e2e.image values.yaml)" sleep infinity + docker run \ + -d --rm --name "${SANDBOX_NAME}" --privileged \ + -e TALOSCONFIG=/workspace/talosconfig \ + -e KUBECONFIG=/workspace/kubeconfig \ + "$$(yq .e2e.image values.yaml)" \ + sleep infinity docker cp "${ROOT_DIR}" "${SANDBOX_NAME}":/workspace