From dc159a373c551b3c481fc1f308a91d8d2e1f5cac Mon Sep 17 00:00:00 2001 From: David Eads Date: Mon, 15 Feb 2021 13:49:12 -0500 Subject: [PATCH] attempt to coerce test for non-structural schemas into something close to valid --- .../test/integration/validation_test.go | 50 ++++++------------- 1 file changed, 14 insertions(+), 36 deletions(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/validation_test.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/validation_test.go index acc7e73fae4..a9681dfaac0 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/validation_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/validation_test.go @@ -94,9 +94,6 @@ func newNoxuValidationCRDs() []*apiextensionsv1.CustomResourceDefinition { validationSchema := &apiextensionsv1.JSONSchemaProps{ Type: "object", Required: []string{"alpha", "beta"}, - AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{ - Allows: true, - }, Properties: map[string]apiextensionsv1.JSONSchemaProps{ "alpha": { Description: "Alpha is an alphanumeric string with underscores", @@ -123,19 +120,6 @@ func newNoxuValidationCRDs() []*apiextensionsv1.CustomResourceDefinition { }, }, }, - "delta": { - Description: "Delta is a string with a maximum length of 5 or a number with a minimum value of 0", - AnyOf: []apiextensionsv1.JSONSchemaProps{ - { - Type: "string", - MaxLength: int64Ptr(5), - }, - { - Type: "number", - Minimum: float64Ptr(0), - }, - }, - }, }, } validationSchemaWithDescription := validationSchema.DeepCopy() @@ -531,18 +515,6 @@ func TestCustomResourceValidationErrors(t *testing.T) { }, expectedErrors: []string{`gamma: Unsupported value: "qux": supported values: "foo", "bar", "baz"`}, }, - { - name: "bad delta", - instanceFn: func() *unstructured.Unstructured { - instance := newNoxuValidationInstance(ns, "foo") - instance.Object["delta"] = "foobarbaz" - return instance - }, - expectedErrors: []string{ - "must validate at least one schema (anyOf)", - "delta in body should be at most 5 chars long", - }, - }, { name: "absent alpha and beta", instanceFn: func() *unstructured.Unstructured { @@ -605,7 +577,7 @@ func TestCRValidationOnCRDUpdate(t *testing.T) { } // set stricter schema - validationSchema.OpenAPIV3Schema.Required = []string{"alpha", "beta", "epsilon"} + validationSchema.OpenAPIV3Schema.Required = []string{"alpha", "beta", "gamma"} noxuDefinition, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient) if err != nil { @@ -614,6 +586,7 @@ func TestCRValidationOnCRDUpdate(t *testing.T) { ns := "not-the-default" noxuResourceClient := newNamespacedCustomResourceVersionedClient(ns, dynamicClient, noxuDefinition, v.Name) instanceToCreate := newNoxuValidationInstance(ns, "foo") + unstructured.RemoveNestedField(instanceToCreate.Object, "gamma") instanceToCreate.Object["apiVersion"] = fmt.Sprintf("%s/%s", noxuDefinition.Spec.Group, v.Name) // CR is rejected @@ -674,18 +647,20 @@ func TestForbiddenFieldsInSchema(t *testing.T) { if err != nil { t.Fatal(err) } - validationSchema.OpenAPIV3Schema.AdditionalProperties.Allows = false - - _, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient) - if err == nil { - t.Fatalf("unexpected non-error: additionalProperties cannot be set to false") - } + // v1 doesn't allow additional properties at all. this isn't necessary in v1. + //validationSchema.OpenAPIV3Schema.AdditionalProperties.Allows = false + //_, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient) + //if err == nil { + // t.Fatalf("unexpected non-error: additionalProperties cannot be set to false") + //} validationSchema.OpenAPIV3Schema.Properties["zeta"] = apiextensionsv1.JSONSchemaProps{ Type: "array", UniqueItems: true, } - validationSchema.OpenAPIV3Schema.AdditionalProperties.Allows = true + + // v1 doesn't allow additional properties at all. this isn't necessary in v1. + //validationSchema.OpenAPIV3Schema.AdditionalProperties.Allows = true _, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient) if err == nil { @@ -696,6 +671,9 @@ func TestForbiddenFieldsInSchema(t *testing.T) { validationSchema.OpenAPIV3Schema.Properties["zeta"] = apiextensionsv1.JSONSchemaProps{ Type: "array", UniqueItems: false, + Items: &apiextensionsv1.JSONSchemaPropsOrArray{ + Schema: &apiextensionsv1.JSONSchemaProps{Type: "object"}, + }, } _, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient)