From 66dfd03d505ac83b4207affefc1dd504c7494356 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 11 Jul 2023 14:47:11 +0200
Subject: [PATCH] OZG-3961 - move service account config to alfa

---
 run_helm_test.sh                              |  7 ++
 .../serviceaccount_keycloak_read.yaml         | 62 ++++++++++++
 .../serviceaccount_keycloak_write.yaml        | 66 +++++++++++++
 src/test/helm/keycloak-crd-test.yaml          | 18 +---
 .../serviceaccount_keycloak_read_test.yaml    | 94 ++++++++++++++++++
 .../serviceaccount_keycloak_write_test.yaml   | 98 +++++++++++++++++++
 6 files changed, 329 insertions(+), 16 deletions(-)
 create mode 100755 run_helm_test.sh
 create mode 100644 src/main/helm/templates/serviceaccount_keycloak_read.yaml
 create mode 100644 src/main/helm/templates/serviceaccount_keycloak_write.yaml
 create mode 100644 src/test/helm/serviceaccount_keycloak_read_test.yaml
 create mode 100644 src/test/helm/serviceaccount_keycloak_write_test.yaml

diff --git a/run_helm_test.sh b/run_helm_test.sh
new file mode 100755
index 0000000000..7324e7d118
--- /dev/null
+++ b/run_helm_test.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+helm template  ./src/main/helm/ -f src/test/unit-values.yaml
+helm lint -f src/test/unit-values.yaml ./src/main/helm/
+cd src/main/helm && helm unittest --helm3 -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' .
\ No newline at end of file
diff --git a/src/main/helm/templates/serviceaccount_keycloak_read.yaml b/src/main/helm/templates/serviceaccount_keycloak_read.yaml
new file mode 100644
index 0000000000..df3877f625
--- /dev/null
+++ b/src/main/helm/templates/serviceaccount_keycloak_read.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.
+#
+
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozg-operator-keycloak-viewer-role-binding
+subjects:
+  - kind: ServiceAccount
+    name: ozg-operator-serviceaccount
+    namespace: {{ .Release.Namespace }}
+roleRef:
+  kind: Role
+  name: ozg-operator-keycloak-viewer-role
+  apiGroup: rbac.authorization.k8s.io
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozg-operator-keycloak-viewer-role
+rules:
+  - apiGroups:
+      - "*"
+    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
diff --git a/src/main/helm/templates/serviceaccount_keycloak_write.yaml b/src/main/helm/templates/serviceaccount_keycloak_write.yaml
new file mode 100644
index 0000000000..ac87469925
--- /dev/null
+++ b/src/main/helm/templates/serviceaccount_keycloak_write.yaml
@@ -0,0 +1,66 @@
+#
+# 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.
+#
+
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozg-operator-keycloak-write-role-binding
+subjects:
+  - kind: ServiceAccount
+    name: ozg-operator-serviceaccount
+    namespace: {{ .Release.Namespace }}
+roleRef:
+  kind: Role
+  name: ozg-operator-keycloak-write-role
+  apiGroup: rbac.authorization.k8s.io
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozg-operator-keycloak-write-role
+rules:
+  - apiGroups:
+      - "*"
+    resources:
+      - ozgkeycloakusers
+      - ozgkeycloakusers/status
+      - ozgkeycloakusers/finalizers
+      - ozgkeycloakgroups
+      - ozgkeycloakgroups/status
+      - ozgkeycloakgroups/finalizers
+      - ozgkeycloakrealms
+      - ozgkeycloakrealms/status
+      - ozgkeycloakrealms/finalizers
+      - ozgkeycloakclients
+      - ozgkeycloakclients/status
+      - ozgkeycloakclients/finalizers
+    verbs:
+      - get
+      - list
+      - create
+      - delete
+      - patch
+      - update
+      - watch
diff --git a/src/test/helm/keycloak-crd-test.yaml b/src/test/helm/keycloak-crd-test.yaml
index 5d1edcbbb7..21631aaa7e 100644
--- a/src/test/helm/keycloak-crd-test.yaml
+++ b/src/test/helm/keycloak-crd-test.yaml
@@ -48,33 +48,19 @@ tests:
       - equal:
           path: spec.keep_after_delete
           value: false
-      - equal:
-          path: spec.kop_einheitlicher_ansprechpartner
-          value: false
   - it: should have Keycloak Values
     set:
       baseUrl: "test.by.ozg-cloud.de"
       sso:
         keep_after_delete: true
