fakeClient.StatusCode = 200 _, err := requestRetryable.Attempt() Expect(err).ToNot(HaveOccurred()) resp := requestRetryable.Response() Expect(readString(resp.Body)).To(Equal("fake-response-body")) Expect(resp.StatusCode).To(Equal(200)) Expect(fakeClient.CallCount).To(Equal(1)) Expect(fakeClient.Requests).To(ContainElement(request)) }) Context("when request returns an error", func() { BeforeEach(func() { fakeClient.Error = errors.New("fake-response-error") }) It("is retryable", func() { isRetryable, err := requestRetryable.Attempt() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-response-error")) Expect(isRetryable).To(BeTrue()) }) }) Context("when response status code is not between 200 and 300", func() { BeforeEach(func() { fakeClient.SetMessage("fake-response-body") fakeClient.StatusCode = 404 })
Describe("Get", func() { It("returns the response body from the given path", func() { fakeHTTPClient.StatusCode = 200 fakeHTTPClient.SetMessage("response") responseBody, err := client.Get("/") Expect(err).NotTo(HaveOccurred()) buf := make([]byte, 1024) n, _ := responseBody.Read(buf) Expect(string(buf[0:n])).To(Equal("response")) }) Context("when the http request fails", func() { BeforeEach(func() { fakeHTTPClient.Error = errors.New("") }) It("returns err", func() { responseBody, err := client.Get("/") Expect(responseBody).To(BeNil()) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("Getting dav blob /")) }) }) Context("when the http response code is not 200", func() { BeforeEach(func() { fakeHTTPClient.StatusCode = 300 fakeHTTPClient.SetMessage("response") })