diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl index 8c613dac72be13abdf18b464e323513b6044363b..c75701fd803c0c182d21d01a5d956092df489911 100644 --- a/src/main/helm/templates/_helpers.tpl +++ b/src/main/helm/templates/_helpers.tpl @@ -132,4 +132,8 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} {{- else -}} {{ printf "user-manager-database" }} {{- end -}} +{{- end -}} + +{{- define "app.serviceAccountName" -}} +{{ printf "%s" ( (.Values.serviceAccount).name | default "user-manager-service-account" ) }} {{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/api-password-secret.yaml b/src/main/helm/templates/api-password-secret.yaml index 7402d8532ea15c212f1f6d4f1541260f00dccfae..87a1368702c576e90a6f95121c83c4967c0b8a69 100644 --- a/src/main/helm/templates/api-password-secret.yaml +++ b/src/main/helm/templates/api-password-secret.yaml @@ -1,4 +1,4 @@ -{{- if not (.Values.sso).api_user -}} +{{- if and (not (.Values.sso).api_user) (((.Values.ozgcloud).keycloak).api).password -}} apiVersion: v1 kind: Secret metadata: diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml index 2f65ea6f1443d60b32ca4c5e349674d607a93c8f..8aed2667d831c4ea8f47c61c32cec7e5d7715083 100644 --- a/src/main/helm/templates/deployment.yaml +++ b/src/main/helm/templates/deployment.yaml @@ -48,6 +48,9 @@ spec: {{- include "app.defaultLabels" . | indent 8 }} component: user-manager spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} topologySpreadConstraints: - maxSkew: 1 topologyKey: kubernetes.io/hostname @@ -107,6 +110,17 @@ spec: {{- with (.Values.env).customList }} {{ toYaml . | indent 8 }} {{- end }} + {{- if .Values.optionalTrustStoreSecretName }} + - name: TRUST_STORE_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.optionalTrustStoreSecretName }} + key: password + optional: false + args: + - '-Djavax.net.ssl.trustStore=/optional-trust-store/truststore.jks' + - '-Djavax.net.ssl.trustStorePassword=$(TRUST_STORE_PASSWORD)' + {{- end }} image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" imagePullPolicy: Always name: user-manager @@ -144,7 +158,13 @@ spec: allowPrivilegeEscalation: false privileged: false readOnlyRootFilesystem: false - runAsNonRoot: false + runAsNonRoot: true + {{- with (.Values.securityContext).runAsUser }} + runAsUser: {{ . }} + {{- end }} + {{- with (.Values.securityContext).runAsGroup }} + runAsGroup: {{ . }} + {{- end }} stdin: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File @@ -158,15 +178,34 @@ spec: mountPath: "/user-manager-tls-certificate/tls.key" subPath: tls.key readOnly: true + {{- if .Values.optionalTrustStoreSecretName }} + - name: optional-trust-store + mountPath: "/optional-trust-store/truststore.jks" + subPath: truststore.jks + readOnly: true + {{- end }} volumes: - name: user-manager-tls-certificate secret: secretName: user-manager-tls-cert + {{- if .Values.optionalTrustStoreSecretName }} + - name: optional-trust-store + secret: + secretName: {{ .Values.optionalTrustStoreSecretName }} + {{- end }} dnsConfig: {} dnsPolicy: ClusterFirst imagePullSecrets: + {{- if .Values.imagePullSecret }} + - name: {{ .Values.imagePullSecret }} + {{ else }} - name: user-manager-image-pull-secret + {{- end }} restartPolicy: Always + {{- with .Values.hostAliases }} + hostAliases: +{{ toYaml . | indent 8 }} + {{- end }} schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/src/main/helm/templates/image-pull-secret.yaml b/src/main/helm/templates/image-pull-secret.yaml index 513467db846b2e8cb43f8afe510ce1691f62edc4..02be1463951799822886c4bc8593c9310be130fa 100644 --- a/src/main/helm/templates/image-pull-secret.yaml +++ b/src/main/helm/templates/image-pull-secret.yaml @@ -22,6 +22,7 @@ # unter der Lizenz sind dem Lizenztext zu entnehmen. # +{{- if not (.Values.imagePullSecret) }} apiVersion: v1 kind: Secret metadata: @@ -29,4 +30,5 @@ metadata: namespace: {{ include "app.namespace" . }} type: kubernetes.io/dockerconfigjson data: - .dockerconfigjson: {{ include "app.imagePullSecret" . }} \ No newline at end of file + .dockerconfigjson: {{ include "app.imagePullSecret" . }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml index cb19ba1f2301358224418e0c738d97394c7d5689..b10443e90f79d47c91d1724bf1192da9b8e0de8e 100644 --- a/src/main/helm/templates/ingress.yaml +++ b/src/main/helm/templates/ingress.yaml @@ -29,7 +29,11 @@ metadata: annotations: {{- toYaml . | nindent 4 }} {{- end }} more_set_headers "Access-Control-Allow-Origin: {{ (include "app.alfaAddress" .) }}"; - {{- if (.Values.ingress).use_staging_cert }} + {{- if (.Values.ingress).certManagerAnnotations -}} + {{- range (.Values.ingress).certManagerAnnotations }} +{{ . | indent 4 }} + {{- end }} + {{- else if (.Values.ingress).use_staging_cert }} cert-manager.io/cluster-issuer: letsencrypt-staging {{- else }} cert-manager.io/cluster-issuer: letsencrypt-prod @@ -54,6 +58,8 @@ spec: tls: - hosts: - {{ trimPrefix "https://" ( include "app.baseUrl" . ) }} - {{- if ne (.Values).cluster_env "dataport" }} + {{- if (.Values.ingress).tlsSecretName }} + secretName: {{ (.Values.ingress).tlsSecretName }} + {{- else if ne (.Values).cluster_env "dataport" }} secretName: {{ .Values.ozgcloud.bezeichner }}-{{ include "app.name" . }}-tls {{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/keycloak-user-crd.yaml b/src/main/helm/templates/keycloak-user-crd.yaml index 1800e7a79dfd86fcee095f7df760cd054ae71d8d..42dd1067e64c01021d3df351f92caab603bc8c02 100644 --- a/src/main/helm/templates/keycloak-user-crd.yaml +++ b/src/main/helm/templates/keycloak-user-crd.yaml @@ -1,5 +1,5 @@ -{{ if .Values.sso.api_user }} ---- +{{- if not (.Values.sso).disableOzgOperator }} +{{ if (.Values.sso).api_user }} apiVersion: operator.ozgcloud.de/v1 kind: OzgCloudKeycloakUser metadata: @@ -32,4 +32,5 @@ spec: {{ toYaml . | indent 6 }} {{- end }} {{- end }} -{{ end }} \ No newline at end of file +{{ end }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml index 02f30c4d6e6e6e12209b0832495852dbc4f58497..b8647883929a1d044d1ab307dd15f6173331ed5e 100644 --- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml +++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator }} {{- if (.Values.sso).api_user }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -14,4 +15,5 @@ rules: verbs: - get - list +{{- end }} {{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml index fdcf591e4bce23591d62e06622edccaaf81e7821..b20195a78428c6f8585200a2e9c0af9cc780a4d1 100644 --- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml +++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator }} {{- if (.Values.sso).api_user }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -12,4 +13,5 @@ roleRef: kind: Role name: ozgcloud-keycloak-operator-secrets-read-role-user-manager apiGroup: rbac.authorization.k8s.io +{{- end }} {{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml index f5f02cf36921c472bee3e8ad5a33cc90ee69c9b1..4144a159aebbd65bcad03fc2d88a5b023c64225f 100644 --- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml +++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator }} {{- if (.Values.sso).api_user }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -11,4 +12,5 @@ rules: - secrets verbs: - create +{{- end }} {{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml index ad6a1e1141feb98aa4e9df6eda829149347dd4f4..147d792a337e04a4d1b4dd81c8b57826af08dfa1 100644 --- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml +++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator }} {{- if (.Values.sso).api_user }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -12,4 +13,5 @@ roleRef: kind: Role name: ozgcloud-keycloak-operator-secrets-write-role-user-manager apiGroup: rbac.authorization.k8s.io +{{- end }} {{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0e13e6bcabf1933117c29487473453b63265922a --- /dev/null +++ b/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.serviceAccount).create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "app.serviceAccountName" . }} + namespace: {{ include "app.namespace" . }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml index 49b4769c0b0aea9f8dc22b61dda59b26e83e7234..daa6f7ce4cfe5f3660282d2a063e9f709a08c1f4 100644 --- a/src/main/helm/values.yaml +++ b/src/main/helm/values.yaml @@ -39,12 +39,6 @@ ozgcloud: api: user: userManagerApiUser -imageCredentials: - registry: docker.ozg-sh.de - username: ozgcloud - password: Ymtbek3BWR8v - email: webmaster@ozg-sh.de - ingress: configuration_snippet: nginx.ingress.kubernetes.io/configuration-snippet: | diff --git a/src/test/helm/deployment_container_security_context_test.yaml b/src/test/helm/deployment_container_security_context_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d95c4d151a7fc52e2f94edbc6740571fb9460c8c --- /dev/null +++ b/src/test/helm/deployment_container_security_context_test.yaml @@ -0,0 +1,65 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: user-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +tests: + - it: check default values + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.privileged + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.runAsNonRoot + value: true + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsUser + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsGroup + - it: check runAsUser + set: + securityContext.runAsUser: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsUser + value: 1000 + - it: check runAsGroup + set: + securityContext.runAsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsGroup + value: 1000 \ No newline at end of file diff --git a/src/test/helm/deployment_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6b1ce6a5b7626f4b00a7d9274fb7f5948430414e --- /dev/null +++ b/src/test/helm/deployment_host_aliases_test.yaml @@ -0,0 +1,50 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment host aliases +release: + name: user-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +tests: + - it: should not set hostAliases + asserts: + - isNull: + path: spec.template.spec.hostAliases + - it: should set hostAliases + set: + hostAliases: + - ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" + asserts: + - contains: + path: spec.template.spec.hostAliases + content: + ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..41ea808d5871897af3c6712f19aaff37bbf2203e --- /dev/null +++ b/src/test/helm/deployment_imagepull_secret_test.yaml @@ -0,0 +1,47 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: user-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +tests: + - it: should use default imagePull secret + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: user-manager-image-pull-secret + - it: should set the imagePull secret + set: + imagePullSecret: image-pull-secret + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: image-pull-secret \ No newline at end of file diff --git a/src/test/helm/deployment_optional_trust_store_test.yaml b/src/test/helm/deployment_optional_trust_store_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..497868820b5a644004ce464d6bfb4404822a0236 --- /dev/null +++ b/src/test/helm/deployment_optional_trust_store_test.yaml @@ -0,0 +1,79 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test environments +templates: + - templates/deployment.yaml +tests: + - it: check without truststore + asserts: + - isEmpty: + path: spec.template.spec.containers[0].args + - notContains: + path: spec.template.spec.containers[0].env + content: + name: TRUST_STORE_PASSWORD + - notContains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: optional-trust-store + mountPath: "/optional-trust-store/truststore.jks" + subPath: truststore.jks + readOnly: true + - notContains: + path: spec.template.spec.volumes + content: + name: optional-trust-store + + - it: check with truststore + set: + optionalTrustStoreSecretName: optional-trust-store-secret + asserts: + - equal: + path: spec.template.spec.containers[0].args + value: + - '-Djavax.net.ssl.trustStore=/optional-trust-store/truststore.jks' + - '-Djavax.net.ssl.trustStorePassword=$(TRUST_STORE_PASSWORD)' + - contains: + path: spec.template.spec.containers[0].env + content: + name: TRUST_STORE_PASSWORD + valueFrom: + secretKeyRef: + name: optional-trust-store-secret + key: password + optional: false + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: optional-trust-store + mountPath: "/optional-trust-store/truststore.jks" + subPath: truststore.jks + readOnly: true + - contains: + path: spec.template.spec.volumes + content: + name: optional-trust-store + secret: + secretName: optional-trust-store-secret \ No newline at end of file diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2b3d1c98e38a215a33eee7affe428325c416538e --- /dev/null +++ b/src/test/helm/deployment_service_account_test.yaml @@ -0,0 +1,52 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment service account +release: + name: user-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +tests: + - it: should use service account with default name + set: + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: user-manager-service-account + - it: should use service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: helm-service-account + - it: should use default service account + asserts: + - isNull: + path: spec.template.spec.serviceAccountName \ No newline at end of file diff --git a/src/test/helm/imagepull_secret_test.yaml b/src/test/helm/imagepull_secret_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f30a2e15fb14d1f12518d4b6f3777f5ae6cc972f --- /dev/null +++ b/src/test/helm/imagepull_secret_test.yaml @@ -0,0 +1,59 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test image pull secret +templates: + - templates/image-pull-secret.yaml +release: + name: user-manager + namespace: helm-test +tests: + - it: should match basic data + set: + imageCredentials: + registry: docker.ozg-sh.de + username: test + password: test1234 + email: webmaster@ozg-sh.de + asserts: + - hasDocuments: + count: 1 + - containsDocument: + kind: Secret + apiVersion: v1 + - equal: + path: metadata.name + value: user-manager-image-pull-secret + - equal: + path: metadata.namespace + value: helm-test + - isNotEmpty: + path: data.[.dockerconfigjson] + + - it: should not create image pull secret + set: + imagePullSecret: "image-pull-secret" + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml index 3acc4647aae75a30637491d988d399085b6a276a..88406d05a1cc1a22cb3140049e6e35ec1e9b7804 100644 --- a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml +++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml @@ -59,6 +59,15 @@ tests: path: roleRef.apiGroup value: rbac.authorization.k8s.io - it: should not create RoleBinding if no keycloak users available + asserts: + - hasDocuments: + count: 0 + - it: should not create RoleBinding if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_user: + - name: apiuser asserts: - hasDocuments: count: 0 \ No newline at end of file diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml index 4464f2f2ede235ba32da45a0dcfc10e2aa582c9b..17dcf4f36dece6a74e68ee49a515ffcf8562de7e 100644 --- a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml +++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml @@ -46,6 +46,15 @@ tests: - get - list - it: should not create RoleBinding if no keycloak users available + asserts: + - hasDocuments: + count: 0 + - it: should not create Role if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_user: + - name: apiuser asserts: - hasDocuments: count: 0 \ No newline at end of file diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml index 0522ac029b8512e76e162023cbaa0d5ade5d9af2..a4e1272f182b1d8fe08e82c6d644de5543ab80e8 100644 --- a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml +++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml @@ -59,6 +59,15 @@ tests: path: roleRef.apiGroup value: rbac.authorization.k8s.io - it: should not create RoleBinding if no keycloak users available + asserts: + - hasDocuments: + count: 0 + - it: should not create RoleBinding if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_user: + - name: apiuser asserts: - hasDocuments: count: 0 \ No newline at end of file diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml index f5a365040075125f0a02784ee1e800f97561456f..25f63240d466854506a043b44c184335a0c2c63e 100644 --- a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml +++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml @@ -43,6 +43,15 @@ tests: verbs: - create - it: should not create RoleBinding if no keycloak users available + asserts: + - hasDocuments: + count: 0 + - it: should not create Role if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_user: + - name: apiuser asserts: - hasDocuments: count: 0 \ No newline at end of file diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f5b9a319ac60675d0f1ebabfa17e8882cab5d2c5 --- /dev/null +++ b/src/test/helm/service_account_test.yaml @@ -0,0 +1,62 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test service account +release: + name: user-manager + namespace: sh-helm-test +templates: + - templates/service_account.yaml +tests: + - it: should create service account with default name + set: + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: user-manager-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: helm-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should not create service account + asserts: + - hasDocuments: + count: 0 \ No newline at end of file