mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-09 09:26:54 +00:00
* Changes to dynamically configure webhooks Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add unit tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add kuttl tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Refactoring Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Correct unit test Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Change way of webhooks configured Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Correct tests with new changes Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add delete operation by default Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Correct tests with new changes Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Correct order for operations Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add corrections Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add mutatingwebhookconfiguration test Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Correct unit test Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Added policy.yaml in mutate webhook test Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add corrections in kuttl test and code Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Change name of test Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Changes to update webhooks manifest Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add corrections for dynamic-op-mutate kuttl test Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Add minor changes; remove unnecessary file Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Correct adding operations for MutatingWebhookConf Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * dynamic op mutate and validate added Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Resolve conflicts Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Filter rules for mutatingwebhookconf correctly Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * replace TestStep with Test in chainsaw tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * converted to new chainsaw-test format Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * minor corrections Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * remove isMutationEmpty() Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * initial changes for dynamic opn enhancements Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * rename variables Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * resolve lint errors Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * refactor code Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * add changes for exclude operations Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * add conformance tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * add unit tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * corrections in conformance tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * modification in unit tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * correction in conformance tests Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * Update .vscode/launch.json Signed-off-by: shuting <shuting@nirmata.com> * update variable usage Signed-off-by: anushkamittal2001 <anushka@nirmata.com> * remove testresults Signed-off-by: anushkamittal2001 <anushka@nirmata.com> --------- Signed-off-by: anushkamittal2001 <anushka@nirmata.com> Signed-off-by: shuting <shuting@nirmata.com> Co-authored-by: Vishal Choudhary <sendtovishalchoudhary@gmail.com> Co-authored-by: shuting <shuting@nirmata.com> Co-authored-by: Jim Bugwadia <jim@nirmata.com> Co-authored-by: Vishal Choudhary <vishal.choudhary@nirmata.com> Co-authored-by: shuting <shutting06@gmail.com>
129 lines
3.4 KiB
Go
129 lines
3.4 KiB
Go
package webhook
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
kyverno "github.com/kyverno/kyverno/api/kyverno/v1"
|
|
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
|
|
)
|
|
|
|
func TestAddOperationsForValidatingWebhookConf(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
rules []kyverno.Rule
|
|
expectedResult map[string][]admissionregistrationv1.OperationType
|
|
}{
|
|
{
|
|
name: "Test Case 1",
|
|
rules: []kyverno.Rule{
|
|
{
|
|
MatchResources: kyverno.MatchResources{
|
|
ResourceDescription: kyverno.ResourceDescription{
|
|
Kinds: []string{"ConfigMap"},
|
|
Operations: []kyverno.AdmissionOperation{"CREATE"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expectedResult: map[string][]admissionregistrationv1.OperationType{
|
|
"ConfigMap": {"CREATE"},
|
|
},
|
|
},
|
|
{
|
|
name: "Test Case 1",
|
|
rules: []kyverno.Rule{
|
|
{
|
|
MatchResources: kyverno.MatchResources{
|
|
ResourceDescription: kyverno.ResourceDescription{
|
|
Kinds: []string{"ConfigMap"},
|
|
},
|
|
},
|
|
ExcludeResources: kyverno.MatchResources{
|
|
ResourceDescription: kyverno.ResourceDescription{
|
|
Operations: []kyverno.AdmissionOperation{"DELETE", "CONNECT", "CREATE"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expectedResult: map[string][]admissionregistrationv1.OperationType{
|
|
"ConfigMap": {"UPDATE"},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
t.Run(testCase.name, func(t *testing.T) {
|
|
var result map[string][]admissionregistrationv1.OperationType
|
|
var mapResourceToOpnType map[string][]admissionregistrationv1.OperationType
|
|
result = addOpnForValidatingWebhookConf(testCase.rules, mapResourceToOpnType)
|
|
|
|
if !reflect.DeepEqual(result, testCase.expectedResult) {
|
|
t.Errorf("Expected %v, but got %v", testCase.expectedResult, result)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAddOperationsForMutatingtingWebhookConf(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
rules []kyverno.Rule
|
|
expectedResult map[string][]admissionregistrationv1.OperationType
|
|
}{
|
|
{
|
|
name: "Test Case 1",
|
|
rules: []kyverno.Rule{
|
|
{
|
|
Mutation: kyverno.Mutation{
|
|
PatchesJSON6902: "add",
|
|
},
|
|
MatchResources: kyverno.MatchResources{
|
|
ResourceDescription: kyverno.ResourceDescription{
|
|
Kinds: []string{"ConfigMap"},
|
|
Operations: []kyverno.AdmissionOperation{"CREATE"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expectedResult: map[string][]admissionregistrationv1.OperationType{
|
|
"ConfigMap": {"CREATE"},
|
|
},
|
|
},
|
|
{
|
|
name: "Test Case 1",
|
|
rules: []kyverno.Rule{
|
|
{
|
|
Mutation: kyverno.Mutation{
|
|
PatchesJSON6902: "add",
|
|
},
|
|
MatchResources: kyverno.MatchResources{
|
|
ResourceDescription: kyverno.ResourceDescription{
|
|
Kinds: []string{"Secret"},
|
|
},
|
|
},
|
|
ExcludeResources: kyverno.MatchResources{
|
|
ResourceDescription: kyverno.ResourceDescription{
|
|
Operations: []kyverno.AdmissionOperation{"UPDATE"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
expectedResult: map[string][]admissionregistrationv1.OperationType{
|
|
"Secret": {"CREATE"},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
t.Run(testCase.name, func(t *testing.T) {
|
|
var result map[string][]admissionregistrationv1.OperationType
|
|
var mapResourceToOpnType map[string][]admissionregistrationv1.OperationType
|
|
result = addOpnForMutatingWebhookConf(testCase.rules, mapResourceToOpnType)
|
|
|
|
if !reflect.DeepEqual(result, testCase.expectedResult) {
|
|
t.Errorf("Expected %v, but got %v", testCase.expectedResult, result)
|
|
}
|
|
})
|
|
}
|
|
}
|