From eb4063f0ceda432b750b5ac46740e6f62d89a38e Mon Sep 17 00:00:00 2001 From: Amine Date: Tue, 25 Jul 2023 23:36:19 +0100 Subject: [PATCH] Add cases to tests `AdmissionWebhook` MatchConditions size limit (#119404) --- .../admissionwebhook/match_conditions_test.go | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/test/integration/apiserver/admissionwebhook/match_conditions_test.go b/test/integration/apiserver/admissionwebhook/match_conditions_test.go index 2d33b42c6e3..1fd2c2788e5 100644 --- a/test/integration/apiserver/admissionwebhook/match_conditions_test.go +++ b/test/integration/apiserver/admissionwebhook/match_conditions_test.go @@ -24,6 +24,7 @@ import ( "io" "net/http" "net/http/httptest" + "strconv" "sync" "testing" "time" @@ -649,7 +650,16 @@ func TestMatchConditions_validation(t *testing.T) { Expression: "oldObject == null", }}, expectError: true, - }} + }, { + name: "less than 65 match conditions should pass", + matchConditions: repeatedMatchConditions(64), + expectError: false, + }, { + name: "more than 64 match conditions should error", + matchConditions: repeatedMatchConditions(65), + expectError: true, + }, + } dryRunCreate := metav1.CreateOptions{ DryRun: []string{metav1.DryRunAll}, @@ -952,3 +962,14 @@ func newMarkerPod(namespace string) *corev1.Pod { }, } } + +func repeatedMatchConditions(size int) []admissionregistrationv1.MatchCondition { + matchConditions := make([]admissionregistrationv1.MatchCondition, 0, size) + for i := 0; i < size; i++ { + matchConditions = append(matchConditions, admissionregistrationv1.MatchCondition{ + Name: "repeated-" + strconv.Itoa(i), + Expression: "true", + }) + } + return matchConditions +}