Context("when the user is logged in", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) Context("when the user does not provide two args", func() { It("fails with usage", func() { runCommand() Expect(ui.FailedWithUsage).To(BeTrue()) }) }) Context("when the user provides an app and a domain", func() { BeforeEach(func() { requirementsFactory.Application = models.Application{ApplicationFields: models.ApplicationFields{ Guid: "my-app-guid", Name: "my-app", }} requirementsFactory.Domain = models.DomainFields{ Guid: "my-domain-guid", Name: "example.com", } routeRepo.FindByHostAndDomainReturns.Route = models.Route{ Domain: requirementsFactory.Domain, Guid: "my-route-guid", Host: "foo", } runCommand("-n", "my-host", "my-app", "my-domain.com") }) It("passes requirements", func() { Expect(testcmd.CommandDidPassRequirements).To(BeTrue())
Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) Context("when logged in", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) It("binds a service instance to an app", func() { app := models.Application{} app.Name = "my-app" app.Guid = "my-app-guid" serviceInstance := models.ServiceInstance{} serviceInstance.Name = "my-service" serviceInstance.Guid = "my-service-guid" requirementsFactory.Application = app requirementsFactory.ServiceInstance = serviceInstance serviceBindingRepo := &testapi.FakeServiceBindingRepo{} ui := callBindService([]string{"my-app", "my-service"}, requirementsFactory, serviceBindingRepo) Expect(requirementsFactory.ApplicationName).To(Equal("my-app")) Expect(requirementsFactory.ServiceInstanceName).To(Equal("my-service")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Binding service", "my-service", "my-app", "my-org", "my-space", "my-user"}, []string{"OK"}, []string{"TIP"}, )) Expect(serviceBindingRepo.CreateServiceInstanceGuid).To(Equal("my-service-guid")) Expect(serviceBindingRepo.CreateApplicationGuid).To(Equal("my-app-guid")) })
configRepo := testconfig.NewRepositoryWithDefaults() appRepo = &testApplication.FakeApplicationRepository{ UpdateAppResult: app, } appRepo.ReadReturns.App = app appInstancesRepo = &testAppInstanaces.FakeAppInstancesRepository{} appInstancesRepo.GetInstancesStub = getInstance logsForTail = []*logmessage.LogMessage{ testlogs.NewLogMessage("Log Line 1", app.Guid, LogMessageTypeStaging, time.Now()), testlogs.NewLogMessage("Log Line 2", app.Guid, LogMessageTypeStaging, time.Now()), } args := []string{"my-app"} requirementsFactory.Application = app ui = callStart(args, configRepo, requirementsFactory, displayApp, appRepo, appInstancesRepo, logRepo) return } It("fails requirements when not logged in", func() { requirementsFactory.LoginSuccess = false cmd := NewStart(new(testterm.FakeUI), testconfig.NewRepository(), &testcmd.FakeAppDisplayer{}, &testApplication.FakeApplicationRepository{}, &testAppInstanaces.FakeAppInstancesRepository{}, &testapi.FakeLogsRepository{}) testcmd.RunCommand(cmd, []string{"some-app-name"}, requirementsFactory) Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) Describe("timeouts", func() { It("has sane default timeout values", func() { cmd := NewStart(new(testterm.FakeUI), testconfig.NewRepository(), &testcmd.FakeAppDisplayer{}, &testApplication.FakeApplicationRepository{}, &testAppInstanaces.FakeAppInstancesRepository{}, &testapi.FakeLogsRepository{}) Expect(cmd.StagingTimeout).To(Equal(15 * time.Minute))