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