restore test behavior for CRD without validation cases

the test doesn't set empty validation but expects CRD controller to treat
nil schema specially and publish an empty schema
This commit is contained in:
Haowei Cai 2019-05-22 12:16:08 -07:00
parent 1cfed1cca6
commit 629bdf5e84

View File

@ -341,12 +341,16 @@ func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, version
return nil, fmt.Errorf("require at least one version for CRD") return nil, fmt.Errorf("require at least one version for CRD")
} }
if schema == nil { expect := schema
schema = []byte(`type: object`)
}
props := &v1beta1.JSONSchemaProps{} props := &v1beta1.JSONSchemaProps{}
if err := yaml.Unmarshal(schema, props); err != nil { if schema == nil {
return nil, err // to be backwards compatible, we expect CRD controller to treat
// CRD with nil schema specially and publish an empty schema
expect = []byte(`type: object`)
} else {
if err := yaml.Unmarshal(schema, props); err != nil {
return nil, err
}
} }
crd, err := crd.CreateMultiVersionTestCRD(f, group, func(crd *v1beta1.CustomResourceDefinition) { crd, err := crd.CreateMultiVersionTestCRD(f, group, func(crd *v1beta1.CustomResourceDefinition) {
@ -360,8 +364,11 @@ func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, version
} }
crd.Spec.Versions = apiVersions crd.Spec.Versions = apiVersions
crd.Spec.Validation = &v1beta1.CustomResourceValidation{ // set up validation when input schema isn't nil
OpenAPIV3Schema: props, if schema != nil {
crd.Spec.Validation = &v1beta1.CustomResourceValidation{
OpenAPIV3Schema: props,
}
} }
}) })
if err != nil { if err != nil {
@ -369,7 +376,7 @@ func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, version
} }
for _, v := range crd.Crd.Spec.Versions { for _, v := range crd.Crd.Spec.Versions {
if err := waitForDefinition(f.ClientSet, definitionName(crd, v.Name), schema); err != nil { if err := waitForDefinition(f.ClientSet, definitionName(crd, v.Name), expect); err != nil {
return nil, fmt.Errorf("%v", err) return nil, fmt.Errorf("%v", err)
} }
} }