diff --git a/pkg/client/fake/client.go b/pkg/client/fake/client.go index acc5131e4f..be688d5e89 100644 --- a/pkg/client/fake/client.go +++ b/pkg/client/fake/client.go @@ -30,6 +30,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" utilrand "k8s.io/apimachinery/pkg/util/rand" + "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/testing" @@ -85,6 +86,12 @@ func (t versionedTracker) Create(gvr schema.GroupVersionResource, obj runtime.Ob if err != nil { return err } + if accessor.GetName() == "" { + return apierrors.NewInvalid( + obj.GetObjectKind().GroupVersionKind().GroupKind(), + accessor.GetName(), + field.ErrorList{field.Required(field.NewPath("metadata.name"), "name is required")}) + } if accessor.GetResourceVersion() != "" { return apierrors.NewBadRequest("resourceVersion can not be set for Create requests") } @@ -97,6 +104,12 @@ func (t versionedTracker) Update(gvr schema.GroupVersionResource, obj runtime.Ob if err != nil { return fmt.Errorf("failed to get accessor for object: %v", err) } + if accessor.GetName() == "" { + return apierrors.NewInvalid( + obj.GetObjectKind().GroupVersionKind().GroupKind(), + accessor.GetName(), + field.ErrorList{field.Required(field.NewPath("metadata.name"), "name is required")}) + } oldObject, err := t.ObjectTracker.Get(gvr, ns, accessor.GetName()) if err != nil { return err diff --git a/pkg/client/fake/client_test.go b/pkg/client/fake/client_test.go index 846b4e6479..3486f48e47 100644 --- a/pkg/client/fake/client_test.go +++ b/pkg/client/fake/client_test.go @@ -186,6 +186,36 @@ var _ = Describe("Fake client", func() { Expect(apierrors.IsBadRequest(err)).To(BeTrue()) }) + It("should error on Create with empty Name", func() { + By("Creating a new configmap") + newcm := &corev1.ConfigMap{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "ConfigMap", + }, + ObjectMeta: metav1.ObjectMeta{ + Namespace: "ns2", + }, + } + err := cl.Create(context.Background(), newcm) + Expect(err.Error()).To(Equal("ConfigMap \"\" is invalid: metadata.name: Required value: name is required")) + }) + + It("should error on Update with empty Name", func() { + By("Creating a new configmap") + newcm := &corev1.ConfigMap{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "ConfigMap", + }, + ObjectMeta: metav1.ObjectMeta{ + Namespace: "ns2", + }, + } + err := cl.Update(context.Background(), newcm) + Expect(err.Error()).To(Equal("ConfigMap \"\" is invalid: metadata.name: Required value: name is required")) + }) + It("should be able to Create with GenerateName", func() { By("Creating a new configmap") newcm := &corev1.ConfigMap{