diff --git a/discovery/fake/discovery.go b/discovery/fake/discovery.go index f8a78e1e..e5d9e7f8 100644 --- a/discovery/fake/discovery.go +++ b/discovery/fake/discovery.go @@ -47,7 +47,9 @@ func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*me Verb: "get", 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 { if resourceList.GroupVersion == groupVersion { return resourceList, nil @@ -77,7 +79,9 @@ func (c *FakeDiscovery) ServerGroupsAndResources() ([]*metav1.APIGroup, []*metav Verb: "get", 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 } @@ -100,7 +104,9 @@ func (c *FakeDiscovery) ServerGroups() (*metav1.APIGroupList, error) { Verb: "get", 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{} diff --git a/discovery/fake/discovery_test.go b/discovery/fake/discovery_test.go index 946b484f..44c5d744 100644 --- a/discovery/fake/discovery_test.go +++ b/discovery/fake/discovery_test.go @@ -63,3 +63,48 @@ func TestFakingServerVersionWithError(t *testing.T) { 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) + } +}