mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
fix up CRD validation tests
This commit is contained in:
parent
06eb2f5d41
commit
734e9b7dd6
@ -22,8 +22,6 @@ import (
|
||||
"time"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
@ -47,7 +45,7 @@ func TestAPIApproval(t *testing.T) {
|
||||
|
||||
newSigKubeAPIFn := func(resource, approvalAnnotation string) *apiextensionsv1.CustomResourceDefinition {
|
||||
return &apiextensionsv1.CustomResourceDefinition{
|
||||
ObjectMeta: metav1.ObjectMeta{Name: resource + ".sigs.k8s.io", Annotations: map[string]string{apiextensionsv1beta1.KubeAPIApprovedAnnotation: approvalAnnotation}},
|
||||
ObjectMeta: metav1.ObjectMeta{Name: resource + ".sigs.k8s.io", Annotations: map[string]string{apiextensionsv1.KubeAPIApprovedAnnotation: approvalAnnotation}},
|
||||
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
|
||||
Group: "sigs.k8s.io",
|
||||
Versions: []apiextensionsv1.CustomResourceDefinitionVersion{
|
||||
|
@ -26,7 +26,6 @@ import (
|
||||
"time"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
|
@ -27,8 +27,6 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
@ -44,6 +42,7 @@ import (
|
||||
"k8s.io/client-go/dynamic"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||
serveroptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
@ -336,10 +335,8 @@ func validateNonTrivialConverted(t *testing.T, ctc *conversionTestContext) {
|
||||
client := ctc.versionedClient(ns, createVersion.Name)
|
||||
|
||||
fixture := newConversionMultiVersionFixture(ns, name, createVersion.Name)
|
||||
if createVersion.Schema.OpenAPIV3Schema.XPreserveUnknownFields == nil || !*createVersion.Schema.OpenAPIV3Schema.XPreserveUnknownFields {
|
||||
if err := unstructured.SetNestedField(fixture.Object, "foo", "garbage"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := unstructured.SetNestedField(fixture.Object, "foo", "garbage"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := client.Create(context.TODO(), fixture, metav1.CreateOptions{}); err != nil {
|
||||
t.Fatal(err)
|
||||
@ -394,10 +391,8 @@ func validateNonTrivialConvertedList(t *testing.T, ctc *conversionTestContext) {
|
||||
name := "converted-" + createVersion.Name
|
||||
client := ctc.versionedClient(ns, createVersion.Name)
|
||||
fixture := newConversionMultiVersionFixture(ns, name, createVersion.Name)
|
||||
if createVersion.Schema.OpenAPIV3Schema.XPreserveUnknownFields == nil || !*createVersion.Schema.OpenAPIV3Schema.XPreserveUnknownFields {
|
||||
if err := unstructured.SetNestedField(fixture.Object, "foo", "garbage"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := unstructured.SetNestedField(fixture.Object, "foo", "garbage"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := client.Create(context.TODO(), fixture, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
@ -432,9 +427,6 @@ func validateStoragePruning(t *testing.T, ctc *conversionTestContext) {
|
||||
ns := ctc.namespace
|
||||
|
||||
for _, createVersion := range ctc.crd.Spec.Versions {
|
||||
if createVersion.Schema.OpenAPIV3Schema.XPreserveUnknownFields == nil || !*createVersion.Schema.OpenAPIV3Schema.XPreserveUnknownFields {
|
||||
continue
|
||||
}
|
||||
t.Run(fmt.Sprintf("getting objects created as %s", createVersion.Name), func(t *testing.T) {
|
||||
name := "storagepruning-" + createVersion.Name
|
||||
client := ctc.versionedClient(ns, createVersion.Name)
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
|
@ -23,13 +23,11 @@ import (
|
||||
"testing"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
"k8s.io/client-go/dynamic"
|
||||
|
||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/client-go/dynamic"
|
||||
)
|
||||
|
||||
func TestLimits(t *testing.T) {
|
||||
|
@ -23,16 +23,14 @@ import (
|
||||
"time"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/client-go/util/retry"
|
||||
"sigs.k8s.io/yaml"
|
||||
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/client-go/util/retry"
|
||||
"sigs.k8s.io/yaml"
|
||||
)
|
||||
|
||||
var listTypeResourceFixture = &apiextensionsv1.CustomResourceDefinition{
|
||||
|
@ -41,7 +41,6 @@ import (
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||
"k8s.io/client-go/dynamic"
|
||||
"k8s.io/utils/pointer"
|
||||
|
||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
@ -62,8 +61,7 @@ var pruningFixture = &apiextensionsv1.CustomResourceDefinition{
|
||||
},
|
||||
Schema: &apiextensionsv1.CustomResourceValidation{
|
||||
OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{
|
||||
XPreserveUnknownFields: pointer.BoolPtr(false),
|
||||
Type: "object",
|
||||
Type: "object",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -21,18 +21,16 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/client-go/dynamic"
|
||||
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
)
|
||||
|
||||
func TestHandlerScope(t *testing.T) {
|
||||
|
@ -388,7 +388,6 @@ func TestValidationSchemaWithStatus(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// fields other than properties in root schema are not allowed
|
||||
noxuDefinition := newNoxuValidationCRDs()[0]
|
||||
|
||||
// make sure we are not restricting fields to properties even in subschemas
|
||||
@ -457,12 +456,10 @@ func TestValidateOnlyStatus(t *testing.T) {
|
||||
noxuDefinitions := NewNoxuSubresourcesCRDs(apiextensionsv1.NamespaceScoped)
|
||||
for _, noxuDefinition := range noxuDefinitions {
|
||||
noxuDefinition.Spec.Versions[0].Schema = &apiextensionsv1.CustomResourceValidation{
|
||||
OpenAPIV3Schema: schema,
|
||||
OpenAPIV3Schema: schema.DeepCopy(),
|
||||
}
|
||||
schemaWithDescription := schema.DeepCopy()
|
||||
schemaWithDescription.Description = "test"
|
||||
noxuDefinition.Spec.Versions[1].Schema = &apiextensionsv1.CustomResourceValidation{
|
||||
OpenAPIV3Schema: schemaWithDescription,
|
||||
OpenAPIV3Schema: schema.DeepCopy(),
|
||||
}
|
||||
|
||||
noxuDefinition, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient)
|
||||
|
@ -647,21 +647,24 @@ func TestForbiddenFieldsInSchema(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// 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")
|
||||
//}
|
||||
existingProperties := validationSchema.OpenAPIV3Schema.Properties
|
||||
validationSchema.OpenAPIV3Schema.Properties = nil
|
||||
validationSchema.OpenAPIV3Schema.AdditionalProperties = &apiextensionsv1.JSONSchemaPropsOrBool{Allows: false}
|
||||
_, err = fixtures.CreateNewV1CustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient)
|
||||
if err == nil {
|
||||
t.Fatalf("unexpected non-error: additionalProperties cannot be set to false")
|
||||
}
|
||||
// reset
|
||||
validationSchema.OpenAPIV3Schema.Properties = existingProperties
|
||||
validationSchema.OpenAPIV3Schema.AdditionalProperties = nil
|
||||
|
||||
validationSchema.OpenAPIV3Schema.Properties["zeta"] = apiextensionsv1.JSONSchemaProps{
|
||||
Type: "array",
|
||||
UniqueItems: true,
|
||||
AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
|
||||
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 {
|
||||
t.Fatalf("unexpected non-error: uniqueItems cannot be set to true")
|
||||
|
@ -32,10 +32,9 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
apps "k8s.io/api/apps/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||
"k8s.io/apiextensions-apiserver/test/integration/fixtures"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
|
Loading…
Reference in New Issue
Block a user