Skip to content

Commit b61de79

Browse files
authored
Merge pull request #2952 from k8s-infra-cherrypick-robot/cherry-pick-2949-to-release-0.18
[release-0.18] 🐛 Fakeclient: preserve TypeMeta for PartialObjectMeta resources
2 parents 0c9f296 + bca7ccc commit b61de79

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

pkg/client/fake/client.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,10 @@ func (c *fakeClient) Get(ctx context.Context, key client.ObjectKey, obj client.O
472472
return err
473473
}
474474

475-
if _, isUnstructured := obj.(runtime.Unstructured); isUnstructured {
475+
_, isUnstructured := obj.(runtime.Unstructured)
476+
_, isPartialObject := obj.(*metav1.PartialObjectMetadata)
477+
478+
if isUnstructured || isPartialObject {
476479
gvk, err := apiutil.GVKForObject(obj, c.scheme)
477480
if err != nil {
478481
return err

pkg/client/fake/client_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,33 @@ var _ = Describe("Fake client", func() {
337337
Expect(apierrors.IsNotFound(err)).To(BeTrue())
338338
})
339339

340+
It("should be able to retrieve objects by PartialObjectMetadata", func() {
341+
By("Creating a Resource")
342+
secret := &corev1.Secret{
343+
ObjectMeta: metav1.ObjectMeta{
344+
Name: "foo",
345+
Namespace: "bar",
346+
},
347+
}
348+
err := cl.Create(context.Background(), secret)
349+
Expect(err).ToNot(HaveOccurred())
350+
351+
By("Fetching the resource using a PartialObjectMeta")
352+
partialObjMeta := &metav1.PartialObjectMetadata{
353+
ObjectMeta: metav1.ObjectMeta{
354+
Name: "foo",
355+
Namespace: "bar",
356+
},
357+
}
358+
partialObjMeta.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("Secret"))
359+
360+
err = cl.Get(context.Background(), client.ObjectKeyFromObject(partialObjMeta), partialObjMeta)
361+
Expect(err).ToNot(HaveOccurred())
362+
363+
Expect(partialObjMeta.Kind).To(Equal("Secret"))
364+
Expect(partialObjMeta.APIVersion).To(Equal("v1"))
365+
})
366+
340367
It("should support filtering by labels and their values", func() {
341368
By("Listing deployments with a particular label and value")
342369
list := &appsv1.DeploymentList{}

0 commit comments

Comments
 (0)