From e6c1f0eb0fa797f7c0244a813c0616ae45df300b Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 21 Aug 2023 16:35:31 +0200 Subject: [PATCH] OZG-3961 add rbac test --- Jenkinsfile | 2 +- run_helm_test.sh | 2 +- .../rbacs/keycloak_admin_secret_read.yaml | 90 ++++++++++++++++++ src/test/helm/rbacs/keycloak_read_test.yaml | 93 +++++++++++++++++++ src/test/helm/rbacs/keycloak_write_test.yaml | 92 ++++++++++++++++++ src/test/helm/rbacs/serviceaccount_test.yaml | 41 ++++++++ 6 files changed, 318 insertions(+), 2 deletions(-) create mode 100644 src/test/helm/rbacs/keycloak_admin_secret_read.yaml create mode 100644 src/test/helm/rbacs/keycloak_read_test.yaml create mode 100644 src/test/helm/rbacs/keycloak_write_test.yaml create mode 100644 src/test/helm/rbacs/serviceaccount_test.yaml diff --git a/Jenkinsfile b/Jenkinsfile index 10a1a2f..95ffb54 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 5413103..8097a39 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 0000000..214392d --- /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 0000000..840ac9b --- /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 0000000..6aa6630 --- /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 0000000..5f79cd6 --- /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 -- GitLab