-        role_einheitlicher_ansprechpartner: true
     asserts:
       - equal:
           path: spec.keep_after_delete
           value: true
-      - equal:
-          path: spec.kop_einheitlicher_ansprechpartner
-          value: true
-      - equal:
-          path: spec.kop_bezeichner
-          value: helm
       - equal:
           path: spec.kop_displayname
           value: Realm für Helm (test)
-      - equal:
-          path: spec.kop_env_base_url
-          value: test.by.ozg-cloud.de
-      - equal:
-          path: spec.kop_enviroment
-          value: test
+
+
 
 
diff --git a/src/test/helm/serviceaccount_keycloak_read_test.yaml b/src/test/helm/serviceaccount_keycloak_read_test.yaml
new file mode 100644
index 0000000000..4131df4d16
--- /dev/null
+++ b/src/test/helm/serviceaccount_keycloak_read_test.yaml
@@ -0,0 +1,94 @@
+#
+# 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 keycloak read
+release:
+  name: ozg-test
+  namespace: by-helm-test
+templates:
+  - templates/serviceaccount_keycloak_read.yaml
+tests:
+  - it: role binding
+    asserts:
+      - isKind:
+          of: RoleBinding
+        documentIndex: 0
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+        documentIndex: 0
+      - equal:
+          path: metadata
+          value:
+              name: ozg-operator-keycloak-viewer-role-binding
+        documentIndex: 0
+      - equal:
+          path: subjects
+          value:
+              - kind: ServiceAccount
+                name: ozg-operator-serviceaccount
+                namespace: by-helm-test
+        documentIndex: 0
+      - equal:
+          path: roleRef
+          value:
+              kind: Role
+              name: ozg-operator-keycloak-viewer-role
+              apiGroup: rbac.authorization.k8s.io
+        documentIndex: 0
+  - it: role 
+    asserts:
+      - isKind:
+          of: Role
+        documentIndex: 1
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+        documentIndex: 1
+      - equal:
+          path: metadata
+          value:
+              name: ozg-operator-keycloak-viewer-role
+        documentIndex: 1
+      - equal:
+          path: rules
+          value:
+              - apiGroups:
+                  - "*"
+                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/serviceaccount_keycloak_write_test.yaml b/src/test/helm/serviceaccount_keycloak_write_test.yaml
new file mode 100644
index 0000000000..523aa961d1
--- /dev/null
+++ b/src/test/helm/serviceaccount_keycloak_write_test.yaml
@@ -0,0 +1,98 @@
+#
+# 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 keycloak write
+release:
+  name: ozg-test
+  namespace: by-helm-test
+templates:
+  - templates/serviceaccount_keycloak_write.yaml
+tests:
+  - it: role binding
+    asserts:
+      - isKind:
+          of: RoleBinding
+        documentIndex: 0
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+        documentIndex: 0
+      - equal:
+          path: metadata
+          value:
+              name: ozg-operator-keycloak-write-role-binding
+        documentIndex: 0
+      - equal:
+          path: subjects
+          value:
+              - kind: ServiceAccount
+                name: ozg-operator-serviceaccount
+                namespace: by-helm-test
+        documentIndex: 0
+      - equal:
+          path: roleRef
+          value:
+              kind: Role
+              name: ozg-operator-keycloak-write-role
+              apiGroup: rbac.authorization.k8s.io
+        documentIndex: 0
+  - it: role 
+    asserts:
+      - isKind:
+          of: Role
+        documentIndex: 1
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+        documentIndex: 1
+      - equal:
+          path: metadata
+          value:
+              name: ozg-operator-keycloak-write-role
+        documentIndex: 1
+      - equal:
+          path: rules
+          value:
+              - apiGroups:
+                  - "*"
+                resources:
+                  - ozgkeycloakusers
+                  - ozgkeycloakusers/status
+                  - ozgkeycloakusers/finalizers
+                  - ozgkeycloakgroups
+                  - ozgkeycloakgroups/status
+                  - ozgkeycloakgroups/finalizers
+                  - ozgkeycloakrealms
+                  - ozgkeycloakrealms/status
+                  - ozgkeycloakrealms/finalizers
+                  - ozgkeycloakclients
+                  - ozgkeycloakclients/status
+                  - ozgkeycloakclients/finalizers
+                verbs:
+                  - get
+                  - list
+                  - create
+                  - delete
+                  - patch
+                  - update
+                  - watch
+        documentIndex: 1
\ No newline at end of file
-- 
GitLab