From fa372bbff40ee440332eda96d7879ad51f1cf4bb Mon Sep 17 00:00:00 2001 From: Sheogorath <sheogorath@shivering-isles.com> Date: Mon, 26 Sep 2022 04:00:25 +0200 Subject: [PATCH] test(keycloak): Add more complete snapshot test This patch adds a new snapshot test that should cover most resources of the helm chart, instead of just the basic ones, it also renames the existing job to properly represent what it compares to. This will also allow to better monitor some of the more complex resources that are deployed by the chart. --- .../__snapshot__/snapshot_test.yaml.snap | 174 +++++++++++++++++- charts/keycloak/tests/snapshot_test.yaml | 19 +- 2 files changed, 191 insertions(+), 2 deletions(-) diff --git a/charts/keycloak/tests/__snapshot__/snapshot_test.yaml.snap b/charts/keycloak/tests/__snapshot__/snapshot_test.yaml.snap index 013e02e67..45c826300 100644 --- a/charts/keycloak/tests/__snapshot__/snapshot_test.yaml.snap +++ b/charts/keycloak/tests/__snapshot__/snapshot_test.yaml.snap @@ -1,4 +1,4 @@ -should match snapshot: +should match basic snapshot: 1: | apiVersion: apps/v1 kind: Deployment @@ -168,3 +168,175 @@ should match snapshot: app.kubernetes.io/version: 4.5.6 helm.sh/chart: keycloak-1.2.3 name: RELEASE-NAME-keycloak +should match full snapshot: + 1: | + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: keycloak + app.kubernetes.io/version: 4.5.6 + helm.sh/chart: keycloak-1.2.3 + name: RELEASE-NAME-keycloak + spec: + replicas: 2 + selector: + matchLabels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/name: keycloak + template: + metadata: + annotations: + checksum/config: 59795d176ed09e400ded93da25c6d22200033cdb1859c4c32b6993333ac410c3 + labels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/name: keycloak + spec: + containers: + - args: + - start + - --cache=ispn + - --cache-config-file=cache-ispn.xml + - --cache-stack=kubernetes + - --proxy + - edge + env: + - name: KC_HEALTH_ENABLED + value: "true" + - name: KC_METRICS_ENABLED + value: "true" + - name: KC_HOSTNAME + value: keycloak.example.com + - name: JAVA_OPTS_APPEND + value: -Djgroups.dns.query=RELEASE-NAME-keycloak-headless.NAMESPACE.svc.cluster.local + - name: KC_DB + value: postgres + - name: KC_DB_USERNAME + valueFrom: + secretKeyRef: + key: database-username + name: RELEASE-NAME-keycloak + optional: false + - name: KC_DB_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: RELEASE-NAME-keycloak + optional: false + - name: KC_DB_URL + valueFrom: + secretKeyRef: + key: database-url + name: RELEASE-NAME-keycloak + optional: false + image: quay.io/keycloak/keycloak:4.5.6 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: /health/live + port: http + periodSeconds: 10 + name: keycloak + ports: + - containerPort: 8080 + name: http + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /health/ready + port: http + periodSeconds: 10 + resources: + limits: + cpu: "1" + memory: 1.5Gi + requests: + cpu: 100m + memory: 1Gi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + runAsNonRoot: true + startupProbe: + failureThreshold: 30 + httpGet: + path: /health/live + port: http + periodSeconds: 10 + securityContext: {} + serviceAccountName: RELEASE-NAME-keycloak + 2: | + apiVersion: v1 + kind: Secret + metadata: + labels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: keycloak + app.kubernetes.io/version: 4.5.6 + helm.sh/chart: keycloak-1.2.3 + name: RELEASE-NAME-keycloak + stringData: + database-password: example-db-password + database-url: example-db-url + database-username: example-db-user + type: Opaque + 3: | + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: keycloak + app.kubernetes.io/version: 4.5.6 + helm.sh/chart: keycloak-1.2.3 + name: RELEASE-NAME-keycloak + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/name: keycloak + type: ClusterIP + 4: | + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: keycloak + app.kubernetes.io/version: 4.5.6 + helm.sh/chart: keycloak-1.2.3 + name: RELEASE-NAME-keycloak-headless + spec: + clusterIP: None + ports: + - name: ping + port: 7800 + protocol: TCP + targetPort: 7800 + selector: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/name: keycloak + 5: | + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: keycloak + app.kubernetes.io/version: 4.5.6 + helm.sh/chart: keycloak-1.2.3 + name: RELEASE-NAME-keycloak diff --git a/charts/keycloak/tests/snapshot_test.yaml b/charts/keycloak/tests/snapshot_test.yaml index 19b64df40..b0fc15e2e 100644 --- a/charts/keycloak/tests/snapshot_test.yaml +++ b/charts/keycloak/tests/snapshot_test.yaml @@ -5,7 +5,7 @@ templates: - service.yaml - serviceaccount.yaml tests: - - it: should match snapshot + - it: should match basic snapshot set: keycloak: database: @@ -17,3 +17,20 @@ tests: appVersion: 4.5.6 asserts: - matchSnapshot: {} + - it: should match full snapshot + set: + replicaCount: 2 + keycloak: + database: + username: example-db-user + password: example-db-password + url: example-db-url + networkPolicy: + create: true + metrics: + enabled: true + chart: + version: 1.2.3 + appVersion: 4.5.6 + asserts: + - matchSnapshot: {} -- GitLab