github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/cancel_deployment_command_test.go (about) 1 package v7_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/command/commandfakes" 9 "code.cloudfoundry.org/cli/command/flag" 10 . "code.cloudfoundry.org/cli/command/v7" 11 "code.cloudfoundry.org/cli/command/v7/v7fakes" 12 "code.cloudfoundry.org/cli/util/configv3" 13 "code.cloudfoundry.org/cli/util/ui" 14 15 . "github.com/onsi/ginkgo" 16 . "github.com/onsi/gomega" 17 . "github.com/onsi/gomega/gbytes" 18 ) 19 20 var _ = Describe("Cancel deployment command", func() { 21 var ( 22 cmd CancelDeploymentCommand 23 testUI *ui.UI 24 input *Buffer 25 fakeConfig *commandfakes.FakeConfig 26 fakeSharedActor *commandfakes.FakeSharedActor 27 fakeActor *v7fakes.FakeCancelDeploymentActor 28 binaryName string 29 appName string 30 spaceGUID string 31 executeErr error 32 ) 33 34 BeforeEach(func() { 35 input = NewBuffer() 36 testUI = ui.NewTestUI(input, NewBuffer(), NewBuffer()) 37 fakeConfig = new(commandfakes.FakeConfig) 38 fakeSharedActor = new(commandfakes.FakeSharedActor) 39 fakeActor = new(v7fakes.FakeCancelDeploymentActor) 40 41 binaryName = "clodFoundry" 42 fakeConfig.BinaryNameReturns(binaryName) 43 44 cmd = CancelDeploymentCommand{ 45 RequiredArgs: flag.AppName{AppName: appName}, 46 UI: testUI, 47 Config: fakeConfig, 48 SharedActor: fakeSharedActor, 49 Actor: fakeActor, 50 } 51 52 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 53 Name: "some-org", 54 GUID: "some-org-guid", 55 }) 56 57 spaceGUID = "some-space-guid" 58 fakeConfig.TargetedSpaceReturns(configv3.Space{ 59 Name: "some-space", 60 GUID: spaceGUID, 61 }) 62 63 fakeConfig.CurrentUserReturns(configv3.User{Name: "timmyD"}, nil) 64 }) 65 66 JustBeforeEach(func() { 67 executeErr = cmd.Execute(nil) 68 }) 69 70 When("checking target fails", func() { 71 BeforeEach(func() { 72 fakeSharedActor.CheckTargetReturns(actionerror.NoOrganizationTargetedError{BinaryName: binaryName}) 73 }) 74 75 It("returns an error", func() { 76 Expect(executeErr).To(MatchError(actionerror.NoOrganizationTargetedError{BinaryName: binaryName})) 77 78 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 79 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 80 Expect(checkTargetedOrg).To(BeTrue()) 81 Expect(checkTargetedSpace).To(BeTrue()) 82 }) 83 }) 84 85 When("the user is not logged in", func() { 86 var expectedErr error 87 88 BeforeEach(func() { 89 expectedErr = errors.New("some current user error") 90 fakeConfig.CurrentUserNameReturns("", expectedErr) 91 }) 92 93 It("return an error", func() { 94 Expect(executeErr).To(Equal(expectedErr)) 95 }) 96 }) 97 98 When("the user is logged in", func() { 99 It("delegates to actor.GetApplicationByNameAndSpace", func() { 100 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 101 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 102 Expect(actualAppName).To(Equal(appName)) 103 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 104 }) 105 106 When("getting the app fails", func() { 107 BeforeEach(func() { 108 fakeActor.GetApplicationByNameAndSpaceReturns( 109 v7action.Application{}, 110 v7action.Warnings{"get-app-warning"}, 111 errors.New("get-app-error"), 112 ) 113 }) 114 115 It("returns the errors and outputs warnings", func() { 116 Expect(executeErr).To(MatchError("get-app-error")) 117 Expect(testUI.Err).To(Say("get-app-warning")) 118 119 Expect(fakeActor.GetLatestActiveDeploymentForAppCallCount()).To(Equal(0)) 120 Expect(fakeActor.CancelDeploymentCallCount()).To(Equal(0)) 121 }) 122 }) 123 124 When("getting the app succeeds", func() { 125 var appGUID string 126 BeforeEach(func() { 127 appGUID = "some-app-guid" 128 fakeActor.GetApplicationByNameAndSpaceReturns( 129 v7action.Application{Name: appName, GUID: appGUID}, 130 v7action.Warnings{"get-app-warning"}, 131 nil, 132 ) 133 }) 134 135 It("delegates to actor.GetLatestDeployment", func() { 136 Expect(fakeActor.GetLatestActiveDeploymentForAppCallCount()).To(Equal(1)) 137 Expect(fakeActor.GetLatestActiveDeploymentForAppArgsForCall(0)).To(Equal(appGUID)) 138 }) 139 140 When("getting the latest deployment fails", func() { 141 BeforeEach(func() { 142 fakeActor.GetLatestActiveDeploymentForAppReturns( 143 v7action.Deployment{}, 144 v7action.Warnings{"get-deployment-warning"}, 145 errors.New("get-deployment-error"), 146 ) 147 }) 148 149 It("returns the error and all warnings", func() { 150 Expect(executeErr).To(MatchError("get-deployment-error")) 151 Expect(testUI.Err).To(Say("get-app-warning")) 152 Expect(testUI.Err).To(Say("get-deployment-warning")) 153 154 Expect(fakeActor.CancelDeploymentCallCount()).To(Equal(0)) 155 }) 156 }) 157 158 When("getting the latest deployment succeeds", func() { 159 var deploymentGUID string 160 BeforeEach(func() { 161 deploymentGUID = "some-deployment-guid" 162 fakeActor.GetLatestActiveDeploymentForAppReturns( 163 v7action.Deployment{GUID: deploymentGUID}, 164 v7action.Warnings{"get-deployment-warning"}, 165 nil, 166 ) 167 }) 168 169 It("delegates to actor.CancelDeployment", func() { 170 Expect(fakeActor.CancelDeploymentCallCount()).To(Equal(1)) 171 Expect(fakeActor.CancelDeploymentArgsForCall(0)).To(Equal(deploymentGUID)) 172 }) 173 174 When("cancelling the deployment fails", func() { 175 BeforeEach(func() { 176 fakeActor.CancelDeploymentReturns( 177 v7action.Warnings{"cancel-deployment-warning"}, 178 errors.New("cancel-deployment-error"), 179 ) 180 }) 181 182 It("returns all warnings and errors", func() { 183 Expect(executeErr).To(MatchError("cancel-deployment-error")) 184 Expect(testUI.Err).To(Say("get-app-warning")) 185 Expect(testUI.Err).To(Say("get-deployment-warning")) 186 Expect(testUI.Err).To(Say("cancel-deployment-warning")) 187 }) 188 }) 189 190 When("cancelling the deployment succeeds", func() { 191 BeforeEach(func() { 192 fakeActor.CancelDeploymentReturns( 193 v7action.Warnings{"cancel-deployment-warning"}, 194 nil, 195 ) 196 }) 197 198 It("returns warnings and success", func() { 199 Expect(executeErr).ToNot(HaveOccurred()) 200 Expect(testUI.Err).To(Say("get-app-warning")) 201 Expect(testUI.Err).To(Say("get-deployment-warning")) 202 Expect(testUI.Err).To(Say("cancel-deployment-warning")) 203 }) 204 }) 205 }) 206 }) 207 }) 208 })