From 3a167c1e7ba4cfab0c61804f5dc14aedd43138fd Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 15 Aug 2024 18:37:16 +0200
Subject: [PATCH] OZG-6178 update condition for etr muk secret delete RBAC

---
 ...rtransfer_operator_secret_delete_role.yaml |  50 ++++++
 ...ertransfer_operator_secret_write_role.yaml |   2 +-
 ...sfer_operator_secret_delete_role_test.yaml | 151 ++++++++++++++++++
 ...nsfer_operator_secret_write_role_test.yaml |   1 -
 4 files changed, 202 insertions(+), 2 deletions(-)
 create mode 100644 src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_delete_role.yaml
 create mode 100644 src/test/helm/ozgcloud_elstertransfer_operator_secret_delete_role_test.yaml

diff --git a/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_delete_role.yaml b/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_delete_role.yaml
new file mode 100644
index 000000000..037a3048b
--- /dev/null
+++ b/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_delete_role.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.
+#
+{{- if and (((.Values.ozgcloud).muk).enabled) (not .Values.ozgcloud.muk.authEnabled) -}}
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozgcloud-elster-transfer-operator-secret-delete-role-binding
+  namespace: {{ include "app.namespace" . }}
+subjects:
+  - kind: ServiceAccount
+    name: ozgcloud-elster-transfer-operator-service-account
+    namespace: {{ required "elsterTransferOperator.namespace must be set" (.Values.elsterTransferOperator).namespace }}
+roleRef:
+  kind: Role
+  name: ozgcloud-elster-transfer-operator-secret-delete-role
+  apiGroup: rbac.authorization.k8s.io
+
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozgcloud-elster-transfer-operator-secret-delete-role
+  namespace: {{ include "app.namespace" . }}
+rules:
+  - apiGroups: [""]
+    resources: ["secrets"]
+    verbs: ["delete"]
+{{- end }}
diff --git a/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_write_role.yaml b/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_write_role.yaml
index 174bdd8e3..0d310bd42 100644
--- a/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_write_role.yaml
+++ b/src/main/helm/templates/ozgcloud_elstertransfer_operator_secret_write_role.yaml
@@ -46,5 +46,5 @@ metadata:
 rules:
   - apiGroups: [""]
     resources: ["secrets"]
-    verbs: ["create", "update", "delete"]
+    verbs: ["create", "update"]
 {{- end }}
diff --git a/src/test/helm/ozgcloud_elstertransfer_operator_secret_delete_role_test.yaml b/src/test/helm/ozgcloud_elstertransfer_operator_secret_delete_role_test.yaml
new file mode 100644
index 000000000..f8a24931d
--- /dev/null
+++ b/src/test/helm/ozgcloud_elstertransfer_operator_secret_delete_role_test.yaml
@@ -0,0 +1,151 @@
+#
+# 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: ElsterTransfer user secret rbac test
+release:
+  name: ozgcloud-elstertransfer-operator
+  namespace: test-namespace
+templates:
+  - templates/ozgcloud_elstertransfer_operator_secret_delete_role.yaml
+
+
+tests:
+  - it: test RoleBinding metadata
+    set:
+      elsterTransferOperator:
+        namespace: etr-operator
+      ozgcloud:
+        muk:
+          enabled: true
+          authEnabled: false 
+    asserts:
+      - isKind:
+          of: RoleBinding
+        documentIndex: 0
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+        documentIndex: 0
+      - equal:
+          path: metadata.name
+          value: ozgcloud-elster-transfer-operator-secret-delete-role-binding
+        documentIndex: 0
+ 
+  - it: test RoleBinding subject
+    set:
+      elsterTransferOperator:
+        namespace: etr-operator
+      ozgcloud:
+        muk:
+          enabled: true
+          authEnabled: false 
+    asserts:
+      - contains:
+          path: subjects
+          content:
+            kind: ServiceAccount
+            name: ozgcloud-elster-transfer-operator-service-account
+            namespace: etr-operator
+        documentIndex: 0
+  - it: test RoleBinding roleRef
+    set:
+      elsterTransferOperator:
+        namespace: etr-operator
+      ozgcloud:
+        muk:
+          enabled: true
+          authEnabled: false 
+    asserts:
+      - equal:
+          path: roleRef
+          value:
+            kind: Role
+            name: ozgcloud-elster-transfer-operator-secret-delete-role
+            apiGroup: rbac.authorization.k8s.io
+        documentIndex: 0
+
+  - it: test Role metadata
+    set:
+      elsterTransferOperator:
+        namespace: etr-operator
+      ozgcloud:
+        muk:
+          enabled: true
+          authEnabled: false 
+    asserts:
+      - isKind:
+          of: Role
+        documentIndex: 1
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+        documentIndex: 1
+      - equal:
+          path: metadata.name
+          value: ozgcloud-elster-transfer-operator-secret-delete-role
+        documentIndex: 1
+    
+  - it: test RoleBinding rules
+    set:
+      elsterTransferOperator:
+        namespace: etr-operator
+      ozgcloud:
+        muk:
+          enabled: true
+          authEnabled: false 
+    asserts:
+      - contains:
+          path: rules
+          content:
+              apiGroups:
+                - ""
+              resources:
+                - secrets
+              verbs:
+                - delete
+        documentIndex: 1
+  - it: test eltertransferOperator namespace must be set msg
+    set: 
+      ozgcloud:
+        muk:
+          enabled: true
+          authEnabled: false 
+    asserts:
+      - failedTemplate:
+          errorMessage: elsterTransferOperator.namespace must be set
+
+  - it: RBAC not created by default
+    asserts:
+      - hasDocuments:
+          count: 0
+        documentIndex: 1
+      - hasDocuments:
+          count: 0
+        documentIndex: 0
+  - it: RBAC not created when muk enabled and mukAuth enabled
+    asserts:
+      - hasDocuments:
+          count: 0
+        documentIndex: 1
+      - hasDocuments:
+          count: 0
+        documentIndex: 0
\ No newline at end of file
diff --git a/src/test/helm/ozgcloud_elstertransfer_operator_secret_write_role_test.yaml b/src/test/helm/ozgcloud_elstertransfer_operator_secret_write_role_test.yaml
index eb2be4bb9..facf4a07e 100644
--- a/src/test/helm/ozgcloud_elstertransfer_operator_secret_write_role_test.yaml
+++ b/src/test/helm/ozgcloud_elstertransfer_operator_secret_write_role_test.yaml
@@ -123,7 +123,6 @@ tests:
               verbs:
                 - create
                 - update
-                - delete
         documentIndex: 1
   - it: test eltertransferOperator namespace must be set msg
     set: 
-- 
GitLab