func (c CloudControllerServiceKeyRepository) CreateServiceKey(instanceGUID string, keyName string, params map[string]interface{}) error { path := "/v2/service_keys" request := models.ServiceKeyRequest{ Name: keyName, ServiceInstanceGUID: instanceGUID, Params: params, } jsonBytes, err := json.Marshal(request) if err != nil { return err } err = c.gateway.CreateResource(c.config.APIEndpoint(), path, bytes.NewReader(jsonBytes)) if httpErr, ok := err.(errors.HTTPError); ok { switch httpErr.ErrorCode() { case errors.ServiceKeyNameTaken: return errors.NewModelAlreadyExistsError("Service key", keyName) case errors.UnbindableService: return errors.NewUnbindableServiceError() default: return errors.New(httpErr.Error()) } } return nil }
Expect(serviceKeyRepo.CreateServiceKeyMethod.KeyName).To(Equal("fake-service-key")) }) It("create service key failed when the service key already exists", func() { serviceKeyRepo.CreateServiceKeyMethod.Error = errors.NewModelAlreadyExistsError("Service key", "exist-service-key") callCreateService([]string{"fake-service-instance", "exist-service-key"}) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Creating service key", "exist-service-key", "for service instance", "fake-service-instance", "as", "my-user"}, []string{"OK"}, []string{"Service key exist-service-key already exists"})) }) It("create service key failed when the service is unbindable", func() { serviceKeyRepo.CreateServiceKeyMethod.Error = errors.NewUnbindableServiceError() callCreateService([]string{"fake-service-instance", "exist-service-key"}) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Creating service key", "exist-service-key", "for service instance", "fake-service-instance", "as", "my-user"}, []string{"FAILED"}, []string{"This service doesn't support creation of keys."})) }) }) Context("when passing arbitrary params", func() { Context("as a json string", func() { It("successfully creates a service key and passes the params as a json string", func() { callCreateService([]string{"fake-service-instance", "fake-service-key", "-c", `{"foo": "bar"}`}) Expect(ui.Outputs()).To(ContainSubstrings(