serviceRepo.FindInstanceByNameReturns(serviceInstance, nil) planBuilder.GetPlansForServiceForOrgReturns(servicePlans, nil) }) Context("as a json string", func() { It("successfully updates a service", func() { callUpdateService([]string{"-p", "flare", "-c", `{"foo": "bar"}`, "my-service-instance"}) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Updating service", "my-service", "as", "my-user", "..."}, []string{"OK"}, []string{"Update in progress. Use 'cf services' or 'cf service my-service-instance' to check operation status."}, )) Expect(serviceRepo.FindInstanceByNameArgsForCall(0)).To(Equal("my-service-instance")) instanceGUID, planGUID, params, _ := serviceRepo.UpdateServiceInstanceArgsForCall(0) Expect(instanceGUID).To(Equal("my-service-instance-guid")) Expect(planGUID).To(Equal("murkydb-flare-guid")) Expect(params).To(Equal(map[string]interface{}{"foo": "bar"})) }) Context("that are not valid json", func() { It("returns an error to the UI", func() { callUpdateService([]string{"-p", "flare", "-c", `bad-json`, "my-service-instance"}) Expect(ui.Outputs()).To(ContainSubstrings( []string{"FAILED"}, []string{"Invalid configuration provided for -c flag. Please provide a valid JSON object or path to a file containing a valid JSON object."}, )) }) })