}) Context("and the differ provides creates and deletes", func() { It("sends them to the bbs and updates the domain", func() { Eventually(bbsClient.DesireLRPCallCount).Should(Equal(1)) Eventually(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1)) Eventually(bbsClient.UpsertDomainCallCount).Should(Equal(1)) Expect(bbsClient.DesireLRPArgsForCall(0)).To(BeEquivalentTo(&models.DesiredLRP{ ProcessGuid: "new-process-guid", Annotation: "new-etag", })) Expect(bbsClient.RemoveDesiredLRPArgsForCall(0)).To(Equal("excess-process-guid")) d, ttl := bbsClient.UpsertDomainArgsForCall(0) Expect(d).To(Equal("cf-apps")) Expect(ttl).To(Equal(1 * time.Second)) }) Context("and the create request fails", func() { BeforeEach(func() { bbsClient.DesireLRPReturns(errors.New("create failed!")) }) It("does not update the domain", func() { Consistently(bbsClient.UpsertDomainCallCount).Should(Equal(0)) }) It("sends all the other updates", func() { Eventually(bbsClient.DesireLRPCallCount).Should(Equal(1))
var req *http.Request BeforeEach(func() { req = newTestRequest("") req.URL.RawQuery = url.Values{":domain": []string{domain}}.Encode() req.Header["Cache-Control"] = []string{"public", "max-age=1000"} }) JustBeforeEach(func() { handler.Upsert(responseRecorder, req) }) Context("when the call to the BBS succeeds", func() { It("calls Upsert on the BBS", func() { Expect(fakeBBS.UpsertDomainCallCount()).To(Equal(1)) d, ttl := fakeBBS.UpsertDomainArgsForCall(0) Expect(d).To(Equal(domain)) Expect(ttl).To(Equal(ttl)) }) It("responds with 204 Status NO CONTENT", func() { Expect(responseRecorder.Code).To(Equal(http.StatusNoContent)) }) It("responds with an empty body", func() { Expect(responseRecorder.Body.String()).To(Equal("")) }) }) Context("when the call to the BBS fails", func() { BeforeEach(func() {