}) It("fails requirements when targeting a space or org", func() { Expect(callTarget([]string{"-o", "some-crazy-org-im-not-in"})).To(BeFalse()) Expect(callTarget([]string{"-s", "i-love-space"})).To(BeFalse()) }) }) Context("when the user is logged in", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) var expectOrgToBeCleared = func() { 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) })
Context("when logged in and given an org to rename", func() { BeforeEach(func() { org := models.Organization{} org.Name = "the-old-org-name" org.Guid = "the-old-org-guid" requirementsFactory.Organization = org requirementsFactory.LoginSuccess = true }) It("passes requirements", 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(requirementsFactory.OrganizationName).To(Equal("the-old-org-name")) 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() {
[]string{"Creating app", "app-name", "my-org", "my-space"}, []string{"OK"}, []string{"Creating", "app-name.foo.cf-app.com"}, []string{"OK"}, []string{"Binding", "app-name.foo.cf-app.com"}, []string{"OK"}, []string{"Uploading app-name"}, []string{"OK"}, )) Expect(stopper.ApplicationStopCallCount()).To(Equal(0)) app, orgName, spaceName := starter.ApplicationStartArgsForCall(0) Expect(app.Guid).To(Equal(appGuid)) Expect(app.Name).To(Equal("app-name")) Expect(orgName).To(Equal(configRepo.OrganizationFields().Name)) Expect(spaceName).To(Equal(configRepo.SpaceFields().Name)) Expect(starter.SetStartTimeoutInSecondsArgsForCall(0)).To(Equal(111)) }) It("strips special characters when creating a default route", func() { callPush("-t", "111", "app!name") Expect(routeRepo.FindByHostAndDomainCalledWith.Host).To(Equal("appname")) Expect(routeRepo.CreatedHost).To(Equal("appname")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Creating", "appname.foo.cf-app.com"}, []string{"Binding", "appname.foo.cf-app.com"}, )) Expect(ui.Outputs).ToNot(ContainSubstrings([]string{"FAILED"}))
It("gets the UAA endpoint and saves it to the config file", func() { requirementsFactory.ApiEndpointSuccess = true testcmd.RunCliCommand("auth", []string{"*****@*****.**", "password"}, requirementsFactory, updateCommandDependency, false) Expect(repo.GetLoginPromptsWasCalled).To(BeTrue()) }) Describe("when authentication fails", func() { BeforeEach(func() { repo.AuthError = true testcmd.RunCliCommand("auth", []string{"username", "password"}, requirementsFactory, updateCommandDependency, false) }) It("does not prompt the user when provided username and password", func() { Expect(ui.Outputs).To(ContainSubstrings( []string{config.ApiEndpoint()}, []string{"Authenticating..."}, []string{"FAILED"}, []string{"Error authenticating"}, )) }) It("clears the user's session", func() { Expect(config.AccessToken()).To(BeEmpty()) Expect(config.RefreshToken()).To(BeEmpty()) Expect(config.SpaceFields()).To(Equal(models.SpaceFields{})) Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{})) }) }) }) })
config.SetUaaEndpoint("http://uaa.the-endpoint") Expect(config.UaaEndpoint()).To(Equal("http://uaa.the-endpoint")) config.SetAccessToken("the-token") Expect(config.AccessToken()).To(Equal("the-token")) config.SetSSHOAuthClient("oauth-client-id") Expect(config.SSHOAuthClient()).To(Equal("oauth-client-id")) config.SetRefreshToken("the-token") Expect(config.RefreshToken()).To(Equal("the-token")) organization := maker.NewOrgFields(maker.Overrides{"name": "the-org"}) config.SetOrganizationFields(organization) Expect(config.OrganizationFields()).To(Equal(organization)) space := maker.NewSpaceFields(maker.Overrides{"name": "the-space"}) config.SetSpaceFields(space) Expect(config.SpaceFields()).To(Equal(space)) config.SetSSLDisabled(false) Expect(config.IsSSLDisabled()).To(BeFalse()) config.SetLocale("en_US") Expect(config.Locale()).To(Equal("en_US")) config.SetPluginRepo(models.PluginRepo{Name: "repo", Url: "nowhere.com"}) Expect(config.PluginRepos()[0].Name).To(Equal("repo")) Expect(config.PluginRepos()[0].Url).To(Equal("nowhere.com"))
orgRepo.FindByNameReturns(org2, nil) OUT_OF_RANGE_CHOICE := "3" ui.Inputs = []string{"api.example.com", "*****@*****.**", "password", OUT_OF_RANGE_CHOICE, "2", OUT_OF_RANGE_CHOICE, "1"} testcmd.RunCliCommand("login", Flags, nil, updateCommandDependency, false) Expect(ui.Outputs).To(ContainSubstrings( []string{"Select an org"}, []string{"1. some-org"}, []string{"2. my-new-org"}, []string{"Select a space"}, []string{"1. my-space"}, []string{"2. some-space"}, )) Expect(Config.OrganizationFields().Guid).To(Equal("my-new-org-guid")) Expect(Config.SpaceFields().Guid).To(Equal("my-space-guid")) Expect(Config.AccessToken()).To(Equal("my_access_token")) Expect(Config.RefreshToken()).To(Equal("my_refresh_token")) Expect(endpointRepo.UpdateEndpointReceived).To(Equal("api.example.com")) Expect(orgRepo.FindByNameArgsForCall(0)).To(Equal("my-new-org")) Expect(spaceRepo.FindByNameArgsForCall(0)).To(Equal("my-space")) Expect(ui.ShowConfigurationCalled).To(BeTrue()) }) It("lets the user select an org and space by name", func() { ui.Inputs = []string{"api.example.com", "*****@*****.**", "password", "my-new-org", "my-space"} orgRepo.FindByNameReturns(org2, nil)
runCommand("my-app") Expect(ui.Outputs).To(ContainSubstrings([]string{"my-app", "is already stopped"})) Expect(appRepo.UpdateCallCount()).To(BeZero()) }) }) Describe(".ApplicationStop()", func() { It("returns the updated app model from ApplicationStop()", func() { expectedStoppedApp := app expectedStoppedApp.State = "stopped" appRepo.UpdateReturns(expectedStoppedApp, nil) updateCommandDependency(false) stopper := command_registry.Commands.FindCommand("stop").(*application.Stop) actualStoppedApp, err := stopper.ApplicationStop(app, config.OrganizationFields().Name, config.SpaceFields().Name) Expect(err).NotTo(HaveOccurred()) Expect(expectedStoppedApp).To(Equal(actualStoppedApp)) }) Context("When the app is already stopped", func() { BeforeEach(func() { app.State = "stopped" }) It("returns the app without updating it", func() { stopper := command_registry.Commands.FindCommand("stop").(*application.Stop) updatedApp, err := stopper.ApplicationStop(app, config.OrganizationFields().Name, config.SpaceFields().Name) Expect(err).NotTo(HaveOccurred())
Expect(ui.Outputs).To(ContainSubstrings( []string{"Incorrect Usage", "Requires an argument"}, )) }) Context("when logged in", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) 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{} spaceFields.Name = "some-other-space" config.SetSpaceFields(spaceFields) })