stopAppHandler := handlers.NewStopAppHandler(logger, fakeBBS)
		stopAppHandler.StopApp(responseRecorder, request)
	})

	It("invokes the bbs to delete the app", func() {
		Expect(fakeBBS.RemoveDesiredLRPCallCount()).To(Equal(1))
		Expect(fakeBBS.RemoveDesiredLRPArgsForCall(0)).To(Equal("process-guid"))
	})

	It("responds with 202 Accepted", func() {
		Expect(responseRecorder.Code).To(Equal(http.StatusAccepted))
	})

	Context("when the bbs fails", func() {
		BeforeEach(func() {
			fakeBBS.RemoveDesiredLRPReturns(errors.New("oh no"))
		})

		It("responds with a ServiceUnavailabe error", func() {
			Expect(responseRecorder.Code).To(Equal(http.StatusServiceUnavailable))
		})
	})

	Context("when the process guid is missing", func() {
		BeforeEach(func() {
			request.Form.Del(":process_guid")
		})

		It("does not call the bbs", func() {
			Expect(fakeBBS.RemoveDesiredLRPCallCount()).To(Equal(0))
		})
Example #2
0
					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))
					Eventually(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
				})
			})

			Context("and the delete request fails", func() {
				BeforeEach(func() {
					bbsClient.RemoveDesiredLRPReturns(errors.New("delete failed!"))
				})

				It("sends all the other updates", func() {
					Eventually(bbsClient.DesireLRPCallCount).Should(Equal(1))
					Eventually(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
					Eventually(bbsClient.UpsertDomainCallCount).Should(Equal(1))
				})
			})
		})

		Context("and the differ detects stale lrps", func() {
			var (
				expectedEtag      = "new-etag"
				expectedInstances = int32(0)