diff --git a/cf/cf.go b/cf/cf.go index e97a041..aa189ed 100644 --- a/cf/cf.go +++ b/cf/cf.go @@ -126,6 +126,9 @@ func (cf *CF) getAllSpaces() (resources.Spaces, error) { } var spaces resources.SpacesJSON + if strings.Join(spacesJSON, "") == "" { + break + } if err := json.Unmarshal([]byte(strings.Join(spacesJSON, "")), &spaces); err != nil { return nil, fmt.Errorf("error unmarshaling spaces json: %v", err) } @@ -146,9 +149,12 @@ func (cf *CF) GetAllApps() ([]resources.V3AppsJSON, error) { } var apps resources.V3AppsJSON + if strings.Join(appJSON, "") == "" { + break + } if err := json.Unmarshal([]byte(strings.Join(appJSON, "")), &apps); err != nil { - return nil, fmt.Errorf("error unmarshaling apps json: %v", err) + return nil, fmt.Errorf("error unmarshaling apps json: %v", appJSON) } nextURL = apps.Pagination.Next.Href allApps = append(allApps, apps) diff --git a/cf/cf_test.go b/cf/cf_test.go index 95635ae..b1ff5bf 100644 --- a/cf/cf_test.go +++ b/cf/cf_test.go @@ -6,6 +6,7 @@ import ( "github.com/cloudfoundry/stack-auditor/cf" "github.com/cloudfoundry/stack-auditor/mocks" + "github.com/cloudfoundry/stack-auditor/resources" "github.com/golang/mock/gomock" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -24,6 +25,18 @@ var _ = Describe("CF", func() { c = cf.CF{Conn: mockConnection} }) + When("getAllApps", func() { + It("performs a successful getAllApps with empty Json", func() { + mockOutput := make([]string, 3) + var allApps []resources.V3AppsJSON + cf.V3ResultsPerPage = "1" + mockConnection.EXPECT().CliCommandWithoutTerminalOutput("curl", fmt.Sprintf("/v3/apps?per_page=1")).Return(mockOutput, nil).AnyTimes() + output, err := c.GetAllApps() + Expect(err).NotTo(HaveOccurred()) + Expect(output).To(Equal(allApps)) + }) + }) + When("CFCurl", func() { It("performs a successful CF curl", func() { mockOutput, err := mocks.FileToString("apps.json")