func makeAppWithRoute(appName string) models.Application { application := models.Application{} application.Name = appName application.Guid = "app-guid" application.BuildpackUrl = "http://123.com" application.Command = "command1" application.Diego = false application.DetectedStartCommand = "detected_command" application.DiskQuota = 100 application.EnvironmentVars = map[string]interface{}{"test": 123} application.RunningInstances = 2 application.HealthCheckTimeout = 100 application.SpaceGuid = "guids_in_spaaace" application.PackageState = "STAGED" application.StagingFailedReason = "no reason" application.State = "started" application.InstanceCount = 2 application.RunningInstances = 2 application.Memory = 256 t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.UTC) application.PackageUpdatedAt = &t services := models.ServicePlanSummary{ Guid: "s1-guid", Name: "s1-service", } application.Services = []models.ServicePlanSummary{services} domain := models.DomainFields{Guid: "domain1-guid", Name: "example.com", OwningOrganizationGuid: "org-123", Shared: true} route := models.RouteSummary{Host: "foo", Guid: "foo-guid", Domain: domain} secondRoute := models.RouteSummary{Host: appName, Domain: domain} application.Stack = &models.Stack{ Name: "fake_stack", Guid: "123-123-123", } application.Routes = []models.RouteSummary{route, secondRoute} return application }
State: models.InstanceDown, Details: "failure", Since: testtime.MustParse("Mon Jan 2 15:04:05 -0700 MST 2006", "Mon Apr 1 15:04:05 -0700 MST 2012"), } instances := []models.AppInstanceFields{appInstance, appInstance2} appSummaryRepo.GetSummarySummary = app appInstancesRepo.GetInstancesReturns(instances, nil) requirementsFactory.Application = app updateCommandDependency(false) }) Context("When app is a diego app", func() { It("uses noaa log library to gather metrics", func() { app.Diego = true appSummaryRepo.GetSummarySummary = app requirementsFactory.Application = app updateCommandDependency(false) runCommand("my-app") Ω(appLogsNoaaRepo.GetContainerMetricsCallCount()).To(Equal(1)) }) It("gracefully handles when /instances is down but /noaa is not", func() { app.Diego = true appSummaryRepo.GetSummarySummary = app requirementsFactory.Application = app appInstancesRepo.GetInstancesReturns([]models.AppInstanceFields{}, errors.New("danger will robinson")) updateCommandDependency(false) runCommand("my-app")
appInstance2 := models.AppInstanceFields{ State: models.InstanceDown, Details: "failure", Since: testtime.MustParse("Mon Jan 2 15:04:05 -0700 MST 2006", "Mon Apr 1 15:04:05 -0700 MST 2012"), } instances := []models.AppInstanceFields{appInstance, appInstance2} appSummaryRepo.GetSummarySummary = app appInstancesRepo.GetInstancesReturns(instances, nil) requirementsFactory.Application = app }) Context("Displaying buildpack info", func() { It("Shows 'Buildpack' when buildpack is set", func() { app.Diego = false app.Buildpack = "go_buildpack" app.DetectedBuildpack = "should_not_display" appSummaryRepo.GetSummarySummary = app requirementsFactory.Application = app runCommand("my-app") Expect(appSummaryRepo.GetSummaryAppGuid).To(Equal("app-guid")) Expect(ui.Outputs).To(ContainSubstrings( []string{"buildpack", "go_buildpack"}, )) }) It("Shows 'DetectedBuildpack' when detected buildpack is set and 'Buildpack' is not set", func() {
}) Describe("ssh", func() { var ( currentApp models.Application ) BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) currentApp = models.Application{} currentApp.Name = "my-app" currentApp.State = "started" currentApp.GUID = "my-app-guid" currentApp.EnableSSH = true currentApp.Diego = true applicationReq := new(requirementsfakes.FakeApplicationRequirement) applicationReq.GetApplicationReturns(currentApp) requirementsFactory.NewApplicationRequirementReturns(applicationReq) }) Describe("Error getting required info to run ssh", func() { var ( testServer *httptest.Server handler *testnet.TestHandler ) AfterEach(func() { testServer.Close() })
BeforeEach(func() { opts = &options.SSHOptions{ AppName: "app-1", } }) JustBeforeEach(func() { connectErr = secureShell.Connect(opts) }) Context("when the app model and endpoint info are successfully acquired", func() { BeforeEach(func() { token = "" currentApp.State = "STARTED" currentApp.Diego = true }) Context("when the app is not in the 'STARTED' state", func() { BeforeEach(func() { currentApp.State = "STOPPED" currentApp.Diego = true }) It("returns an error", func() { Expect(connectErr).To(MatchError(MatchRegexp("Application.*not in the STARTED state"))) }) }) Context("when the app is not a Diego app", func() { BeforeEach(func() {