requirementsFactory.LoginSuccess = true requirementsFactory.TargetedOrgSuccess = true }) It("unassigns a quota from a space", func() { space := models.Space{ SpaceFields: models.SpaceFields{ Name: "my-space", Guid: "my-space-guid", }, } quota := models.SpaceQuota{Name: "my-quota", Guid: "my-quota-guid"} quotaRepo.FindByNameReturns(quota, nil) spaceRepo.FindByNameReturns(space, nil) runCommand("my-space", "my-quota") Expect(ui.Outputs).To(ContainSubstrings( []string{"Unassigning space quota", "my-quota", "my-space", "my-user"}, []string{"OK"}, )) Expect(quotaRepo.FindByNameArgsForCall(0)).To(Equal("my-quota")) spaceGuid, quotaGuid := quotaRepo.UnassignQuotaFromSpaceArgsForCall(0) Expect(spaceGuid).To(Equal("my-space-guid")) Expect(quotaGuid).To(Equal("my-quota-guid")) }) }) })
It("it updates the organization in the config", func() { callTarget([]string{"-o", "my-organization"}) Expect(orgRepo.FindByNameArgsForCall(0)).To(Equal("my-organization")) Expect(ui.ShowConfigurationCalled).To(BeTrue()) Expect(config.OrganizationFields().Guid).To(Equal("my-organization-guid")) }) It("updates the space in the config", func() { space := models.Space{} space.Name = "my-space" space.Guid = "my-space-guid" spaceRepo.FindByNameReturns(space, nil) callTarget([]string{"-s", "my-space"}) Expect(spaceRepo.FindByNameArgsForCall(0)).To(Equal("my-space")) Expect(config.SpaceFields().Guid).To(Equal("my-space-guid")) Expect(ui.ShowConfigurationCalled).To(BeTrue()) }) It("updates both the organization and the space in the config", func() { space := models.Space{} space.Name = "my-space" space.Guid = "my-space-guid" spaceRepo.FindByNameReturns(space, nil) callTarget([]string{"-o", "my-organization", "-s", "my-space"})
runCommand("source-app", "target-app") Expect(ui.Outputs).To(ContainSubstrings( []string{"FAILED"}, []string{"could not find target app"}, )) }) }) }) Describe("when a space is provided, but not an org", func() { It("send the correct target appplication for the current org and target space", func() { space := models.Space{} space.Name = "space-name" space.Guid = "model-space-guid" spaceRepo.FindByNameReturns(space, nil) runCommand("-s", "space-name", "source-app", "target-app") targetAppName, spaceGuid := appRepo.ReadFromSpaceArgsForCall(0) Expect(targetAppName).To(Equal("target-app")) Expect(spaceGuid).To(Equal("model-space-guid")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Copying source from app", "source-app", "to target app", "target-app", "in org my-org / space space-name as my-user..."}, []string{"Note: this may take some time"}, []string{"OK"}, )) }) Context("Failures", func() {
It("does not update the api endpoint or ssl setting in the config", func() { Expect(Config.ApiEndpoint()).To(Equal("api.the-old-endpoint.com")) Expect(Config.IsSSLDisabled()).To(BeTrue()) }) It("clears Org, and Space in the config", func() { Expect(Config.OrganizationFields().Guid).To(BeEmpty()) Expect(Config.SpaceFields().Guid).To(BeEmpty()) }) }) Describe("and the login fails to target a space", func() { BeforeEach(func() { Flags = []string{"-u", "*****@*****.**", "-p", "password", "-o", "my-new-org", "-s", "nonexistent"} orgRepo.FindByNameReturns(org, nil) spaceRepo.FindByNameReturns(models.Space{}, errors.New("find-by-name-err")) Config.SetSSLDisabled(true) }) ItFails() ItShowsTheTarget() It("does not update the api endpoint or ssl setting in the config", func() { Expect(Config.ApiEndpoint()).To(Equal("api.the-old-endpoint.com")) Expect(Config.IsSSLDisabled()).To(BeTrue()) }) It("updates the org in the config", func() { Expect(Config.OrganizationFields().Guid).To(Equal("my-new-org-guid")) })
quotaRepo.FindByNameReturns( models.SpaceQuota{ Name: "quota-name", Guid: "quota-guid", MemoryLimit: 1024, InstanceMemoryLimit: 512, RoutesLimit: 111, ServicesLimit: 222, NonBasicServicesAllowed: true, OrgGuid: "my-org-guid", }, nil) spaceRepo.FindByNameReturns( models.Space{ SpaceFields: models.SpaceFields{ Name: "my-space", Guid: "my-space-guid", }, SpaceQuotaGuid: "", }, nil) }) Context("when the space quota was not previously assigned to a space", func() { It("associates the provided space with the provided space quota", func() { spaceGuid, quotaGuid := quotaRepo.AssociateSpaceWithQuotaArgsForCall(0) Expect(spaceGuid).To(Equal("my-space-guid")) Expect(quotaGuid).To(Equal("quota-guid")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Assigning space quota", "to space", "my-user"}, []string{"OK"}, ))