github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7pushaction/update_routes_for_application_test.go (about)

     1  package v7pushaction_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.cloudfoundry.org/cli/actor/actionerror"
     7  	"code.cloudfoundry.org/cli/actor/v2action"
     8  	"code.cloudfoundry.org/cli/actor/v7action"
     9  	. "code.cloudfoundry.org/cli/actor/v7pushaction"
    10  	"code.cloudfoundry.org/cli/actor/v7pushaction/v7pushactionfakes"
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  )
    14  
    15  var _ = Describe("UpdateWebProcessForApplication", func() {
    16  	var (
    17  		actor       *Actor
    18  		fakeV2Actor *v7pushactionfakes.FakeV2Actor
    19  		fakeV7Actor *v7pushactionfakes.FakeV7Actor
    20  
    21  		paramPlan PushPlan
    22  
    23  		warnings   Warnings
    24  		executeErr error
    25  
    26  		events []Event
    27  	)
    28  
    29  	BeforeEach(func() {
    30  		actor, fakeV2Actor, fakeV7Actor, _ = getTestPushActor()
    31  
    32  		paramPlan = PushPlan{
    33  			Application: v7action.Application{
    34  				GUID: "some-app-guid",
    35  			},
    36  		}
    37  
    38  		fakeV7Actor.GetDefaultDomainReturns(
    39  			v7action.Domain{
    40  				GUID: "some-domain-guid",
    41  				Name: "some-domain",
    42  			},
    43  			v7action.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  				fakeV7Actor.GetDefaultDomainReturns(
   100  					v7action.Domain{
   101  						GUID: "some-domain-guid",
   102  						Name: "some-domain",
   103  					},
   104  					v7action.Warnings{"domain-warning"},
   105  					expectedErr,
   106  				)
   107  			})
   108  
   109  			It("returns errors and warnings", func() {
   110  				Expect(executeErr).To(MatchError(expectedErr))
   111  				Expect(warnings).To(ConsistOf("domain-warning"))
   112  				Expect(events).To(ConsistOf(CreatingAndMappingRoutes))
   113  			})
   114  		})
   115  	})
   116  })