func (repo *FakeUserRepository) Create(username, password string) (apiErr error) { repo.CreateUserUsername = username repo.CreateUserPassword = password if repo.CreateUserExists { apiErr = errors.NewModelAlreadyExistsError("User", username) } return }
func (repo CloudControllerServiceRepository) CreateServiceInstance(name, planGuid string) (err error) { path := fmt.Sprintf("%s/v2/service_instances", repo.config.ApiEndpoint()) data := fmt.Sprintf( `{"name":"%s","service_plan_guid":"%s","space_guid":"%s", "async": true}`, name, planGuid, repo.config.SpaceFields().Guid, ) err = repo.gateway.CreateResource(path, strings.NewReader(data)) if httpErr, ok := err.(errors.HttpError); ok && httpErr.ErrorCode() == errors.SERVICE_INSTANCE_NAME_TAKEN { serviceInstance, findInstanceErr := repo.FindInstanceByName(name) if findInstanceErr == nil && serviceInstance.ServicePlan.Guid == planGuid { return errors.NewModelAlreadyExistsError("Service", name) } } return }
func (repo CloudControllerUserRepository) Create(username, password string) (err error) { uaaEndpoint, err := repo.getAuthEndpoint() if err != nil { return } path := fmt.Sprintf("%s/Users", uaaEndpoint) body, err := json.Marshal(resources.NewUAAUserResource(username, password)) if err != nil { return } createUserResponse := &resources.UAAUserFields{} err = repo.uaaGateway.CreateResource(path, bytes.NewReader(body), createUserResponse) switch httpErr := err.(type) { case nil: case errors.HttpError: if httpErr.StatusCode() == http.StatusConflict { err = errors.NewModelAlreadyExistsError("user", username) return } default: return } path = fmt.Sprintf("%s/v2/users", repo.config.ApiEndpoint()) body, err = json.Marshal(resources.Metadata{ Guid: createUserResponse.Id, }) if err != nil { return } return repo.ccGateway.CreateResource(path, bytes.NewReader(body)) }
}) }) It("successfully creates a service", func() { callCreateService([]string{"cleardb", "spark", "my-cleardb-service"}) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"Creating service", "my-cleardb-service", "my-org", "my-space", "my-user"}, {"OK"}, }) Expect(serviceRepo.CreateServiceInstanceArgs.Name).To(Equal("my-cleardb-service")) Expect(serviceRepo.CreateServiceInstanceArgs.PlanGuid).To(Equal("cleardb-spark-guid")) }) It("warns the user when the service already exists with the same service plan", func() { serviceRepo.CreateServiceInstanceReturns.Error = errors.NewModelAlreadyExistsError("Service", "my-cleardb-service") callCreateService([]string{"cleardb", "spark", "my-cleardb-service"}) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"Creating service", "my-cleardb-service"}, {"OK"}, {"my-cleardb-service", "already exists"}, }) Expect(serviceRepo.CreateServiceInstanceArgs.Name).To(Equal("my-cleardb-service")) Expect(serviceRepo.CreateServiceInstanceArgs.PlanGuid).To(Equal("cleardb-spark-guid")) }) Context("When there are multiple services with the same label", func() { It("finds the plan even if it has to search multiple services", func() { offering2.Label = "cleardb"