}) Describe("when pushing a new app", func() { BeforeEach(func() { appRepo.ReadReturns.Error = errors.NewModelNotFoundError("App", "the-app") zipper.ZipReturns(nil) zipper.GetZipSizeReturns(9001, nil) actor.GatherFilesReturns(nil, nil) actor.UploadAppReturns(nil) }) Context("when the default route for the app already exists", func() { BeforeEach(func() { route := models.Route{} route.Guid = "my-route-guid" route.Host = "my-new-app" route.Domain = domainRepo.ListDomainsForOrgDomains[0] routeRepo.FindByHostAndDomainReturns.Route = route }) It("binds to existing routes", func() { callPush("my-new-app") Expect(routeRepo.CreatedHost).To(BeEmpty()) Expect(routeRepo.CreatedDomainGuid).To(BeEmpty()) Expect(routeRepo.FindByHostAndDomainCalledWith.Host).To(Equal("my-new-app")) Expect(routeRepo.BoundAppGuid).To(Equal("my-new-app-guid")) Expect(routeRepo.BoundRouteGuid).To(Equal("my-route-guid"))
Expect(ui.Outputs).To(ContainSubstrings( []string{"Creating route"}, []string{"OK"}, []string{"host.example.com", "already exists"}, )) Expect(routeRepo.CreateInSpaceHost).To(Equal("host")) Expect(routeRepo.CreateInSpaceDomainGuid).To(Equal("domain-guid")) Expect(routeRepo.CreateInSpaceSpaceGuid).To(Equal("my-space-guid")) }) Describe("RouteCreator interface", func() { It("creates a route, given a domain and space", func() { createdRoute := models.Route{} createdRoute.Host = "my-host" createdRoute.Guid = "my-route-guid" routeRepo := &testapi.FakeRouteRepository{ CreateInSpaceCreatedRoute: createdRoute, } cmd := NewCreateRoute(ui, config, routeRepo) route, apiErr := cmd.CreateRoute("my-host", requirementsFactory.Domain, requirementsFactory.Space.SpaceFields) Expect(apiErr).NotTo(HaveOccurred()) Expect(route.Guid).To(Equal(createdRoute.Guid)) Expect(ui.Outputs).To(ContainSubstrings( []string{"Creating route", "my-host.example.com", "my-org", "my-space", "my-user"}, []string{"OK"}, )) Expect(routeRepo.CreateInSpaceHost).To(Equal("my-host"))
}) It("passes when confirmation is provided", func() { var ui *testterm.FakeUI domain := models.DomainFields{Name: "example.com"} domain2 := models.DomainFields{Name: "cookieclicker.co"} app1 := models.ApplicationFields{Name: "dora"} route := models.Route{} route.Host = "hostname-1" route.Domain = domain route.Apps = []models.ApplicationFields{app1} route2 := models.Route{} route2.Guid = "route2-guid" route2.Host = "hostname-2" route2.Domain = domain2 routeRepo.Routes = []models.Route{route, route2} ui = callDeleteOrphanedRoutes("y", []string{}, reqFactory, routeRepo) Expect(ui.Prompts).To(ContainSubstrings( []string{"Really delete orphaned routes"}, )) Expect(ui.Outputs).To(ContainSubstrings( []string{"Deleting route", "hostname-2.cookieclicker.co"}, []string{"OK"}, ))