github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/map_route_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("map-route Command", func() { 21 var ( 22 cmd MapRouteCommand 23 testUI *ui.UI 24 fakeConfig *commandfakes.FakeConfig 25 fakeSharedActor *commandfakes.FakeSharedActor 26 fakeActor *v7fakes.FakeMapRouteActor 27 input *Buffer 28 binaryName string 29 executeErr error 30 domain string 31 appName string 32 hostname string 33 path string 34 orgGUID string 35 spaceGUID string 36 ) 37 38 BeforeEach(func() { 39 input = NewBuffer() 40 testUI = ui.NewTestUI(input, NewBuffer(), NewBuffer()) 41 fakeConfig = new(commandfakes.FakeConfig) 42 fakeSharedActor = new(commandfakes.FakeSharedActor) 43 fakeActor = new(v7fakes.FakeMapRouteActor) 44 45 binaryName = "faceman" 46 fakeConfig.BinaryNameReturns(binaryName) 47 appName = "my-app" 48 domain = "some-domain.com" 49 hostname = "host" 50 path = `path` 51 orgGUID = "some-org-guid" 52 spaceGUID = "some-space-guid" 53 54 cmd = MapRouteCommand{ 55 RequiredArgs: flag.AppDomain{App: appName, Domain: domain}, 56 Hostname: hostname, 57 Path: flag.V7RoutePath{Path: path}, 58 UI: testUI, 59 Config: fakeConfig, 60 SharedActor: fakeSharedActor, 61 Actor: fakeActor, 62 } 63 64 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 65 Name: "some-org", 66 GUID: orgGUID, 67 }) 68 69 fakeConfig.TargetedSpaceReturns(configv3.Space{ 70 Name: "some-space", 71 GUID: spaceGUID, 72 }) 73 74 fakeConfig.CurrentUserReturns(configv3.User{Name: "steve"}, nil) 75 }) 76 77 JustBeforeEach(func() { 78 executeErr = cmd.Execute(nil) 79 }) 80 81 When("checking target fails", func() { 82 BeforeEach(func() { 83 fakeSharedActor.CheckTargetReturns(actionerror.NoOrganizationTargetedError{BinaryName: binaryName}) 84 }) 85 86 It("returns an error", func() { 87 Expect(executeErr).To(MatchError(actionerror.NoOrganizationTargetedError{BinaryName: binaryName})) 88 89 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 90 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 91 Expect(checkTargetedOrg).To(BeTrue()) 92 Expect(checkTargetedSpace).To(BeTrue()) 93 }) 94 }) 95 96 When("the user is not logged in", func() { 97 var expectedErr error 98 99 BeforeEach(func() { 100 expectedErr = errors.New("some current user error") 101 fakeConfig.CurrentUserReturns(configv3.User{}, expectedErr) 102 }) 103 104 It("return an error", func() { 105 Expect(executeErr).To(Equal(expectedErr)) 106 }) 107 }) 108 109 When("the user is logged in and targeted", func() { 110 When("getting the domain errors", func() { 111 BeforeEach(func() { 112 fakeActor.GetDomainByNameReturns(v7action.Domain{}, v7action.Warnings{"get-domain-warnings"}, errors.New("get-domain-error")) 113 }) 114 115 It("returns the error and displays warnings", func() { 116 Expect(testUI.Err).To(Say("get-domain-warnings")) 117 Expect(executeErr).To(MatchError(errors.New("get-domain-error"))) 118 119 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 120 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 121 122 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(0)) 123 124 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(0)) 125 126 Expect(fakeActor.CreateRouteCallCount()).To(Equal(0)) 127 128 Expect(fakeActor.MapRouteCallCount()).To(Equal(0)) 129 }) 130 }) 131 132 When("getting the domain succeeds", func() { 133 BeforeEach(func() { 134 fakeActor.GetDomainByNameReturns( 135 v7action.Domain{Name: "some-domain.com", GUID: "domain-guid"}, 136 v7action.Warnings{"get-domain-warnings"}, 137 nil, 138 ) 139 }) 140 141 When("getting the app errors", func() { 142 BeforeEach(func() { 143 fakeActor.GetApplicationByNameAndSpaceReturns( 144 v7action.Application{}, 145 v7action.Warnings{"get-app-warnings"}, 146 errors.New("get-app-error"), 147 ) 148 }) 149 150 It("returns the error and displays warnings", func() { 151 Expect(testUI.Err).To(Say("get-domain-warnings")) 152 Expect(testUI.Err).To(Say("get-app-warnings")) 153 Expect(executeErr).To(MatchError(errors.New("get-app-error"))) 154 155 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 156 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 157 158 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 159 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 160 Expect(actualAppName).To(Equal(appName)) 161 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 162 163 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(0)) 164 165 Expect(fakeActor.CreateRouteCallCount()).To(Equal(0)) 166 167 Expect(fakeActor.MapRouteCallCount()).To(Equal(0)) 168 }) 169 }) 170 171 When("getting the app succeeds", func() { 172 BeforeEach(func() { 173 fakeActor.GetApplicationByNameAndSpaceReturns( 174 v7action.Application{Name: "app", GUID: "app-guid"}, 175 v7action.Warnings{"get-app-warnings"}, 176 nil, 177 ) 178 }) 179 180 When("getting the route errors", func() { 181 BeforeEach(func() { 182 fakeActor.GetRouteByAttributesReturns( 183 v7action.Route{}, 184 v7action.Warnings{"get-route-warnings"}, 185 errors.New("get-route-error"), 186 ) 187 }) 188 189 It("returns the error and displays warnings", func() { 190 Expect(testUI.Err).To(Say("get-domain-warnings")) 191 Expect(testUI.Err).To(Say("get-app-warnings")) 192 Expect(testUI.Err).To(Say("get-route-warnings")) 193 Expect(executeErr).To(MatchError(errors.New("get-route-error"))) 194 195 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 196 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 197 198 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 199 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 200 Expect(actualAppName).To(Equal(appName)) 201 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 202 203 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 204 actualDomainName, actualDomainGUID, actualHostname, actualPath := fakeActor.GetRouteByAttributesArgsForCall(0) 205 Expect(actualDomainName).To(Equal("some-domain.com")) 206 Expect(actualDomainGUID).To(Equal("domain-guid")) 207 Expect(actualHostname).To(Equal(hostname)) 208 Expect(actualPath).To(Equal(path)) 209 210 Expect(fakeActor.CreateRouteCallCount()).To(Equal(0)) 211 212 Expect(fakeActor.MapRouteCallCount()).To(Equal(0)) 213 }) 214 }) 215 216 When("the route does not exist", func() { 217 BeforeEach(func() { 218 fakeActor.GetRouteByAttributesReturns( 219 v7action.Route{}, 220 v7action.Warnings{"get-route-warnings"}, 221 actionerror.RouteNotFoundError{}, 222 ) 223 }) 224 225 It("creates the route", func() { 226 Expect(testUI.Err).To(Say("get-domain-warnings")) 227 Expect(testUI.Err).To(Say("get-app-warnings")) 228 Expect(testUI.Err).To(Say("get-route-warnings")) 229 Expect(executeErr).ToNot(HaveOccurred()) 230 231 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 232 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 233 234 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 235 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 236 Expect(actualAppName).To(Equal(appName)) 237 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 238 239 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 240 actualDomainName, actualDomainGUID, actualHostname, actualPath := fakeActor.GetRouteByAttributesArgsForCall(0) 241 Expect(actualDomainName).To(Equal("some-domain.com")) 242 Expect(actualDomainGUID).To(Equal("domain-guid")) 243 Expect(actualHostname).To(Equal(hostname)) 244 Expect(actualPath).To(Equal(path)) 245 246 Expect(fakeActor.CreateRouteCallCount()).To(Equal(1)) 247 actualSpaceGUID, actualDomainName, actualHostname, actualPath = fakeActor.CreateRouteArgsForCall(0) 248 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 249 Expect(actualDomainName).To(Equal("some-domain.com")) 250 Expect(actualHostname).To(Equal(hostname)) 251 Expect(actualPath).To(Equal(path)) 252 }) 253 }) 254 255 When("getting the route succeeds", func() { 256 BeforeEach(func() { 257 fakeActor.GetRouteByAttributesReturns( 258 v7action.Route{GUID: "route-guid"}, 259 v7action.Warnings{"get-route-warnings"}, 260 nil, 261 ) 262 }) 263 264 When("getting the destination errors", func() { 265 BeforeEach(func() { 266 fakeActor.GetRouteDestinationByAppGUIDReturns( 267 v7action.RouteDestination{}, 268 v7action.Warnings{"get-destination-warning"}, 269 errors.New("get-destination-error"), 270 ) 271 }) 272 It("returns the error and warnings", func() { 273 Expect(executeErr).To(MatchError(errors.New("get-destination-error"))) 274 Expect(testUI.Err).To(Say("get-destination-warning")) 275 276 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 277 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 278 279 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 280 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 281 Expect(actualAppName).To(Equal(appName)) 282 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 283 284 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 285 actualDomainName, actualDomainGUID, actualHostname, actualPath := fakeActor.GetRouteByAttributesArgsForCall(0) 286 Expect(actualDomainName).To(Equal("some-domain.com")) 287 Expect(actualDomainGUID).To(Equal("domain-guid")) 288 Expect(actualHostname).To(Equal(hostname)) 289 Expect(actualPath).To(Equal(path)) 290 291 Expect(fakeActor.GetRouteDestinationByAppGUIDCallCount()).To(Equal(1)) 292 actualRouteGUID, actualAppGUID := fakeActor.GetRouteDestinationByAppGUIDArgsForCall(0) 293 Expect(actualRouteGUID).To(Equal("route-guid")) 294 Expect(actualAppGUID).To(Equal("app-guid")) 295 296 Expect(fakeActor.MapRouteCallCount()).To(Equal(0)) 297 }) 298 }) 299 300 When("the destination already exists", func() { 301 BeforeEach(func() { 302 fakeActor.GetRouteDestinationByAppGUIDReturns( 303 v7action.RouteDestination{ 304 GUID: "route-dst-guid", 305 App: v7action.RouteDestinationApp{ 306 GUID: "existing-app-guid", 307 }, 308 }, 309 v7action.Warnings{"get-destination-warning"}, 310 nil, 311 ) 312 }) 313 It("exits 0 with a helpful message that the route is already mapped to the app", func() { 314 Expect(executeErr).ShouldNot(HaveOccurred()) 315 Expect(testUI.Err).To(Say("get-destination-warning")) 316 317 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 318 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 319 320 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 321 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 322 Expect(actualAppName).To(Equal(appName)) 323 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 324 325 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 326 actualDomainName, actualDomainGUID, actualHostname, actualPath := fakeActor.GetRouteByAttributesArgsForCall(0) 327 Expect(actualDomainName).To(Equal("some-domain.com")) 328 Expect(actualDomainGUID).To(Equal("domain-guid")) 329 Expect(actualHostname).To(Equal(hostname)) 330 Expect(actualPath).To(Equal(path)) 331 332 Expect(fakeActor.GetRouteDestinationByAppGUIDCallCount()).To(Equal(1)) 333 actualRouteGUID, actualAppGUID := fakeActor.GetRouteDestinationByAppGUIDArgsForCall(0) 334 Expect(actualRouteGUID).To(Equal("route-guid")) 335 Expect(actualAppGUID).To(Equal("app-guid")) 336 Expect(fakeActor.MapRouteCallCount()).To(Equal(0)) 337 }) 338 339 }) 340 When("the destination is not found", func() { 341 When("mapping the route errors", func() { 342 BeforeEach(func() { 343 fakeActor.MapRouteReturns(v7action.Warnings{"map-route-warnings"}, errors.New("map-route-error")) 344 }) 345 346 It("returns the error and displays warnings", func() { 347 Expect(testUI.Err).To(Say("get-domain-warnings")) 348 Expect(testUI.Err).To(Say("get-app-warnings")) 349 Expect(testUI.Err).To(Say("get-route-warnings")) 350 Expect(testUI.Err).To(Say("map-route-warnings")) 351 Expect(executeErr).To(MatchError(errors.New("map-route-error"))) 352 353 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 354 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 355 356 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 357 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 358 Expect(actualAppName).To(Equal(appName)) 359 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 360 361 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 362 actualDomainName, actualDomainGUID, actualHostname, actualPath := fakeActor.GetRouteByAttributesArgsForCall(0) 363 Expect(actualDomainName).To(Equal("some-domain.com")) 364 Expect(actualDomainGUID).To(Equal("domain-guid")) 365 Expect(actualHostname).To(Equal(hostname)) 366 Expect(actualPath).To(Equal(path)) 367 368 Expect(fakeActor.MapRouteCallCount()).To(Equal(1)) 369 actualRouteGUID, actualAppGUID := fakeActor.MapRouteArgsForCall(0) 370 Expect(actualRouteGUID).To(Equal("route-guid")) 371 Expect(actualAppGUID).To(Equal("app-guid")) 372 }) 373 }) 374 375 When("mapping the route succeeds", func() { 376 BeforeEach(func() { 377 fakeActor.MapRouteReturns(v7action.Warnings{"map-route-warnings"}, nil) 378 }) 379 380 It("returns the error and displays warnings", func() { 381 Expect(testUI.Err).To(Say("get-domain-warnings")) 382 Expect(testUI.Err).To(Say("get-app-warnings")) 383 Expect(testUI.Err).To(Say("get-route-warnings")) 384 Expect(testUI.Err).To(Say("map-route-warnings")) 385 Expect(executeErr).ToNot(HaveOccurred()) 386 387 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 388 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domain)) 389 390 Expect(fakeActor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 391 actualAppName, actualSpaceGUID := fakeActor.GetApplicationByNameAndSpaceArgsForCall(0) 392 Expect(actualAppName).To(Equal(appName)) 393 Expect(actualSpaceGUID).To(Equal(spaceGUID)) 394 395 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 396 actualDomainName, actualDomainGUID, actualHostname, actualPath := fakeActor.GetRouteByAttributesArgsForCall(0) 397 Expect(actualDomainName).To(Equal("some-domain.com")) 398 Expect(actualDomainGUID).To(Equal("domain-guid")) 399 Expect(actualHostname).To(Equal(hostname)) 400 Expect(actualPath).To(Equal(path)) 401 402 Expect(fakeActor.MapRouteCallCount()).To(Equal(1)) 403 actualRouteGUID, actualAppGUID := fakeActor.MapRouteArgsForCall(0) 404 Expect(actualRouteGUID).To(Equal("route-guid")) 405 Expect(actualAppGUID).To(Equal("app-guid")) 406 }) 407 }) 408 }) 409 }) 410 }) 411 }) 412 }) 413 })