From ccfcce83dac194e583874efd61456f142ab39e1e Mon Sep 17 00:00:00 2001
From: shuting <shuting@nirmata.com>
Date: Mon, 27 Feb 2023 19:51:21 +0800
Subject: [PATCH] add kuttl test pol-clone-sync-modify-source (#6407)

Signed-off-by: ShutingZhao <shuting@nirmata.com>
---
 .../01-assert.yaml                            | 10 ++++++
 .../01-manifests.yaml                         | 36 +++++++++++++++++++
 .../02-trigger.yaml                           |  7 ++++
 .../03-assert.yaml                            |  8 +++++
 .../04-modifysource.yaml                      |  8 +++++
 .../05-assert.yaml                            |  8 +++++
 .../pol-clone-sync-modify-source/README.md    | 11 ++++++
 7 files changed, 88 insertions(+)
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-assert.yaml
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-manifests.yaml
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/02-trigger.yaml
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/03-assert.yaml
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/04-modifysource.yaml
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/05-assert.yaml
 create mode 100644 test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/README.md

diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-assert.yaml b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-assert.yaml
new file mode 100644
index 0000000000..ca94aab071
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-assert.yaml
@@ -0,0 +1,10 @@
+apiVersion: kyverno.io/v2beta1
+kind: Policy
+metadata:
+  name: pol-sync-clone
+  namespace: poltest
+status:
+  conditions:
+  - reason: Succeeded
+    status: "True"
+    type: Ready
\ No newline at end of file
diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-manifests.yaml b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-manifests.yaml
new file mode 100644
index 0000000000..8adbdd7837
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/01-manifests.yaml
@@ -0,0 +1,36 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: poltest
+---
+apiVersion: v1
+data:
+  foo: YmFy
+kind: Secret
+metadata:
+  name: regcred
+  namespace: poltest
+type: Opaque
+---
+apiVersion: kyverno.io/v2beta1
+kind: Policy
+metadata:
+  name: pol-sync-clone
+  namespace: poltest
+spec:
+  rules:
+  - name: gen-zk
+    match:
+      any:
+      - resources:
+          kinds:
+          - ConfigMap
+    generate:
+      apiVersion: v1
+      kind: Secret
+      name: myclonedsecret
+      namespace: poltest
+      synchronize: true
+      clone:
+        namespace: poltest
+        name: regcred
diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/02-trigger.yaml b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/02-trigger.yaml
new file mode 100644
index 0000000000..4a6457c1cb
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/02-trigger.yaml
@@ -0,0 +1,7 @@
+apiVersion: v1
+data:
+  sj: js
+kind: ConfigMap
+metadata:
+  name: cm-2
+  namespace: poltest
\ No newline at end of file
diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/03-assert.yaml b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/03-assert.yaml
new file mode 100644
index 0000000000..b609a3311d
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/03-assert.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+data:
+  foo: YmFy
+kind: Secret
+metadata:
+  name: myclonedsecret
+  namespace: poltest
+type: Opaque
\ No newline at end of file
diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/04-modifysource.yaml b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/04-modifysource.yaml
new file mode 100644
index 0000000000..c9bb004521
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/04-modifysource.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+data:
+  foo: aGVyZWlzY2hhbmdlZGRhdGE=
+kind: Secret
+metadata:
+  name: regcred
+  namespace: poltest
+type: Opaque
\ No newline at end of file
diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/05-assert.yaml b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/05-assert.yaml
new file mode 100644
index 0000000000..3eb44f8ed1
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/05-assert.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+data:
+  foo: aGVyZWlzY2hhbmdlZGRhdGE=
+kind: Secret
+metadata:
+  name: myclonedsecret
+  namespace: poltest
+type: Opaque
\ No newline at end of file
diff --git a/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/README.md b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/README.md
new file mode 100644
index 0000000000..e5a7064c3a
--- /dev/null
+++ b/test/conformance/kuttl/generate/policy/standard/clone/sync/pol-clone-sync-modify-source/README.md
@@ -0,0 +1,11 @@
+## Description
+
+This test ensures that modification of the source (upstream) resource used by a Policy `generate` rule with sync enabled using a clone declaration causes those changes to be synced/propagated downstream.
+
+## Expected Behavior
+
+After the source is modified, the downstream resources should be synced to reflect those modifications. If the downstream resource reflects the changes made to the source, the test passes. If the downstream resource remains unsynced, the test fails.
+
+## Reference Issue(s)
+
+https://github.com/kyverno/kyverno/issues/5277
\ No newline at end of file