diff --git a/Jenkinsfile b/Jenkinsfile index 10a1a2f418c2214d3d1e048ce47da45ee0feb3f8..95ffb54a20a4b01af5b6510a2db30d6266d5e9d6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -126,7 +126,7 @@ pipeline { dir('src/main/helm') { sh "helm lint -f ../../test/helm/linter_values.yaml" - sh "helm unittest --helm3 -f '../../test/helm/*.yaml' ." + sh "helm unittest --helm3 -f '../../test/helm/*.yaml' -f '../../test/helm/*/*.yaml' ." sh "helm package --version=${HELM_CHART_VERSION} ." diff --git a/run_helm_test.sh b/run_helm_test.sh index 54131038b34432e31a6d02b04af9f457660de4f2..8097a39a04ff100d5c9350e205d942100dd37894 100755 --- a/run_helm_test.sh +++ b/run_helm_test.sh @@ -4,4 +4,4 @@ set -e helm template ./src/main/helm/ -f src/test/helm/linter_values.yaml helm lint -f src/test/helm/linter_values.yaml ./src/main/helm/ -cd src/main/helm && helm unittest --helm3 -f '../../test/helm/*.yaml' . \ No newline at end of file +cd src/main/helm && helm unittest --helm3 -f '../../test/helm/*/*.yaml' -f '../../test/helm/*.yaml' . diff --git a/src/test/helm/rbacs/keycloak_admin_secret_read.yaml b/src/test/helm/rbacs/keycloak_admin_secret_read.yaml new file mode 100644 index 0000000000000000000000000000000000000000..214392dc7e8e146750874e6c06aa2ec67305175a --- /dev/null +++ b/src/test/helm/rbacs/keycloak_admin_secret_read.yaml @@ -0,0 +1,90 @@ +# +# 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: Keycloak admin secret rbac test +release: + name: ozg-operator + namespace: test-namespace +templates: + - templates/rbacs/keycloak_admin_secret_read.yaml +tests: + - it: test RoleBinding metadata + asserts: + - isKind: + of: RoleBinding + documentIndex: 0 + - equal: + path: metadata.name + value: ozg-operator-keycloak-admin-secret-viewer-role-binding + documentIndex: 0 + - equal: + path: metadata.namespace + value: keycloak + documentIndex: 0 + - it: test RoleBinding subject + asserts: + - contains: + path: subjects + content: + kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: test-namespace + documentIndex: 0 + - it: test RoleBinding roleRef + asserts: + - equal: + path: roleRef + value: + kind: Role + name: ozg-operator-keycloak-admin-secret-viewer-role + apiGroup: rbac.authorization.k8s.io + documentIndex: 0 + + - it: test Role metadata + asserts: + - isKind: + of: Role + documentIndex: 1 + - equal: + path: metadata.name + value: ozg-operator-keycloak-admin-secret-viewer-role + documentIndex: 1 + - equal: + path: metadata.namespace + value: keycloak + documentIndex: 1 + - it: test RoleBinding rules + asserts: + - contains: + path: rules + content: + apiGroups: + - "" + resourceNames: + - keycloak-admin-secret + resources: + - secrets + verbs: + - get + documentIndex: 1 \ No newline at end of file diff --git a/src/test/helm/rbacs/keycloak_read_test.yaml b/src/test/helm/rbacs/keycloak_read_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..840ac9bda92453fa466217fb726932599a7dab3a --- /dev/null +++ b/src/test/helm/rbacs/keycloak_read_test.yaml @@ -0,0 +1,93 @@ +# +# 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: Keycloak read rbac test +release: + name: ozg-operator + namespace: test-namespace +templates: + - templates/rbacs/keycloak_read.yaml +tests: + - it: test ClusterRoleBinding metadata + asserts: + - isKind: + of: ClusterRoleBinding + documentIndex: 0 + - equal: + path: metadata.name + value: ozg-operator-keycloak-viewer-role-binding + documentIndex: 0 + - it: test ClusterRoleBinding subject + asserts: + - contains: + path: subjects + content: + kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: test-namespace + documentIndex: 0 + - it: test ClusterRoleBinding roleRef + asserts: + - equal: + path: roleRef + value: + kind: ClusterRole + name: ozg-operator-keycloak-viewer-role + apiGroup: rbac.authorization.k8s.io + documentIndex: 0 + + - it: test ClusterRole metadata + asserts: + - isKind: + of: ClusterRole + documentIndex: 1 + - equal: + path: metadata.name + value: ozg-operator-keycloak-viewer-role + documentIndex: 1 + - it: test ClusterRoleBinding rules + asserts: + - contains: + path: rules + content: + apiGroups: + - operator.ozgcloud.de + resources: + - ozgkeycloakusers + - ozgkeycloakusers/status + - ozgkeycloakusers/finalizers + - ozgkeycloakgroups + - ozgkeycloakgroups/status + - ozgkeycloakgroups/finalizers + - ozgkeycloakrealms + - ozgkeycloakrealms/status + - ozgkeycloakrealms/finalizers + - ozgkeycloakclients + - ozgkeycloakclients/status + - ozgkeycloakclients/finalizers + verbs: + - get + - list + - watch + documentIndex: 1 \ No newline at end of file diff --git a/src/test/helm/rbacs/keycloak_write_test.yaml b/src/test/helm/rbacs/keycloak_write_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6aa6630738727ae77a84194ea3a769b89ceffa95 --- /dev/null +++ b/src/test/helm/rbacs/keycloak_write_test.yaml @@ -0,0 +1,92 @@ +# +# 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: Keycloak write rbac test +release: + name: ozg-operator + namespace: test-namespace +templates: + - templates/rbacs/keycloak_write.yaml +tests: + - it: test ClusterRoleBinding metadata + asserts: + - isKind: + of: ClusterRoleBinding + documentIndex: 0 + - equal: + path: metadata.name + value: ozg-operator-keycloak-write-role-binding + documentIndex: 0 + - it: test ClusterRoleBinding subject + asserts: + - contains: + path: subjects + content: + kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: test-namespace + documentIndex: 0 + - it: test ClusterRoleBinding roleRef + asserts: + - equal: + path: roleRef + value: + kind: ClusterRole + name: ozg-operator-keycloak-write-role + apiGroup: rbac.authorization.k8s.io + documentIndex: 0 + + - it: test ClusterRole metadata + asserts: + - isKind: + of: ClusterRole + documentIndex: 1 + - equal: + path: metadata.name + value: ozg-operator-keycloak-write-role + documentIndex: 1 + - it: test ClusterRoleBinding rules + asserts: + - contains: + path: rules + content: + apiGroups: + - operator.ozgcloud.de + resources: + - ozgkeycloakusers + - ozgkeycloakusers/status + - ozgkeycloakusers/finalizers + - ozgkeycloakgroups + - ozgkeycloakgroups/status + - ozgkeycloakgroups/finalizers + - ozgkeycloakrealms + - ozgkeycloakrealms/status + - ozgkeycloakrealms/finalizers + - ozgkeycloakclients + - ozgkeycloakclients/status + - ozgkeycloakclients/finalizers + verbs: + - patch + - update + documentIndex: 1 \ No newline at end of file diff --git a/src/test/helm/rbacs/serviceaccount_test.yaml b/src/test/helm/rbacs/serviceaccount_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5f79cd62174d48bac5b5fc5fbd6964213840e51b --- /dev/null +++ b/src/test/helm/rbacs/serviceaccount_test.yaml @@ -0,0 +1,41 @@ +# +# 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: ServiceAccount test +release: + name: ozg-operator + namespace: test-namespace +templates: + - templates/rbacs/serviceaccount.yaml +tests: + - it: test metadata + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: ozg-operator-serviceaccount + - equal: + path: metadata.namespace + value: test-namespace \ No newline at end of file