diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl index 59f494e51d8a6842fc5eab58c56c4c179ad03a01..de78b3fcf20a2677189f21672768deaf4ca88bc5 100644 --- a/src/main/helm/templates/_helpers.tpl +++ b/src/main/helm/templates/_helpers.tpl @@ -139,4 +139,8 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} {{- $lowerClientName := . | lower }} {{- $alphanumericClientName := (include "app.replaceAllNonAlphanumeric" $lowerClientName ) }} {{- printf "%s-keycloak-client" ( $alphanumericClientName | trunc 20) }} +{{- end -}} + +{{- define "app.serviceAccountName" -}} +{{ printf "%s" ( (.Values.serviceAccount).name | default "alfa-service-account" ) }} {{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/bindings_type_configmap.yaml b/src/main/helm/templates/bindings_type_configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2b5ab84277af3b9690be17a0925b0b6e4f3cd6b2 --- /dev/null +++ b/src/main/helm/templates/bindings_type_configmap.yaml @@ -0,0 +1,32 @@ +# +# 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. +# + +apiVersion: v1 +kind: ConfigMap +metadata: + name: alfa-bindings-type + namespace: {{ include "app.namespace" . }} +data: + type: | + ca-certificates \ No newline at end of file diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml index ba7f70df7981f1f7687c06dfa3321e6cb82058a9..f3c62e8b65a11462fc2ef24f14ee5b311cf27fdd 100644 --- a/src/main/helm/templates/deployment.yaml +++ b/src/main/helm/templates/deployment.yaml @@ -47,6 +47,9 @@ spec: {{- include "app.defaultLabels" . | indent 8 }} component: alfa spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} topologySpreadConstraints: - maxSkew: 1 topologyKey: kubernetes.io/hostname @@ -134,7 +137,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 @@ -150,20 +159,39 @@ spec: readOnly: true - name: temp-dir mountPath: "/tmp" + {{- if (.Values.sso).tlsCertName }} + - name: sso-tls-certificate + mountPath: "/bindings/ca-certificates/sso-tls-crt.pem" + subPath: tls.crt + readOnly: true + {{- end }} volumes: - name: bindings configMap: - name: bindings-type + name: alfa-bindings-type - name: user-manager-tls-certificate secret: secretName: user-manager-tls-cert - name: temp-dir emptyDir: {} + {{- if (.Values.sso).tlsCertName }} + - name: sso-tls-certificate + secret: + secretName: {{ .Values.sso.tlsCertName }} + {{- end }} dnsConfig: {} dnsPolicy: ClusterFirst imagePullSecrets: + {{- if .Values.imagePullSecret }} + - name: {{ .Values.imagePullSecret }} + {{ else }} - name: alfa-image-pull-secret + {{- end }} restartPolicy: Always + {{- with .Values.hostAliases }} + hostAliases: +{{ toYaml . | indent 8 }} + {{- end }} schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 diff --git a/src/main/helm/templates/image-pull-secret.yaml b/src/main/helm/templates/image-pull-secret.yaml index 5703ac4e5dd6cf2256d0502c5d5dc4bac6237b9e..a8a00fa77dd35d2e1c63a452fea3e947e5349cbb 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 99f46917b63acea9d1f90c0121fdc11955e6ebd2..2dea7390aa17f67f6566eacc6b712798b3180551 100644 --- a/src/main/helm/templates/ingress.yaml +++ b/src/main/helm/templates/ingress.yaml @@ -26,7 +26,11 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: - {{- 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 @@ -52,6 +56,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-client-crd.yaml b/src/main/helm/templates/keycloak-client-crd.yaml index 3ebada5829b7fa6037191e94526161b7dbedd78e..fbcd6e5e36878f5f7e2f50685c9e3e939e6dc021 100644 --- a/src/main/helm/templates/keycloak-client-crd.yaml +++ b/src/main/helm/templates/keycloak-client-crd.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator -}} {{ range $client := .Values.sso.keycloak_clients }} --- {{- if $client.kopOperator }} @@ -58,4 +59,5 @@ spec: {{ toYaml . | indent 4 }} {{- end }} {{- end }} -{{ end }} \ No newline at end of file +{{ end }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/keycloak-crd.yaml b/src/main/helm/templates/keycloak-crd.yaml index 45ef2e768ee0be6ca465e66ed98226f58a20097a..71f21d0ee0d9fb65655dfe9cf8ac7365aa299d3e 100644 --- a/src/main/helm/templates/keycloak-crd.yaml +++ b/src/main/helm/templates/keycloak-crd.yaml @@ -1,4 +1,4 @@ ---- +{{- if not (.Values.sso).disableOzgOperator -}} apiVersion: operator.ozgcloud.de/v1 kind: OzgCloudKeycloakRealm metadata: @@ -7,3 +7,4 @@ metadata: spec: keep_after_delete: {{ .Values.sso.keep_after_delete | default false }} displayName: {{ include "app.ssoRealmDisplayName" . }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/keycloak-group-crd.yaml b/src/main/helm/templates/keycloak-group-crd.yaml index 9f557969d664a464f7df6091421cc4ada9ec0bc7..ce871eebb7825f563a6fedc58bbe8a5d345e988f 100644 --- a/src/main/helm/templates/keycloak-group-crd.yaml +++ b/src/main/helm/templates/keycloak-group-crd.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator -}} {{ range $group := .Values.sso.keycloak_groups }} --- apiVersion: operator.ozgcloud.de/v1 @@ -15,4 +16,5 @@ spec: value: {{ $attribute.value }} {{- end }} {{- end }} -{{ end }} \ No newline at end of file +{{ end }} +{{- 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 531c2d4233d9790cfe6e3eff41e3ba8d902223fb..fd766a7174272a8448e6732ff716305d71ff925e 100644 --- a/src/main/helm/templates/keycloak-user-crd.yaml +++ b/src/main/helm/templates/keycloak-user-crd.yaml @@ -1,3 +1,4 @@ +{{- if not (.Values.sso).disableOzgOperator -}} {{ range $user := concat (.Values.sso.api_users | default list) (.Values.sso.keycloak_users | default list) }} --- {{- if $user.kopOperator }} @@ -41,4 +42,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 aac7f74a5b94d7ef0d3c5e76a75bee83b3d086e1..f03b806e1fb9cbbfb1c52d859dfdb636f5f485e6 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,4 +1,5 @@ -{{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }} +{{- if not (.Values.sso).disableOzgOperator }} +{{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: @@ -16,4 +17,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 deb14859f8ec076370be684d804f8771c3db470f..832fd464fd53fa709c1e76c46558b6f8bc4a62b8 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 or (.Values.sso.keycloak_users) (.Values.sso.api_users) }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -12,4 +13,5 @@ roleRef: kind: Role name: ozgcloud-keycloak-operator-secrets-read-role-alfa 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 98ebcf04351ddc06feec8529bbff72b0c7ea2ebb..58a135db883529b13407c31b28b2008309df5670 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 or (.Values.sso.keycloak_users) (.Values.sso.api_users) }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -12,3 +13,4 @@ rules: 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 517307c08e2a0a94f94e1062d3fcc5d3428679ce..8f8fecc682dbb1fd7357b04ede7c526291a7d2c1 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 or (.Values.sso.keycloak_users) (.Values.sso.api_users) }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -12,4 +13,5 @@ roleRef: kind: Role name: ozgcloud-keycloak-operator-secrets-write-role-alfa 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 6299afcb8429b324f98f373af6e57512af60a27d..df1548effd48f4cfdbeeb632a84a328e748306d4 100644 --- a/src/main/helm/values.yaml +++ b/src/main/helm/values.yaml @@ -29,11 +29,6 @@ baseUrl: dev.by.ozg-cloud.de sso: serverUrl: https://sso.dev.by.ozg-cloud.de -imageCredentials: - registry: docker.ozg-sh.de - username: ozgcloud - password: - email: webmaster@ozg-sh.de image: repo: docker.ozg-sh.de diff --git a/src/test/bindings_type_configmap_test.yaml b/src/test/bindings_type_configmap_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..da77e60e93df1637cd2fab6703d9c9f6f5fbc0cd --- /dev/null +++ b/src/test/bindings_type_configmap_test.yaml @@ -0,0 +1,46 @@ +# +# 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: Certificate ConfigMap Binding +release: + name: alfa + namespace: sh-helm-test +templates: + - templates/bindings_type_configmap.yaml +tests: + - it: validate configMap values + asserts: + - isKind: + of: ConfigMap + - equal: + path: metadata.name + value: bindings-type + - equal: + path: metadata.namespace + value: sh-helm-test + - equal: + path: data + value: + type: | + ca-certificates \ No newline at end of file diff --git a/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml index c15ba1620117f2c0ed7087d45c0a266228fc0a1a..e1f8d9ecccead616a88dab079307e715dca2f672 100644 --- a/src/test/helm/deployment_bindings_test.yaml +++ b/src/test/helm/deployment_bindings_test.yaml @@ -52,6 +52,13 @@ tests: content: name: temp-dir mountPath: "/tmp" + - notContains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: sso-tls-certificate + mountPath: "/bindings/ca-certificates/ssl-tls-ca.pem" + subPath: ca.crt + readOnly: true - it: should have volume mounts set: usermanagerName: user-manager @@ -61,7 +68,7 @@ tests: content: name: bindings configMap: - name: bindings-type + name: alfa-bindings-type - contains: path: spec.template.spec.volumes content: @@ -72,4 +79,26 @@ tests: path: spec.template.spec.volumes content: name: temp-dir - emptyDir: {} \ No newline at end of file + emptyDir: {} + - notContains: + path: spec.template.spec.volumes + content: + name: sso-tls-certificate + - it: should have sso tls cert mount + set: + usermanagerName: user-manager + sso.tlsCertName: sso-tls-cert + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: sso-tls-certificate + secret: + secretName: sso-tls-cert + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: sso-tls-certificate + mountPath: "/bindings/ca-certificates/sso-tls-crt.pem" + subPath: tls.crt + readOnly: true \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml b/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml index ca3da3f1d8788db76b62da17dcf6f5e074c2b0d3..16f0109ff540cebb7b24da478c6443ade68e6483 100644 --- a/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml +++ b/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml @@ -29,7 +29,7 @@ release: templates: - templates/deployment.yaml tests: - - it: should work + - it: check default values asserts: - isKind: of: Deployment @@ -44,4 +44,22 @@ tests: value: false - equal: path: spec.template.spec.containers[0].securityContext.runAsNonRoot - value: false + 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..517408b4e2d4253f52badff8cc619d1689dba8f6 --- /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: alfa + 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..6e9426395432e6a30dcb4753bd38937edcfcb066 --- /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: alfa + 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: alfa-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_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2a6a0afc9b9042800078d1aacbc3b6943b0055dc --- /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: alfa + 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: alfa-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/image_pull_secret_test.yaml b/src/test/helm/image_pull_secret_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6ea26d0703f105c33527df9b24ea6351d29394d8 --- /dev/null +++ b/src/test/helm/image_pull_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: alfa + 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: alfa-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/keycloak-client-crd-test.yaml b/src/test/helm/keycloak-client-crd-test.yaml index f84809c0bff91e37867b7c39821eb4f234ab7d9e..4902829d978673407ad2bed0659acc537dc8b949 100644 --- a/src/test/helm/keycloak-client-crd-test.yaml +++ b/src/test/helm/keycloak-client-crd-test.yaml @@ -238,3 +238,15 @@ tests: userinfo.token.claim: "true" multivalued: "true" aggregate.attrs: "true" + + - it: should not create client cr if ozg operator is disabled + set: + sso: + disableOzgOperator: true + keycloak_clients: + - client_name: alfa + client_roles: + - name: ERSTE_ROLLE + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/keycloak-crd-test.yaml b/src/test/helm/keycloak-crd-test.yaml index 973e898b2b10a5846a92de7daa84295b1a900454..0c0e17061de164e73aceb8d304723420e4fee42c 100644 --- a/src/test/helm/keycloak-crd-test.yaml +++ b/src/test/helm/keycloak-crd-test.yaml @@ -61,6 +61,9 @@ tests: path: spec.displayName value: Realm für Helm (test) - - - + - it: should not create keycloak cr if ozg operator is disabled + set: + sso.disableOzgOperator: true + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/keycloak-group-crd-test.yaml b/src/test/helm/keycloak-group-crd-test.yaml index d549158977db88203d38a1092f52c78f4dab4705..d72c99a0c51205e1330eb29e113aa7cb5d81763b 100644 --- a/src/test/helm/keycloak-group-crd-test.yaml +++ b/src/test/helm/keycloak-group-crd-test.yaml @@ -198,4 +198,14 @@ tests: - equal: path: metadata.name value: "besonders-langer-gru-keycloak-group" - documentIndex: 3 \ No newline at end of file + documentIndex: 3 + + - it: should not create group cr if ozg operator is disabled + set: + sso: + disableOzgOperator: true + keycloak_groups: + - name: ".erste gruppe" + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/keycloak-user-crd-test.yaml b/src/test/helm/keycloak-user-crd-test.yaml index 5d8bf3dbeb34f2c620efc8d9f78d7534e019240f..6749e412eccff60baea5c5a4bf697bc468a9e4fb 100644 --- a/src/test/helm/keycloak-user-crd-test.yaml +++ b/src/test/helm/keycloak-user-crd-test.yaml @@ -553,4 +553,14 @@ tests: value: kop - equal: path: metadata.annotations.[helm.sh/resource-policy] - value: keep \ No newline at end of file + value: keep + + - it: should not create user cr if ozg operator is disabled + set: + sso: + disableOzgOperator: true + keycloak_users: + - name: kop + 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 5260c6877a43597a263374a09db4b03ac5681a75..b2968dd01a5eebc796023878e7e5cc2cd48bcc8c 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 @@ -74,4 +74,14 @@ tests: content: kind: ServiceAccount name: ozgcloud-keycloak-operator-serviceaccount - namespace: test-operator-namespace \ No newline at end of file + namespace: test-operator-namespace + + - it: should not create RoleBinding if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_users: + - name: apiUser + asserts: + - hasDocuments: + count: 0 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 2466ec7fa40dffe6b98c5c472989b398cc2ffb5d..c357513f57c0e6a9bb08aab6b33d8edb8c28ba3d 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 @@ -72,4 +72,14 @@ tests: - secrets verbs: - get - - list \ No newline at end of file + - list + + - it: should not create Role if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_users: + - 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 018e058be037ed3cefc00a6ad37b4bdcff205888..bab7d3f21457ae6f335bb8c793a7f38466157365 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 @@ -74,4 +74,14 @@ tests: content: kind: ServiceAccount name: ozgcloud-keycloak-operator-serviceaccount - namespace: test-operator-namespace \ No newline at end of file + namespace: test-operator-namespace + + - it: should not create RoleBinding if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_users: + - name: apiUser + asserts: + - hasDocuments: + count: 0 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 16b4766bd43a05be653660156121188006654d56..6614157874477c5f37b8c7e579b0458fc3e3eec5 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 @@ -61,4 +61,14 @@ tests: resources: - secrets verbs: - - create \ No newline at end of file + - create + + - it: should not create Role if ozg operator is disabled + set: + sso: + disableOzgOperator: true + api_users: + - 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..89fca75606528f96abf1ddd80c45a8d0acdaf371 --- /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: alfa + 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: alfa-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