Return the error returned by Invokes so the FakeDiscovery client is able to simulate any error with reactors.

Signed-off-by: Feilian Xie <fxie@redhat.com>

Kubernetes-commit: 33557a2f6c82d10fa6a459d2ebac56d6a2670492
This commit is contained in:
Feilian Xie 2024-07-04 17:29:57 +08:00 committed by Kubernetes Publisher
parent ab86e03da4
commit c45bc431c3
2 changed files with 54 additions and 3 deletions

View File

@ -47,7 +47,9 @@ func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*me
Verb: "get", Verb: "get",
Resource: schema.GroupVersionResource{Resource: "resource"}, Resource: schema.GroupVersionResource{Resource: "resource"},
} }
c.Invokes(action, nil) if _, err := c.Invokes(action, nil); err != nil {
return nil, err
}
for _, resourceList := range c.Resources { for _, resourceList := range c.Resources {
if resourceList.GroupVersion == groupVersion { if resourceList.GroupVersion == groupVersion {
return resourceList, nil return resourceList, nil
@ -77,7 +79,9 @@ func (c *FakeDiscovery) ServerGroupsAndResources() ([]*metav1.APIGroup, []*metav
Verb: "get", Verb: "get",
Resource: schema.GroupVersionResource{Resource: "resource"}, Resource: schema.GroupVersionResource{Resource: "resource"},
} }
c.Invokes(action, nil) if _, err = c.Invokes(action, nil); err != nil {
return resultGroups, c.Resources, err
}
return resultGroups, c.Resources, nil return resultGroups, c.Resources, nil
} }
@ -100,7 +104,9 @@ func (c *FakeDiscovery) ServerGroups() (*metav1.APIGroupList, error) {
Verb: "get", Verb: "get",
Resource: schema.GroupVersionResource{Resource: "group"}, Resource: schema.GroupVersionResource{Resource: "group"},
} }
c.Invokes(action, nil) if _, err := c.Invokes(action, nil); err != nil {
return nil, err
}
groups := map[string]*metav1.APIGroup{} groups := map[string]*metav1.APIGroup{}

View File

@ -63,3 +63,48 @@ func TestFakingServerVersionWithError(t *testing.T) {
t.Fatal("ServerVersion should return expected error, returned different error instead") t.Fatal("ServerVersion should return expected error, returned different error instead")
} }
} }
func TestFakingServerResourcesForGroupVersionWithError(t *testing.T) {
expectedError := errors.New("an error occurred")
fakeClient := fakeclientset.NewClientset()
fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("*", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
return true, nil, expectedError
})
result, err := fakeClient.Discovery().ServerResourcesForGroupVersion("dummy.group.io/v1beta2")
if result != nil {
t.Errorf(`expect result to be nil but got "%v" instead`, result)
}
if !errors.Is(err, expectedError) {
t.Errorf(`expect error to be "%v" but got "%v" instead`, expectedError, err)
}
}
func TestFakingServerGroupsWithError(t *testing.T) {
expectedError := errors.New("an error occurred")
fakeClient := fakeclientset.NewClientset()
fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("*", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
return true, nil, expectedError
})
result, err := fakeClient.Discovery().ServerGroups()
if result != nil {
t.Errorf(`expect result to be nil but got "%v" instead`, result)
}
if !errors.Is(err, expectedError) {
t.Errorf(`expect error to be "%v" but got "%v" instead`, expectedError, err)
}
}
func TestFakingServerGroupsAndResourcesWithError(t *testing.T) {
expectedError := errors.New("an error occurred")
fakeClient := fakeclientset.NewClientset()
fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("get", "resource", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
return true, nil, expectedError
})
_, _, err := fakeClient.Discovery().ServerGroupsAndResources()
if !errors.Is(err, expectedError) {
t.Errorf(`expect error to be "%v" but got "%v" instead`, expectedError, err)
}
}