From d815449ae5cb1b1db1c30fe068e739ea56292ac0 Mon Sep 17 00:00:00 2001 From: Kevin Delgado Date: Mon, 18 Jul 2022 16:16:00 +0000 Subject: [PATCH] Adjust testing for server-side validation as default --- test/e2e/kubectl/kubectl.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/e2e/kubectl/kubectl.go b/test/e2e/kubectl/kubectl.go index 31aab13b04f..65a209adc8c 100644 --- a/test/e2e/kubectl/kubectl.go +++ b/test/e2e/kubectl/kubectl.go @@ -1075,7 +1075,7 @@ metadata: } }) - ginkgo.It("should create/apply a valid CR with arbitrary-extra properties for CRD with partially-specified validation schema", func() { + ginkgo.It("should create/apply an invalid/valid CR with arbitrary-extra properties for CRD with partially-specified validation schema", func() { ginkgo.By("prepare CRD with partially-specified validation schema") crd, err := crd.CreateTestCRD(f, func(crd *apiextensionsv1.CustomResourceDefinition) { props := &apiextensionsv1.JSONSchemaProps{} @@ -1101,6 +1101,15 @@ metadata: meta := fmt.Sprintf(metaPattern, crd.Crd.Spec.Names.Kind, crd.Crd.Spec.Group, crd.Crd.Spec.Versions[0].Name, "test-cr") + // XPreserveUnknownFields is defined on the root of the schema so unknown fields within the spec + // are still considered invalid + invalidArbitraryCR := fmt.Sprintf(`{%s,"spec":{"bars":[{"name":"test-bar"}],"extraProperty":"arbitrary-value"}}`, meta) + err = createApplyCustomResource(invalidArbitraryCR, f.Namespace.Name, "test-cr", crd) + framework.ExpectError(err, "creating custom resource") + if !strings.Contains(err.Error(), `unknown field "spec.extraProperty"`) { + framework.Failf("incorrect error from createApplyCustomResource: %v", err) + } + // unknown fields on the root are considered valid validArbitraryCR := fmt.Sprintf(`{%s,"spec":{"bars":[{"name":"test-bar"}]},"extraProperty":"arbitrary-value"}`, meta) err = createApplyCustomResource(validArbitraryCR, f.Namespace.Name, "test-cr", crd)