GET /deployments should return empty set, not 404
diff --git a/api.go b/api.go index 0366f7f..ae92a0d 100644 --- a/api.go +++ b/api.go
@@ -175,12 +175,6 @@ return } - // send not found if no timeout - if len(deployments) == 0 && timeout == 0 { - w.WriteHeader(http.StatusNotFound) - return - } - // send results if different eTag if eTag != ifNoneMatch { sendDeployments(w, deployments, eTag) @@ -198,14 +192,14 @@ if ifNoneMatch != "" { w.WriteHeader(http.StatusNotModified) } else { - w.WriteHeader(http.StatusNotFound) + sendDeployments(w, deployments, eTag) } } } func sendDeployments(w http.ResponseWriter, dataDeps []DataDeployment, eTag string) { - var apiDeps ApiDeploymentResponse + apiDeps := ApiDeploymentResponse{} for _, d := range dataDeps { apiDeps = append(apiDeps, ApiDeployment{ @@ -229,7 +223,7 @@ return } - log.Debugf("sending deployment %s: %s", eTag, b) + log.Debugf("sending deployments %s: %s", eTag, b) w.Header().Set("ETag", eTag) w.Write(b) }
diff --git a/api_test.go b/api_test.go index c95369f..373648d 100644 --- a/api_test.go +++ b/api_test.go
@@ -3,20 +3,21 @@ import ( "bytes" "encoding/json" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" "io/ioutil" "net/http" "net/http/httptest" "net/url" "time" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" ) var _ = Describe("api", func() { Context("GET /deployments", func() { - It("should get an empty array if no deployments", func() { + It("should get empty set if no deployments", func() { uri, err := url.Parse(testServer.URL) uri.Path = deploymentsEndpoint @@ -24,7 +25,16 @@ res, err := http.Get(uri.String()) Expect(err).ShouldNot(HaveOccurred()) defer res.Body.Close() - Expect(res.StatusCode).Should(Equal(http.StatusNotFound)) + + Expect(res.StatusCode).Should(Equal(http.StatusOK)) + + var depRes ApiDeploymentResponse + body, err := ioutil.ReadAll(res.Body) + Expect(err).ShouldNot(HaveOccurred()) + json.Unmarshal(body, &depRes) + + Expect(len(depRes)).To(Equal(0)) + Expect(string(body)).Should(Equal("[]")) }) It("should debounce requests", func() { @@ -50,6 +60,8 @@ Expect(err).ShouldNot(HaveOccurred()) defer res.Body.Close() + Expect(res.StatusCode).Should(Equal(http.StatusOK)) + var depRes ApiDeploymentResponse body, err := ioutil.ReadAll(res.Body) Expect(err).ShouldNot(HaveOccurred()) @@ -103,14 +115,21 @@ query := uri.Query() query.Add("block", "1") uri.RawQuery = query.Encode() + res, err := http.Get(uri.String()) Expect(err).ShouldNot(HaveOccurred()) defer res.Body.Close() + var depRes ApiDeploymentResponse + body, err := ioutil.ReadAll(res.Body) + Expect(err).ShouldNot(HaveOccurred()) + json.Unmarshal(body, &depRes) + Expect(res.StatusCode).Should(Equal(http.StatusOK)) + Expect(string(body)).Should(Equal("[]")) }) - It("should get new deployment after blocking", func(done Done) { + It("should get new deployment set after blocking", func(done Done) { deploymentID := "api_get_current_blocking" insertTestDeployment(testServer, deploymentID) @@ -301,6 +320,7 @@ }) It("should communicate status to tracking server", func() { + deploymentResults := apiDeploymentResults{ apiDeploymentResult{ ID: "deploymentID",