Expect(err).ToNot(HaveOccurred())

			provisioningContext.InstanceId = "some-instance-id"
		})

		Context("when all goes ok", func() {
			BeforeEach(func() {
				instance := repository.Instance{
					ID:             "some-instance-id",
					ServiceID:      "service-1",
					PlanID:         "plan-1",
					OrganizationID: "org-1",
					SpaceID:        "space-1",
				}

				state.InstanceReturns(&instance, nil)

				provisioningContext.ServiceId = "service-2"
				provisioningContext.PlanId = "plan-2"
				err := provisioningController.Update(provisioningContext)
				Expect(err).ToNot(HaveOccurred())
			})

			It("responds with 200", func() {
				Expect(goaContext.ResponseStatus()).To(Equal(200))
			})

			It("sends the correct message to the state", func() {
				recordedInstance := state.UpdateInstanceArgsForCall(0)
				Expect(recordedInstance.ID).To(Equal("some-instance-id"))
				Expect(recordedInstance.OrganizationID).To(Equal("org-1"))
		JustBeforeEach(func() {
			bindingController = controllers.NewBinding(state)
			err := bindingController.Update(bindingContext)
			Expect(err).ToNot(HaveOccurred())
		})

		Context("when all goes ok", func() {

			BeforeEach(func() {
				instance := repository.Instance{
					ID: "instance-1",
				}

				state.InstanceExistsReturns(true)
				state.InstanceBindingExistsReturns(false)
				state.InstanceReturns(&instance, nil)
			})

			It("responds with 201", func() {
				Expect(goaContext.ResponseStatus()).To(Equal(201))
			})

			It("updates the state", func() {
				instanceID, bindingID := state.AddInstanceBindingArgsForCall(0)
				Expect(instanceID).To(Equal("instance-1"))
				Expect(bindingID).To(Equal("binding-1"))
			})
		})

		Context("when the instance doesn't exist", func() {
			BeforeEach(func() {