Expect(appRepo.CreateRestageRequestArgs.AppGuid).To(Equal("the-app-guid")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Restaging app", "my-app", "my-org", "my-space", "my-user"}, )) }) It("resets app's PackageState", func() { runCommand("my-app") Expect(stagingWatcher.watched.PackageState).ToNot(Equal("STAGED")) }) It("watches the staging output", func() { runCommand("my-app") Expect(stagingWatcher.watched).To(Equal(app)) Expect(stagingWatcher.orgName).To(Equal(configRepo.OrganizationFields().Name)) Expect(stagingWatcher.spaceName).To(Equal(configRepo.SpaceFields().Name)) }) }) }) type fakeStagingWatcher struct { watched models.Application orgName string spaceName string } func (f *fakeStagingWatcher) ApplicationWatchStaging(app models.Application, orgName, spaceName string, start func(models.Application) (models.Application, error)) (updatedApp models.Application, err error) { f.watched = app f.orgName = orgName f.spaceName = spaceName return start(app)
It("does not restart the app", func() { ui.Inputs = []string{"whatever"} testcmd.RunCommand(cmd, []string{"-i", "5", "-m", "512M", "-k", "2G", "my-app"}, requirementsFactory) Expect(restarter.ApplicationRestartCallCount()).To(Equal(0)) }) }) Context("when the user provides the -f flag", func() { It("does not prompt the user", func() { testcmd.RunCommand(cmd, []string{"-f", "-i", "5", "-m", "512M", "-k", "2G", "my-app"}, requirementsFactory) application, orgName, spaceName := restarter.ApplicationRestartArgsForCall(0) Expect(application).To(Equal(app)) Expect(orgName).To(Equal(config.OrganizationFields().Name)) Expect(spaceName).To(Equal(config.SpaceFields().Name)) }) }) Context("when the user confirms they want to restart", func() { BeforeEach(func() { ui.Inputs = []string{"yes"} }) It("can set an app's instance count, memory limit and disk limit", func() { testcmd.RunCommand(cmd, []string{"-i", "5", "-m", "512M", "-k", "2G", "my-app"}, requirementsFactory) Expect(ui.Outputs).To(ContainSubstrings( []string{"Scaling", "my-app", "my-org", "my-space", "my-user"}, []string{"OK"}, ))
runCommand() Expect(ui.FailedWithUsage).To(BeTrue()) }) 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) })
Expect(config.MinCliVersion()).To(Equal("6.5.0")) Expect(config.MinRecommendedCliVersion()).To(Equal("6.7.0")) }) Context("when the api endpoint does not change", func() { BeforeEach(func() { config.SetApiEndpoint(testServer.URL) config.SetAccessToken("some access token") config.SetRefreshToken("some refresh token") }) It("does not clear the session if the api endpoint does not change", func() { repo.UpdateEndpoint(testServer.URL) Expect(config.OrganizationFields()).To(Equal(org)) Expect(config.SpaceFields()).To(Equal(space)) Expect(config.AccessToken()).To(Equal("some access token")) Expect(config.RefreshToken()).To(Equal("some refresh token")) }) }) }) Context("when the API request fails", func() { ItClearsTheConfig := func() { Expect(config.ApiEndpoint()).To(BeEmpty()) } BeforeEach(func() { config.SetApiEndpoint("example.com") })
It("warns the user when the app is already stopped", func() { runCommand("my-app") Expect(ui.Outputs).To(ContainSubstrings([]string{"my-app", "is already stopped"})) Expect(appRepo.UpdateAppGuid).To(Equal("")) }) }) Describe(".ApplicationStop()", func() { It("returns the updated app model from ApplicationStop()", func() { expectedStoppedApp := app expectedStoppedApp.State = "stopped" appRepo.UpdateAppResult = expectedStoppedApp stopper := NewStop(ui, config, appRepo) 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 := NewStop(ui, config, appRepo) updatedApp, err := stopper.ApplicationStop(app, config.OrganizationFields().Name, config.SpaceFields().Name) Expect(err).NotTo(HaveOccurred())
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) }) It("it updates the organization in the config", func() { callTarget([]string{"-o", "my-organization"})
ui.Inputs = []string{"api.example.com", "*****@*****.**", "password", OUT_OF_RANGE_CHOICE, "2", OUT_OF_RANGE_CHOICE, "1"} l := NewLogin(ui, Config, authRepo, endpointRepo, orgRepo, spaceRepo) testcmd.RunCommand(l, Flags, nil) 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.FindByNameName).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)