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 := commandregistry.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 := commandregistry.Commands.FindCommand("stop").(*application.Stop) updatedApp, err := stopper.ApplicationStop(app, config.OrganizationFields().Name, config.SpaceFields().Name) Expect(err).NotTo(HaveOccurred())
requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) Expect(runCommand()).To(BeFalse()) }) }) Context("when logged in, targeting a space, and an app name is provided", func() { BeforeEach(func() { requirementsFactory.NewApplicationRequirementReturns(applicationReq) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) stopper.ApplicationStopReturns(app, nil) }) It("restarts the given app", func() { runCommand("my-app") application, orgName, spaceName := stopper.ApplicationStopArgsForCall(0) Expect(application).To(Equal(app)) Expect(orgName).To(Equal(config.OrganizationFields().Name)) Expect(spaceName).To(Equal(config.SpaceFields().Name)) application, orgName, spaceName = starter.ApplicationStartArgsForCall(0) Expect(application).To(Equal(app)) Expect(orgName).To(Equal(config.OrganizationFields().Name)) Expect(spaceName).To(Equal(config.SpaceFields().Name)) }) }) })
Expect(callTarget([]string{"-s", "i-love-space"})).To(BeFalse()) }) }) Context("when the user is logged in", func() { BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) }) 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) config.SetOrganizationFields(models.OrganizationFields{Name: org.Name, GUID: org.GUID}) }) It("it updates the organization in the config", func() { callTarget([]string{"-o", "my-organization"})
It("gets the UAA endpoint and saves it to the config file", func() { requirementsFactory.NewAPIEndpointRequirementReturns(requirements.Passing{}) testcmd.RunCLICommand("auth", []string{"*****@*****.**", "password"}, requirementsFactory, updateCommandDependency, false, ui) Expect(authRepo.GetLoginPromptsAndSaveUAAServerURLCallCount()).To(Equal(1)) }) Describe("when authentication fails", func() { BeforeEach(func() { authRepo.AuthenticateReturns(errors.New("Error authenticating.")) testcmd.RunCLICommand("auth", []string{"username", "password"}, requirementsFactory, updateCommandDependency, false, ui) }) 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{})) }) }) }) })
It("fails when not logged in", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Failing{Message: "not logged in"}) Expect(callCreateService([]string{"cleardb", "spark", "my-cleardb-service"})).To(BeFalse()) }) It("fails when a space is not targeted", func() { requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Failing{Message: "not targeted"}) Expect(callCreateService([]string{"cleardb", "spark", "my-cleardb-service"})).To(BeFalse()) }) }) It("successfully creates a service", func() { callCreateService([]string{"cleardb", "spark", "my-cleardb-service"}) spaceGUID, serviceName := serviceBuilder.GetServicesByNameForSpaceWithPlansArgsForCall(0) Expect(spaceGUID).To(Equal(config.SpaceFields().GUID)) Expect(serviceName).To(Equal("cleardb")) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Creating service instance", "my-cleardb-service", "my-org", "my-space", "my-user"}, []string{"OK"}, )) name, planGUID, _, _ := serviceRepo.CreateServiceInstanceArgsForCall(0) Expect(name).To(Equal("my-cleardb-service")) Expect(planGUID).To(Equal("cleardb-spark-guid")) }) Context("when passing in tags", func() { It("sucessfully creates a service and passes the tags as json", func() { callCreateService([]string{"cleardb", "spark", "my-cleardb-service", "-t", "tag1, tag2,tag3, tag4"}) Expect(ui.Outputs()).To(ContainSubstrings(
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 := models.OrganizationFields{Name: "the-org"} config.SetOrganizationFields(organization) Expect(config.OrganizationFields()).To(Equal(organization)) space := models.SpaceFields{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")) s, _ := semver.Make("3.1") Expect(config.IsMinAPIVersion(s)).To(Equal(false)) config.SetMinCLIVersion("6.5.0")
[]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{} spaceFields.Name = "some-other-space" config.SetSpaceFields(spaceFields) })
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, ui) 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(Config.APIEndpoint()).To(Equal("api.example.com")) Expect(Config.APIVersion()).To(Equal("some-version")) Expect(Config.AuthenticationEndpoint()).To(Equal("auth/endpoint")) Expect(Config.SSHOAuthClient()).To(Equal("some-client")) Expect(Config.MinCLIVersion()).To(Equal("1.0.0")) Expect(Config.MinRecommendedCLIVersion()).To(Equal("1.0.0")) Expect(Config.LoggregatorEndpoint()).To(Equal("loggregator/endpoint")) Expect(Config.DopplerEndpoint()).To(Equal("doppler/endpoint")) Expect(Config.RoutingAPIEndpoint()).To(Equal("routing/endpoint")) Expect(endpointRepo.GetCCInfoCallCount()).To(Equal(1)) Expect(endpointRepo.GetCCInfoArgsForCall(0)).To(Equal("api.example.com"))
Describe("when the user is logged in and has provided an old and new space name", func() { var space models.Space BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedOrgRequirementReturns(new(requirementsfakes.FakeTargetedOrgRequirement)) space = models.Space{} space.Name = "the-old-space-name" space.GUID = "the-old-space-guid" spaceReq := new(requirementsfakes.FakeSpaceRequirement) spaceReq.GetSpaceReturns(space) requirementsFactory.NewSpaceRequirementReturns(spaceReq) }) It("renames a space", func() { originalSpaceName := configRepo.SpaceFields().Name callRenameSpace([]string{"the-old-space-name", "my-new-space"}) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Renaming space", "the-old-space-name", "my-new-space", "my-org", "my-user"}, []string{"OK"}, )) spaceGUID, name := spaceRepo.RenameArgsForCall(0) Expect(spaceGUID).To(Equal("the-old-space-guid")) Expect(name).To(Equal("my-new-space")) Expect(configRepo.SpaceFields().Name).To(Equal(originalSpaceName)) }) Describe("renaming the space the user has targeted", func() { BeforeEach(func() {