Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{})) } var expectSpaceToBeCleared = func() { Expect(config.SpaceFields()).To(Equal(models.SpaceFields{})) } Context("there are no errors", func() { BeforeEach(func() { org := models.Organization{} org.Name = "my-organization" org.GUID = "my-organization-guid" orgRepo.ListOrgsReturns([]models.Organization{org}, nil) orgRepo.FindByNameReturns(org, nil) config.SetOrganizationFields(models.OrganizationFields{Name: org.Name, GUID: org.GUID}) }) It("it updates the organization in the config", func() { callTarget([]string{"-o", "my-organization"}) Expect(orgRepo.FindByNameCallCount()).To(Equal(1)) 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"
It("fails with usage if no arguments are given", func() { runCommand() Expect(ui.Outputs()).To(ContainSubstrings( []string{"Incorrect Usage", "Requires an argument"}, )) }) Context("when logged in", func() { BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) }) Context("when deleting the currently targeted org", func() { It("untargets the deleted org", func() { config.SetOrganizationFields(org.OrganizationFields) runCommand("org-to-delete") Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{})) Expect(config.SpaceFields()).To(Equal(models.SpaceFields{})) }) }) Context("when deleting an org that is not targeted", func() { BeforeEach(func() { otherOrgFields := models.OrganizationFields{} otherOrgFields.GUID = "some-other-org-guid" otherOrgFields.Name = "some-other-org" config.SetOrganizationFields(otherOrgFields) spaceFields := models.SpaceFields{}
It("fails when the organization is not found", func() { orgRepo.FindByNameReturns(models.Organization{}, errors.New("my-organization not found")) callTarget([]string{"-o", "my-organization"}) Expect(ui.Outputs).To(ContainSubstrings( []string{"FAILED"}, []string{"my-organization", "not found"}, )) expectOrgToBeCleared() expectSpaceToBeCleared() }) It("fails to target a space if no organization is targeted", func() { config.SetOrganizationFields(models.OrganizationFields{}) callTarget([]string{"-s", "my-space"}) Expect(ui.Outputs).To(ContainSubstrings( []string{"FAILED"}, []string{"An org must be targeted before targeting a space"}, )) expectSpaceToBeCleared() }) It("fails when the user doesn't have access to the space", func() { spaceRepo.FindByNameReturns(models.Space{}, errors.New("Error finding space by name.")) callTarget([]string{"-s", "my-space"})
updateCommandDependency := func(pluginCall bool) { deps.UI = ui deps.Config = config commandregistry.Commands.SetCommand(commandregistry.Commands.FindCommand("logout").SetDependency(deps, pluginCall)) } BeforeEach(func() { org := models.OrganizationFields{} org.Name = "MyOrg" space := models.SpaceFields{} space.Name = "MySpace" config = testconfig.NewRepository() config.SetAccessToken("MyAccessToken") config.SetOrganizationFields(org) config.SetSpaceFields(space) ui = &testterm.FakeUI{} testcmd.RunCLICommand("logout", []string{}, nil, updateCommandDependency, false, ui) }) It("clears access token from the config", func() { Expect(config.AccessToken()).To(Equal("")) }) It("clears organization fields from the config", func() { Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{})) }) It("clears space fields from the config", func() {
AfterEach(func() { rpcService.Stop() //give time for server to stop time.Sleep(50 * time.Millisecond) }) Context(".GetCurrentOrg", func() { BeforeEach(func() { config.SetOrganizationFields(models.OrganizationFields{ GUID: "test-guid", Name: "test-org", QuotaDefinition: models.QuotaFields{ GUID: "guid123", Name: "quota123", MemoryLimit: 128, InstanceMemoryLimit: 16, RoutesLimit: 5, ServicesLimit: 6, NonBasicServicesAllowed: true, }, }) rpcService, err = NewRpcService(nil, nil, config, api.RepositoryLocator{}, nil, nil, nil, rpc.DefaultServer) err := rpcService.Start() Expect(err).ToNot(HaveOccurred()) pingCli(rpcService.Port()) }) It("populates the plugin Organization object with the current org settings in config", func() {
Expect(callRenameOrg([]string{"the-old-org-name", "the-new-org-name"})).To(BeTrue()) }) It("renames an organization", func() { targetedOrgName := configRepo.OrganizationFields().Name callRenameOrg([]string{"the-old-org-name", "the-new-org-name"}) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Renaming org", "the-old-org-name", "the-new-org-name", "my-user"}, []string{"OK"}, )) guid, name := orgRepo.RenameArgsForCall(0) Expect(guid).To(Equal("the-old-org-guid")) Expect(name).To(Equal("the-new-org-name")) Expect(configRepo.OrganizationFields().Name).To(Equal(targetedOrgName)) }) Describe("when the organization is currently targeted", func() { It("updates the name of the org in the config", func() { configRepo.SetOrganizationFields(models.OrganizationFields{ GUID: "the-old-org-guid", Name: "the-old-org-name", }) callRenameOrg([]string{"the-old-org-name", "the-new-org-name"}) Expect(configRepo.OrganizationFields().Name).To(Equal("the-new-org-name")) }) }) }) })