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 }
It("makes the right request", func() { ts, handler, repo := createAppRepo([]testnet.TestRequest{updateApplicationRequest}) defer ts.Close() app := models.Application{} app.Guid = "my-app-guid" app.Name = "my-cool-app" app.BuildpackUrl = "buildpack-url" app.Command = "some-command" app.HealthCheckType = "none" app.Memory = 2048 app.InstanceCount = 3 app.Stack = &models.Stack{Guid: "some-stack-guid"} app.SpaceGuid = "some-space-guid" app.State = "started" app.DiskQuota = 512 Expect(app.EnvironmentVars).To(BeNil()) updatedApp, apiErr := repo.Update(app.Guid, app.ToParams()) Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) Expect(updatedApp.Command).To(Equal("some-command")) Expect(updatedApp.DetectedStartCommand).To(Equal("detected command")) Expect(updatedApp.Name).To(Equal("my-cool-app")) Expect(updatedApp.Guid).To(Equal("my-cool-app-guid")) }) It("sets environment variables", func() { request := testapi.NewCloudControllerTestRequest(testnet.TestRequest{ Method: "PUT",
}} app2Routes := []models.RouteSummary{ { Host: "app2", Domain: models.DomainFields{Name: "cfapps.io"}, }} app := models.Application{} app.Name = "Application-1" app.GUID = "Application-1-guid" app.State = "started" app.RunningInstances = 1 app.InstanceCount = 1 app.Memory = 512 app.DiskQuota = 1024 app.Routes = app1Routes app.AppPorts = []int{8080, 9090} app2 := models.Application{} app2.Name = "Application-2" app2.GUID = "Application-2-guid" app2.State = "started" app2.RunningInstances = 1 app2.InstanceCount = 2 app2.Memory = 256 app2.DiskQuota = 1024 app2.Routes = app2Routes appSummaryRepo.GetSummariesInCurrentSpaceApps = []models.Application{app, app2}
Expect(passed).To(BeFalse()) }) It("does not require any flags", func() { requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true Expect(testcmd.RunCommand(cmd, []string{"my-app"}, requirementsFactory)).To(BeTrue()) }) }) Describe("scaling an app", func() { BeforeEach(func() { app = maker.NewApp(maker.Overrides{"name": "my-app", "guid": "my-app-guid"}) app.InstanceCount = 42 app.DiskQuota = 1024 app.Memory = 256 requirementsFactory.Application = app appRepo.UpdateAppResult = app }) Context("when no flags are specified", func() { It("prints a description of the app's limits", func() { testcmd.RunCommand(cmd, []string{"my-app"}, requirementsFactory) Expect(ui.Outputs).To(ContainSubstrings( []string{"Showing", "my-app", "my-org", "my-space", "my-user"}, []string{"OK"}, []string{"memory", "256M"}, []string{"disk", "1G"},
name, host, domainName := fakeManifest.DomainArgsForCall(0) Expect(name).To(Equal("app-name")) Expect(host).To(Equal("route-1-host")) Expect(domainName).To(Equal("domain-1-name")) name, host, domainName = fakeManifest.DomainArgsForCall(1) Expect(name).To(Equal("app-name")) Expect(host).To(Equal("route-2-host")) Expect(domainName).To(Equal("domain-2-name")) }) }) Context("when the app has a disk quota", func() { BeforeEach(func() { application.DiskQuota = 1024 appSummaryRepo.GetSummaryReturns(application, nil) }) It("sets the disk quota", func() { Expect(runCLIErr).NotTo(HaveOccurred()) Expect(fakeManifest.DiskQuotaCallCount()).To(Equal(1)) name, quota := fakeManifest.DiskQuotaArgsForCall(0) Expect(name).To(Equal("app-name")) Expect(quota).To(Equal(int64(1024))) }) }) }) }) })