github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/actor/v7pushaction/update_routes_for_application_test.go (about) 1 package v7pushaction_test 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/v2action" 6 "code.cloudfoundry.org/cli/actor/v7action" 7 . "code.cloudfoundry.org/cli/actor/v7pushaction" 8 "code.cloudfoundry.org/cli/actor/v7pushaction/v7pushactionfakes" 9 "errors" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("UpdateWebProcessForApplication", func() { 15 var ( 16 actor *Actor 17 fakeV2Actor *v7pushactionfakes.FakeV2Actor 18 19 paramPlan PushPlan 20 21 warnings Warnings 22 executeErr error 23 24 events []Event 25 ) 26 27 BeforeEach(func() { 28 actor, fakeV2Actor, _, _ = getTestPushActor() 29 30 paramPlan = PushPlan{ 31 Application: v7action.Application{ 32 GUID: "some-app-guid", 33 }, 34 } 35 36 fakeV2Actor.GetOrganizationDomainsReturns( 37 []v2action.Domain{ 38 { 39 GUID: "some-domain-guid", 40 Name: "some-domain", 41 }, 42 }, 43 v2action.Warnings{"domain-warning"}, 44 nil, 45 ) 46 }) 47 48 JustBeforeEach(func() { 49 events = EventFollower(func(eventStream chan<- Event) { 50 _, warnings, executeErr = actor.UpdateRoutesForApplication(paramPlan, eventStream, nil) 51 }) 52 }) 53 54 When("creating a default route", func() { 55 BeforeEach(func() { 56 paramPlan.SkipRouteCreation = false 57 }) 58 59 When("route creation and mapping is successful", func() { 60 BeforeEach(func() { 61 fakeV2Actor.FindRouteBoundToSpaceWithSettingsReturns( 62 v2action.Route{}, 63 v2action.Warnings{"route-warning"}, 64 actionerror.RouteNotFoundError{}, 65 ) 66 67 fakeV2Actor.CreateRouteReturns( 68 v2action.Route{ 69 GUID: "some-route-guid", 70 Host: "some-app", 71 Domain: v2action.Domain{ 72 Name: "some-domain", 73 GUID: "some-domain-guid", 74 }, 75 SpaceGUID: "some-space-guid", 76 }, 77 v2action.Warnings{"route-create-warning"}, 78 nil, 79 ) 80 81 fakeV2Actor.MapRouteToApplicationReturns( 82 v2action.Warnings{"map-warning"}, 83 nil, 84 ) 85 }) 86 87 It("creates the route, maps it to the app, and returns any warnings", func() { 88 Expect(executeErr).ToNot(HaveOccurred()) 89 Expect(warnings).To(ConsistOf("domain-warning", "route-warning", "route-create-warning", "map-warning")) 90 Expect(events).To(ConsistOf(CreatingAndMappingRoutes, CreatedRoutes)) 91 }) 92 }) 93 94 When("route creation and mapping errors", func() { 95 var expectedErr error 96 97 BeforeEach(func() { 98 expectedErr = errors.New("some route error") 99 fakeV2Actor.GetOrganizationDomainsReturns( 100 []v2action.Domain{ 101 { 102 GUID: "some-domain-guid", 103 Name: "some-domain", 104 }, 105 }, 106 v2action.Warnings{"domain-warning"}, 107 expectedErr, 108 ) 109 }) 110 111 It("returns errors and warnings", func() { 112 Expect(executeErr).To(MatchError(expectedErr)) 113 Expect(warnings).To(ConsistOf("domain-warning")) 114 Expect(events).To(ConsistOf(CreatingAndMappingRoutes)) 115 }) 116 }) 117 }) 118 119 When("skipping default route creation from manifest", func() { 120 BeforeEach(func() { 121 paramPlan.SkipRouteCreation = true 122 }) 123 124 It("never attempts to create a route", func() { 125 Expect(events).To(BeEmpty()) 126 Expect(executeErr).ToNot(HaveOccurred()) 127 Expect(fakeV2Actor.GetApplicationRoutesCallCount()).To(BeZero()) 128 Expect(fakeV2Actor.CreateRouteCallCount()).To(BeZero()) 129 }) 130 }) 131 132 When("skipping default route creation from overrides", func() { 133 BeforeEach(func() { 134 paramPlan.SkipRouteCreation = false 135 paramPlan.NoRouteFlag = true 136 }) 137 138 It("never attempts to create a route", func() { 139 Expect(events).To(BeEmpty()) 140 Expect(executeErr).ToNot(HaveOccurred()) 141 Expect(fakeV2Actor.GetApplicationRoutesCallCount()).To(BeZero()) 142 Expect(fakeV2Actor.CreateRouteCallCount()).To(BeZero()) 143 }) 144 }) 145 })