github.com/cloudfoundry/cli@v7.1.0+incompatible/actor/v7action/deployment_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/ccv3"
    10  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  )
    14  
    15  var _ = Describe("Deployment Actions", func() {
    16  	var (
    17  		actor                     *Actor
    18  		fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
    19  	)
    20  
    21  	BeforeEach(func() {
    22  		actor, fakeCloudControllerClient, _, _, _, _, _ = NewTestActor()
    23  	})
    24  
    25  	Describe("CreateDeploymentByApplicationAndRevision", func() {
    26  		It("delegates to the cloud controller client", func() {
    27  			fakeCloudControllerClient.CreateApplicationDeploymentByRevisionReturns(
    28  				"some-deployment-guid",
    29  				ccv3.Warnings{"create-warning-1", "create-warning-2"},
    30  				errors.New("create-error"),
    31  			)
    32  
    33  			returnedDeploymentGUID, warnings, _ := actor.CreateDeploymentByApplicationAndRevision("some-app-guid", "some-revision-guid")
    34  
    35  			Expect(fakeCloudControllerClient.CreateApplicationDeploymentByRevisionCallCount()).To(Equal(1), "CreateApplicationDeploymentByRevision call count")
    36  			givenAppGUID, givenRevisionGUID := fakeCloudControllerClient.CreateApplicationDeploymentByRevisionArgsForCall(0)
    37  
    38  			Expect(givenAppGUID).To(Equal("some-app-guid"))
    39  			Expect(givenRevisionGUID).To(Equal("some-revision-guid"))
    40  
    41  			Expect(returnedDeploymentGUID).To(Equal("some-deployment-guid"))
    42  			Expect(warnings).To(Equal(Warnings{"create-warning-1", "create-warning-2"}))
    43  		})
    44  	})
    45  
    46  	Describe("CreateDeploymentByApplicationAndDroplet", func() {
    47  		It("delegates to the cloud controller client", func() {
    48  			fakeCloudControllerClient.CreateApplicationDeploymentReturns("some-deployment-guid", ccv3.Warnings{"create-warning-1", "create-warning-2"}, errors.New("create-error"))
    49  
    50  			returnedDeploymentGUID, warnings, executeErr := actor.CreateDeploymentByApplicationAndDroplet("some-app-guid", "some-droplet-guid")
    51  
    52  			Expect(fakeCloudControllerClient.CreateApplicationDeploymentCallCount()).To(Equal(1))
    53  			givenAppGUID, givenDropletGUID := fakeCloudControllerClient.CreateApplicationDeploymentArgsForCall(0)
    54  
    55  			Expect(givenAppGUID).To(Equal("some-app-guid"))
    56  			Expect(givenDropletGUID).To(Equal("some-droplet-guid"))
    57  
    58  			Expect(returnedDeploymentGUID).To(Equal("some-deployment-guid"))
    59  			Expect(warnings).To(Equal(Warnings{"create-warning-1", "create-warning-2"}))
    60  			Expect(executeErr).To(MatchError("create-error"))
    61  		})
    62  	})
    63  
    64  	Describe("GetLatestActiveDeploymentForApp", func() {
    65  		var (
    66  			executeErr error
    67  			warnings   Warnings
    68  			deployment Deployment
    69  
    70  			appGUID string
    71  		)
    72  
    73  		BeforeEach(func() {
    74  			appGUID = "some-app-guid"
    75  		})
    76  
    77  		JustBeforeEach(func() {
    78  			deployment, warnings, executeErr = actor.GetLatestActiveDeploymentForApp(appGUID)
    79  		})
    80  
    81  		It("delegates to the CC client", func() {
    82  			Expect(fakeCloudControllerClient.GetDeploymentsCallCount()).To(Equal(1))
    83  			Expect(fakeCloudControllerClient.GetDeploymentsArgsForCall(0)).To(Equal(
    84  				[]ccv3.Query{
    85  					{Key: ccv3.AppGUIDFilter, Values: []string{appGUID}},
    86  					{Key: ccv3.StatusValueFilter, Values: []string{string(constant.DeploymentStatusValueActive)}},
    87  					{Key: ccv3.OrderBy, Values: []string{ccv3.CreatedAtDescendingOrder}},
    88  					{Key: ccv3.PerPage, Values: []string{"1"}},
    89  				},
    90  			))
    91  		})
    92  
    93  		When("the cc client errors", func() {
    94  			BeforeEach(func() {
    95  				fakeCloudControllerClient.GetDeploymentsReturns(
    96  					[]ccv3.Deployment{},
    97  					ccv3.Warnings{"get-deployments-warning"},
    98  					errors.New("get-deployments-error"),
    99  				)
   100  			})
   101  
   102  			It("returns an error and warnings", func() {
   103  				Expect(executeErr).To(MatchError("get-deployments-error"))
   104  				Expect(warnings).To(ConsistOf("get-deployments-warning"))
   105  			})
   106  		})
   107  
   108  		When("there are no deployments returned", func() {
   109  			BeforeEach(func() {
   110  				fakeCloudControllerClient.GetDeploymentsReturns(
   111  					[]ccv3.Deployment{},
   112  					ccv3.Warnings{"get-deployments-warning"},
   113  					nil,
   114  				)
   115  			})
   116  
   117  			It("returns a deployment not found error and warnings", func() {
   118  				Expect(executeErr).To(Equal(actionerror.ActiveDeploymentNotFoundError{}))
   119  				Expect(warnings).To(ConsistOf("get-deployments-warning"))
   120  			})
   121  
   122  		})
   123  
   124  		When("everything succeeds", func() {
   125  			BeforeEach(func() {
   126  				fakeCloudControllerClient.GetDeploymentsReturns(
   127  					[]ccv3.Deployment{{GUID: "dep-guid"}},
   128  					ccv3.Warnings{"get-deployments-warning"},
   129  					nil,
   130  				)
   131  			})
   132  
   133  			It("returns a deployment not found error and warnings", func() {
   134  				Expect(executeErr).ToNot(HaveOccurred())
   135  				Expect(warnings).To(ConsistOf("get-deployments-warning"))
   136  				Expect(deployment).To(Equal(Deployment{GUID: "dep-guid"}))
   137  			})
   138  
   139  		})
   140  	})
   141  
   142  	Describe("CancelDeployment", func() {
   143  		var (
   144  			deploymentGUID string
   145  
   146  			warnings   Warnings
   147  			executeErr error
   148  		)
   149  
   150  		BeforeEach(func() {
   151  			deploymentGUID = "dep-guid"
   152  		})
   153  
   154  		JustBeforeEach(func() {
   155  			warnings, executeErr = actor.CancelDeployment(deploymentGUID)
   156  		})
   157  
   158  		It("delegates to the cc client", func() {
   159  			Expect(fakeCloudControllerClient.CancelDeploymentCallCount()).To(Equal(1))
   160  			Expect(fakeCloudControllerClient.CancelDeploymentArgsForCall(0)).To(Equal(deploymentGUID))
   161  		})
   162  
   163  		When("the client fails", func() {
   164  			BeforeEach(func() {
   165  				fakeCloudControllerClient.CancelDeploymentReturns(ccv3.Warnings{"cancel-deployment-warnings"}, errors.New("cancel-deployment-error"))
   166  			})
   167  
   168  			It("returns the warnings and error", func() {
   169  				Expect(executeErr).To(MatchError("cancel-deployment-error"))
   170  				Expect(warnings).To(ConsistOf("cancel-deployment-warnings"))
   171  			})
   172  
   173  		})
   174  
   175  		When("the client succeeds", func() {
   176  			BeforeEach(func() {
   177  				fakeCloudControllerClient.CancelDeploymentReturns(ccv3.Warnings{"cancel-deployment-warnings"}, nil)
   178  			})
   179  
   180  			It("returns the warnings and error", func() {
   181  				Expect(executeErr).ToNot(HaveOccurred())
   182  				Expect(warnings).To(ConsistOf("cancel-deployment-warnings"))
   183  			})
   184  		})
   185  	})
   186  })