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  })