1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 07:57:07 +00:00
kyverno/pkg/controllers/ttl/controller_test.go

77 lines
1.8 KiB
Go
Raw Normal View History

Test/ttl cleanup deletion policy (#11277) * Added propagationPolicy to TTL controller for resource deletion Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Added per-resource deletion policy with optional global default Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Added nil check for annotations to prevent runtime errors Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Moved logic for retrieving propagation policy from annotations to a dedicated function Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Resolve merge conflict in controller.go and update propagation policy handling - Added missing gvr field from main branch - Improved annotation naming as per team discussion - Moved propagation policy logic closer to usage Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Simplified propagation policy logic Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Add unit tests for controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Removed the test file for controller.go and fixed the lint error Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * test: add unit tests for deletion propagation policy in TTL-based cleanup Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved merge conflict Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix:Updated the unit tests Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Removed the method receiver from determinePropagationPolicy as it does not require access to the controller struct Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Fixed the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: removed the switch statement inside the test case Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Updated the controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixing the deleted resource label in controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixed the linter issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> --------- Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2024-10-07 19:14:55 +05:30
package ttl
import (
"testing"
"github.com/go-logr/logr"
"github.com/kyverno/kyverno/api/kyverno"
"github.com/stretchr/testify/assert"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr"
Test/ttl cleanup deletion policy (#11277) * Added propagationPolicy to TTL controller for resource deletion Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Added per-resource deletion policy with optional global default Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Added nil check for annotations to prevent runtime errors Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Moved logic for retrieving propagation policy from annotations to a dedicated function Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Resolve merge conflict in controller.go and update propagation policy handling - Added missing gvr field from main branch - Improved annotation naming as per team discussion - Moved propagation policy logic closer to usage Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Simplified propagation policy logic Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Add unit tests for controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Removed the test file for controller.go and fixed the lint error Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * test: add unit tests for deletion propagation policy in TTL-based cleanup Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved merge conflict Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix:Updated the unit tests Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Removed the method receiver from determinePropagationPolicy as it does not require access to the controller struct Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Fixed the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: removed the switch statement inside the test case Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Updated the controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixing the deleted resource label in controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixed the linter issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> --------- Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2024-10-07 19:14:55 +05:30
)
// TestDeterminePropagationPolicy tests the determinePropagationPolicy function
func TestDeterminePropagationPolicy(t *testing.T) {
logger := logr.Discard() // Use a no-op logger
testCases := []struct {
name string
annotations map[string]string
expectedPolicy *metav1.DeletionPropagation
}{
{
name: "No annotations",
annotations: nil,
expectedPolicy: nil,
},
{
name: "Foreground policy",
annotations: map[string]string{
kyverno.AnnotationCleanupPropagationPolicy: "Foreground",
},
expectedPolicy: ptr.To(metav1.DeletePropagationForeground),
Test/ttl cleanup deletion policy (#11277) * Added propagationPolicy to TTL controller for resource deletion Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Added per-resource deletion policy with optional global default Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Added nil check for annotations to prevent runtime errors Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Moved logic for retrieving propagation policy from annotations to a dedicated function Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Resolve merge conflict in controller.go and update propagation policy handling - Added missing gvr field from main branch - Improved annotation naming as per team discussion - Moved propagation policy logic closer to usage Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Simplified propagation policy logic Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Add unit tests for controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Removed the test file for controller.go and fixed the lint error Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * test: add unit tests for deletion propagation policy in TTL-based cleanup Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved merge conflict Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix:Updated the unit tests Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Removed the method receiver from determinePropagationPolicy as it does not require access to the controller struct Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Fixed the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: removed the switch statement inside the test case Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Updated the controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixing the deleted resource label in controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixed the linter issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> --------- Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2024-10-07 19:14:55 +05:30
},
{
name: "Background policy",
annotations: map[string]string{
kyverno.AnnotationCleanupPropagationPolicy: "Background",
},
expectedPolicy: ptr.To(metav1.DeletePropagationBackground),
Test/ttl cleanup deletion policy (#11277) * Added propagationPolicy to TTL controller for resource deletion Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Added per-resource deletion policy with optional global default Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Added nil check for annotations to prevent runtime errors Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Moved logic for retrieving propagation policy from annotations to a dedicated function Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Resolve merge conflict in controller.go and update propagation policy handling - Added missing gvr field from main branch - Improved annotation naming as per team discussion - Moved propagation policy logic closer to usage Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Simplified propagation policy logic Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Add unit tests for controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Removed the test file for controller.go and fixed the lint error Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * test: add unit tests for deletion propagation policy in TTL-based cleanup Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved merge conflict Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix:Updated the unit tests Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Removed the method receiver from determinePropagationPolicy as it does not require access to the controller struct Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Fixed the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: removed the switch statement inside the test case Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Updated the controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixing the deleted resource label in controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixed the linter issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> --------- Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2024-10-07 19:14:55 +05:30
},
{
name: "Orphan policy",
annotations: map[string]string{
kyverno.AnnotationCleanupPropagationPolicy: "Orphan",
},
expectedPolicy: ptr.To(metav1.DeletePropagationOrphan),
Test/ttl cleanup deletion policy (#11277) * Added propagationPolicy to TTL controller for resource deletion Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Added per-resource deletion policy with optional global default Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Added nil check for annotations to prevent runtime errors Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Moved logic for retrieving propagation policy from annotations to a dedicated function Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Resolve merge conflict in controller.go and update propagation policy handling - Added missing gvr field from main branch - Improved annotation naming as per team discussion - Moved propagation policy logic closer to usage Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Simplified propagation policy logic Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Add unit tests for controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Removed the test file for controller.go and fixed the lint error Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * test: add unit tests for deletion propagation policy in TTL-based cleanup Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved conflicts Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved merge conflict Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix:Updated the unit tests Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Removed the method receiver from determinePropagationPolicy as it does not require access to the controller struct Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: Fixed the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fix: removed the switch statement inside the test case Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Updated the controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Resolved the formatting issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixing the deleted resource label in controller.go Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> * Fixed the linter issue Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> --------- Signed-off-by: ShivamJha2436 <shivamkumar87148@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2024-10-07 19:14:55 +05:30
},
{
name: "Empty annotation",
annotations: map[string]string{
kyverno.AnnotationCleanupPropagationPolicy: "",
},
expectedPolicy: nil,
},
{
name: "Unknown policy",
annotations: map[string]string{
kyverno.AnnotationCleanupPropagationPolicy: "Unknown",
},
expectedPolicy: nil,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
// Mock metadata object with annotations
metaObj := &metav1.ObjectMeta{
Annotations: tc.annotations,
}
// Call the function
policy := determinePropagationPolicy(metaObj, logger)
// Assert the result
assert.Equal(t, tc.expectedPolicy, policy)
})
}
}