github.com/cloudfoundry/cli@v7.1.0+incompatible/actor/v7action/space_manifest_test.go (about)

     1  package v7action_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.cloudfoundry.org/cli/actor/actionerror"
     7  	. "code.cloudfoundry.org/cli/actor/v7action"
     8  	"code.cloudfoundry.org/cli/actor/v7action/v7actionfakes"
     9  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
    10  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
    11  
    12  	. "github.com/onsi/ginkgo"
    13  	. "github.com/onsi/gomega"
    14  )
    15  
    16  var _ = Describe("Application Manifest Actions", func() {
    17  	var (
    18  		actor                     *Actor
    19  		fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
    20  	)
    21  
    22  	BeforeEach(func() {
    23  		fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
    24  		actor = NewActor(fakeCloudControllerClient, nil, nil, nil, nil, nil)
    25  	})
    26  
    27  	Describe("SetSpaceManifest", func() {
    28  		var (
    29  			spaceGUID   string
    30  			rawManifest []byte
    31  
    32  			warnings   Warnings
    33  			executeErr error
    34  		)
    35  
    36  		BeforeEach(func() {
    37  			spaceGUID = "some-space-guid"
    38  			rawManifest = []byte("---\n- applications:\n name: my-app")
    39  		})
    40  
    41  		JustBeforeEach(func() {
    42  			warnings, executeErr = actor.SetSpaceManifest(spaceGUID, rawManifest)
    43  		})
    44  
    45  		When("applying the manifest succeeds", func() {
    46  			BeforeEach(func() {
    47  				fakeCloudControllerClient.UpdateSpaceApplyManifestReturns(
    48  					"some-job-url",
    49  					ccv3.Warnings{"apply-manifest-1-warning"},
    50  					nil,
    51  				)
    52  			})
    53  
    54  			When("polling finishes successfully", func() {
    55  				BeforeEach(func() {
    56  					fakeCloudControllerClient.PollJobReturns(
    57  						ccv3.Warnings{"poll-1-warning"},
    58  						nil,
    59  					)
    60  				})
    61  
    62  				It("uploads the app manifest", func() {
    63  					Expect(executeErr).ToNot(HaveOccurred())
    64  					Expect(warnings).To(ConsistOf("apply-manifest-1-warning", "poll-1-warning"))
    65  
    66  					Expect(fakeCloudControllerClient.UpdateSpaceApplyManifestCallCount()).To(Equal(1))
    67  					guidInCall, appManifest := fakeCloudControllerClient.UpdateSpaceApplyManifestArgsForCall(0)
    68  					Expect(guidInCall).To(Equal("some-space-guid"))
    69  					Expect(appManifest).To(Equal(rawManifest))
    70  
    71  					Expect(fakeCloudControllerClient.PollJobCallCount()).To(Equal(1))
    72  					jobURL := fakeCloudControllerClient.PollJobArgsForCall(0)
    73  					Expect(jobURL).To(Equal(ccv3.JobURL("some-job-url")))
    74  				})
    75  			})
    76  
    77  			When("polling returns a generic error", func() {
    78  				var expectedErr error
    79  
    80  				BeforeEach(func() {
    81  					expectedErr = errors.New("poll-1-error")
    82  					fakeCloudControllerClient.PollJobReturns(
    83  						ccv3.Warnings{"poll-1-warning"},
    84  						expectedErr,
    85  					)
    86  				})
    87  
    88  				It("reports a polling error", func() {
    89  					Expect(executeErr).To(Equal(expectedErr))
    90  					Expect(warnings).To(ConsistOf("apply-manifest-1-warning", "poll-1-warning"))
    91  				})
    92  			})
    93  
    94  			When("polling returns an job failed error", func() {
    95  				var expectedErr error
    96  
    97  				BeforeEach(func() {
    98  					expectedErr = ccerror.V3JobFailedError{Detail: "some-job-failed"}
    99  					fakeCloudControllerClient.PollJobReturns(
   100  						ccv3.Warnings{"poll-1-warning"},
   101  						expectedErr,
   102  					)
   103  				})
   104  
   105  				It("reports a polling error", func() {
   106  					Expect(executeErr).To(Equal(actionerror.ApplicationManifestError{Message: "some-job-failed"}))
   107  					Expect(warnings).To(ConsistOf("apply-manifest-1-warning", "poll-1-warning"))
   108  				})
   109  			})
   110  		})
   111  
   112  		When("applying the manifest errors", func() {
   113  			var applyErr error
   114  
   115  			BeforeEach(func() {
   116  				applyErr = errors.New("some-apply-manifest-error")
   117  				fakeCloudControllerClient.UpdateSpaceApplyManifestReturns(
   118  					"",
   119  					ccv3.Warnings{"apply-manifest-1-warning"},
   120  					applyErr,
   121  				)
   122  			})
   123  
   124  			It("reports a error trying to apply the manifest", func() {
   125  				Expect(executeErr).To(Equal(applyErr))
   126  				Expect(warnings).To(ConsistOf("apply-manifest-1-warning"))
   127  			})
   128  		})
   129  	})
   130  })