Exemplo n.º 1
0
			fakeDiegoClient.TaskByGuidReturns(stagingTask, nil)
		})

		JustBeforeEach(func() {
			req, err := http.NewRequest("POST", "/v1/staging/a-staging-guid", nil)
			Expect(err).NotTo(HaveOccurred())

			req.Form = url.Values{":staging_guid": {"a-staging-guid"}}

			handler.StopStaging(responseRecorder, req)
		})

		Context("when receiving a stop staging request", func() {
			It("retrieves the current staging task by guid", func() {
				Expect(fakeDiegoClient.TaskByGuidCallCount()).To(Equal(1))
				Expect(fakeDiegoClient.TaskByGuidArgsForCall(0)).To(Equal("a-staging-guid"))
			})

			Context("when an in-flight staging task is not found", func() {
				BeforeEach(func() {
					fakeDiegoClient.TaskByGuidReturns(&models.Task{}, models.ErrResourceNotFound)
				})

				It("returns StatusNotFound", func() {
					Expect(responseRecorder.Code).To(Equal(http.StatusNotFound))
				})
			})

			Context("when retrieving the current task fails", func() {
				BeforeEach(func() {
		})

		JustBeforeEach(func() {
			var err error
			request, err = http.NewRequest("", fmt.Sprintf("http://example.com/?:task_guid=%s", taskGuid), nil)
			Expect(err).NotTo(HaveOccurred())
			handler.GetByGuid(responseRecorder, request)
		})

		Context("when the guid is not provided", func() {
			BeforeEach(func() {
				taskGuid = ""
			})

			It("does not call TaskByGuid", func() {
				Expect(fakeClient.TaskByGuidCallCount()).To(Equal(0))
			})

			It("responds with a 400 Bad Request", func() {
				handler.GetByGuid(responseRecorder, request)
				Expect(responseRecorder.Code).To(Equal(http.StatusBadRequest))
			})

			It("responds with a relevant error message", func() {
				var taskError receptor.Error

				err := json.Unmarshal(responseRecorder.Body.Bytes(), &taskError)
				Expect(err).NotTo(HaveOccurred())
				Expect(taskError).To(Equal(receptor.Error{
					Type:    receptor.InvalidRequest,
					Message: "task_guid missing from request",