github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7action/domain_test.go (about) 1 package v7action_test 2 3 import ( 4 "errors" 5 6 . "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/actor/v7action/v7actionfakes" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 9 "code.cloudfoundry.org/cli/types" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Domain Actions", func() { 15 var ( 16 actor *Actor 17 fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient 18 ) 19 20 BeforeEach(func() { 21 actor, fakeCloudControllerClient, _, _, _ = NewTestActor() 22 }) 23 24 Describe("create shared domain", func() { 25 It("delegates to the cloud controller client", func() { 26 fakeCloudControllerClient.CreateDomainReturns(ccv3.Domain{}, ccv3.Warnings{"create-warning-1", "create-warning-2"}, errors.New("create-error")) 27 28 warnings, executeErr := actor.CreateSharedDomain("the-domain-name", true) 29 Expect(executeErr).To(MatchError("create-error")) 30 Expect(warnings).To(ConsistOf("create-warning-1", "create-warning-2")) 31 32 Expect(fakeCloudControllerClient.CreateDomainCallCount()).To(Equal(1)) 33 passedDomain := fakeCloudControllerClient.CreateDomainArgsForCall(0) 34 35 Expect(passedDomain).To(Equal( 36 ccv3.Domain{ 37 Name: "the-domain-name", 38 Internal: types.NullBool{IsSet: true, Value: true}, 39 }, 40 )) 41 }) 42 }) 43 44 Describe("create private domain", func() { 45 46 BeforeEach(func() { 47 fakeCloudControllerClient.GetOrganizationsReturns( 48 []ccv3.Organization{ 49 {GUID: "org-guid"}, 50 }, 51 ccv3.Warnings{"get-orgs-warning"}, 52 nil, 53 ) 54 55 fakeCloudControllerClient.CreateDomainReturns( 56 ccv3.Domain{}, 57 ccv3.Warnings{"create-warning-1", "create-warning-2"}, 58 errors.New("create-error"), 59 ) 60 }) 61 62 It("delegates to the cloud controller client", func() { 63 warnings, executeErr := actor.CreatePrivateDomain("private-domain-name", "org-name") 64 Expect(executeErr).To(MatchError("create-error")) 65 Expect(warnings).To(ConsistOf("get-orgs-warning", "create-warning-1", "create-warning-2")) 66 67 Expect(fakeCloudControllerClient.CreateDomainCallCount()).To(Equal(1)) 68 passedDomain := fakeCloudControllerClient.CreateDomainArgsForCall(0) 69 70 Expect(passedDomain).To(Equal( 71 ccv3.Domain{ 72 Name: "private-domain-name", 73 OrganizationGUID: "org-guid", 74 }, 75 )) 76 }) 77 }) 78 79 Describe("check if shared domain", func() { 80 When("attempting to delete a shared domain", func() { 81 BeforeEach(func() { 82 fakeCloudControllerClient.GetDomainsReturns( 83 []ccv3.Domain{ 84 {Name: "the-domain.com", GUID: "shared-domain-guid"}, 85 }, 86 ccv3.Warnings{"get-domains-warning"}, 87 nil, 88 ) 89 }) 90 91 It("delegates to the cloud controller client", func() { 92 warnings, executeErr := actor.CheckSharedDomain("the-domain.com") 93 Expect(executeErr).To(MatchError("Domain 'the-domain.com' is a shared domain, not a private domain.")) 94 Expect(warnings).To(ConsistOf("get-domains-warning")) 95 }) 96 }) 97 }) 98 99 Describe("delete shared domain", func() { 100 BeforeEach(func() { 101 fakeCloudControllerClient.GetDomainsReturns( 102 []ccv3.Domain{ 103 {Name: "the-domain.com", GUID: "domain-guid"}, 104 }, 105 ccv3.Warnings{"get-domains-warning"}, 106 nil, 107 ) 108 }) 109 110 It("delegates to the cloud controller client", func() { 111 fakeCloudControllerClient.DeleteDomainReturns(ccv3.JobURL("https://job.com"), ccv3.Warnings{"delete-warning"}, errors.New("delete-error")) 112 113 warnings, executeErr := actor.DeleteSharedDomain("the-domain.com") 114 Expect(executeErr).To(MatchError("delete-error")) 115 Expect(warnings).To(ConsistOf("get-domains-warning", "delete-warning")) 116 117 Expect(fakeCloudControllerClient.DeleteDomainCallCount()).To(Equal(1)) 118 passedDomainGuid := fakeCloudControllerClient.DeleteDomainArgsForCall(0) 119 120 Expect(passedDomainGuid).To(Equal("domain-guid")) 121 }) 122 }) 123 124 Describe("delete private domain", func() { 125 When("deleting a private domain", func() { 126 BeforeEach(func() { 127 fakeCloudControllerClient.GetDomainsReturns( 128 []ccv3.Domain{ 129 {Name: "the-domain.com", OrganizationGUID: "org-guid", GUID: "private-domain-guid"}, 130 }, 131 ccv3.Warnings{"get-domains-warning"}, 132 nil, 133 ) 134 }) 135 136 It("delegates to the cloud controller client", func() { 137 fakeCloudControllerClient.DeleteDomainReturns(ccv3.JobURL("https://job.com"), ccv3.Warnings{"delete-warning"}, errors.New("delete-error")) 138 139 warnings, executeErr := actor.DeletePrivateDomain("the-domain.com") 140 Expect(executeErr).To(MatchError("delete-error")) 141 Expect(warnings).To(ConsistOf("get-domains-warning", "delete-warning")) 142 143 Expect(fakeCloudControllerClient.DeleteDomainCallCount()).To(Equal(1)) 144 passedDomainGuid := fakeCloudControllerClient.DeleteDomainArgsForCall(0) 145 146 Expect(passedDomainGuid).To(Equal("private-domain-guid")) 147 }) 148 }) 149 150 }) 151 152 Describe("list domains for org", func() { 153 var ( 154 ccv3Domains []ccv3.Domain 155 domains []Domain 156 157 domain1Name string 158 domain1Guid string 159 160 domain2Name string 161 domain2Guid string 162 163 domain3Name string 164 domain3Guid string 165 166 org1Guid = "some-org-guid" 167 sharedFromOrgGuid = "another-org-guid" 168 warnings Warnings 169 executeErr error 170 ) 171 172 BeforeEach(func() { 173 ccv3Domains = []ccv3.Domain{ 174 {Name: domain1Name, GUID: domain1Guid, OrganizationGUID: org1Guid}, 175 {Name: domain2Name, GUID: domain2Guid, OrganizationGUID: org1Guid}, 176 {Name: domain3Name, GUID: domain3Guid, OrganizationGUID: sharedFromOrgGuid}, 177 } 178 }) 179 180 JustBeforeEach(func() { 181 domains, warnings, executeErr = actor.GetOrganizationDomains(org1Guid) 182 }) 183 184 When("the API layer call is successful", func() { 185 expectedOrgGUID := "some-org-guid" 186 187 BeforeEach(func() { 188 fakeCloudControllerClient.GetOrganizationDomainsReturns( 189 ccv3Domains, 190 ccv3.Warnings{"some-domain-warning"}, 191 nil, 192 ) 193 }) 194 195 It("returns back the domains and warnings", func() { 196 Expect(executeErr).ToNot(HaveOccurred()) 197 198 Expect(fakeCloudControllerClient.GetOrganizationDomainsCallCount()).To(Equal(1)) 199 actualOrgGuid, actualQuery := fakeCloudControllerClient.GetOrganizationDomainsArgsForCall(0) 200 Expect(actualOrgGuid).To(Equal(expectedOrgGUID)) 201 Expect(actualQuery).To(BeNil()) 202 203 Expect(domains).To(ConsistOf( 204 Domain{Name: domain1Name, GUID: domain1Guid, OrganizationGUID: org1Guid}, 205 Domain{Name: domain2Name, GUID: domain2Guid, OrganizationGUID: org1Guid}, 206 Domain{Name: domain3Name, GUID: domain3Guid, OrganizationGUID: sharedFromOrgGuid}, 207 )) 208 Expect(warnings).To(ConsistOf("some-domain-warning")) 209 210 }) 211 }) 212 213 When("when the API layer call returns an error", func() { 214 BeforeEach(func() { 215 fakeCloudControllerClient.GetOrganizationDomainsReturns( 216 []ccv3.Domain{}, 217 ccv3.Warnings{"some-domain-warning"}, 218 errors.New("list-error"), 219 ) 220 }) 221 222 It("returns the error and prints warnings", func() { 223 Expect(executeErr).To(MatchError("list-error")) 224 Expect(warnings).To(ConsistOf("some-domain-warning")) 225 Expect(domains).To(ConsistOf([]Domain{})) 226 227 Expect(fakeCloudControllerClient.GetOrganizationDomainsCallCount()).To(Equal(1)) 228 }) 229 230 }) 231 }) 232 233 Describe("get domain by guid", func() { 234 var ( 235 domain Domain 236 ccv3Domain ccv3.Domain 237 domain1Guid string 238 239 warnings Warnings 240 executeErr error 241 ) 242 243 BeforeEach(func() { 244 domain1Guid = "domain-1-guid" 245 ccv3Domain = ccv3.Domain{Name: "domain-1-name", GUID: domain1Guid} 246 }) 247 248 JustBeforeEach(func() { 249 250 domain, warnings, executeErr = actor.GetDomain(domain1Guid) 251 }) 252 253 When("the API layer call is successful", func() { 254 BeforeEach(func() { 255 fakeCloudControllerClient.GetDomainReturns( 256 ccv3Domain, 257 ccv3.Warnings{"some-domain-warning"}, 258 nil, 259 ) 260 }) 261 262 It("returns back the domains and warnings", func() { 263 Expect(executeErr).ToNot(HaveOccurred()) 264 265 Expect(fakeCloudControllerClient.GetDomainCallCount()).To(Equal(1)) 266 actualGUID := fakeCloudControllerClient.GetDomainArgsForCall(0) 267 Expect(actualGUID).To(Equal(domain1Guid)) 268 269 Expect(domain).To(Equal( 270 Domain{Name: "domain-1-name", GUID: domain1Guid}, 271 )) 272 Expect(warnings).To(ConsistOf("some-domain-warning")) 273 274 }) 275 }) 276 277 When("when the API layer call returns an error", func() { 278 BeforeEach(func() { 279 fakeCloudControllerClient.GetDomainReturns( 280 ccv3.Domain{}, 281 ccv3.Warnings{"some-domain-warning"}, 282 errors.New("get-domain-error"), 283 ) 284 }) 285 286 It("returns the error and prints warnings", func() { 287 Expect(executeErr).To(MatchError("get-domain-error")) 288 Expect(warnings).To(ConsistOf("some-domain-warning")) 289 Expect(domain).To(Equal(Domain{})) 290 291 Expect(fakeCloudControllerClient.GetDomainCallCount()).To(Equal(1)) 292 }) 293 }) 294 }) 295 296 Describe("get domain by name", func() { 297 var ( 298 ccv3Domains []ccv3.Domain 299 domain Domain 300 301 domain1Name string 302 domain1Guid string 303 304 warnings Warnings 305 executeErr error 306 ) 307 308 BeforeEach(func() { 309 ccv3Domains = []ccv3.Domain{ 310 {Name: domain1Name, GUID: domain1Guid}, 311 } 312 }) 313 314 JustBeforeEach(func() { 315 domain, warnings, executeErr = actor.GetDomainByName(domain1Name) 316 }) 317 318 When("the API layer call is successful", func() { 319 expectedQuery := []ccv3.Query{{Key: ccv3.NameFilter, Values: []string{domain1Name}}} 320 BeforeEach(func() { 321 fakeCloudControllerClient.GetDomainsReturns( 322 ccv3Domains, 323 ccv3.Warnings{"some-domain-warning"}, 324 nil, 325 ) 326 }) 327 328 It("returns back the domains and warnings", func() { 329 Expect(executeErr).ToNot(HaveOccurred()) 330 331 Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1)) 332 actualQuery := fakeCloudControllerClient.GetDomainsArgsForCall(0) 333 Expect(actualQuery).To(Equal(expectedQuery)) 334 335 Expect(domain).To(Equal( 336 Domain{Name: domain1Name, GUID: domain1Guid}, 337 )) 338 Expect(warnings).To(ConsistOf("some-domain-warning")) 339 340 }) 341 }) 342 343 When("when the API layer call returns an error", func() { 344 BeforeEach(func() { 345 fakeCloudControllerClient.GetDomainsReturns( 346 []ccv3.Domain{}, 347 ccv3.Warnings{"some-domain-warning"}, 348 errors.New("list-error"), 349 ) 350 }) 351 352 It("returns the error and prints warnings", func() { 353 Expect(executeErr).To(MatchError("list-error")) 354 Expect(warnings).To(ConsistOf("some-domain-warning")) 355 Expect(domain).To(Equal(Domain{})) 356 357 Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1)) 358 }) 359 }) 360 }) 361 362 Describe("share private domain to org", func() { 363 BeforeEach(func() { 364 fakeCloudControllerClient.GetOrganizationsReturns( 365 []ccv3.Organization{ 366 {GUID: "org-guid"}, 367 }, 368 ccv3.Warnings{"get-orgs-warning"}, 369 nil, 370 ) 371 372 fakeCloudControllerClient.GetDomainsReturns( 373 []ccv3.Domain{ 374 {Name: "private-domain.com", GUID: "private-domain-guid"}, 375 }, 376 ccv3.Warnings{"get-domains-warning"}, 377 nil, 378 ) 379 380 fakeCloudControllerClient.SharePrivateDomainToOrgsReturns( 381 ccv3.Warnings{"share-domain-warning"}, 382 nil, 383 ) 384 }) 385 386 It("delegates to the cloud controller client", func() { 387 warnings, executeErr := actor.SharePrivateDomain("private-domain.com", "org-name") 388 Expect(executeErr).To(BeNil()) 389 Expect(warnings).To(ConsistOf("share-domain-warning", "get-orgs-warning", "get-domains-warning")) 390 391 Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1)) 392 actualQuery := fakeCloudControllerClient.GetDomainsArgsForCall(0) 393 Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{"private-domain.com"}}})) 394 395 Expect(fakeCloudControllerClient.SharePrivateDomainToOrgsCallCount()).To(Equal(1)) 396 domainGuid, sharedOrgs := fakeCloudControllerClient.SharePrivateDomainToOrgsArgsForCall(0) 397 Expect(domainGuid).To(Equal("private-domain-guid")) 398 Expect(sharedOrgs).To(Equal(ccv3.SharedOrgs{GUIDs: []string{"org-guid"}})) 399 }) 400 }) 401 402 Describe("unshare private domain from org", func() { 403 var ( 404 domainName string 405 orgName string 406 executeErr error 407 warnings Warnings 408 ) 409 410 JustBeforeEach(func() { 411 warnings, executeErr = actor.UnsharePrivateDomain(domainName, orgName) 412 }) 413 414 When("getting the org or domain errors", func() { 415 BeforeEach(func() { 416 fakeCloudControllerClient.GetOrganizationsReturns( 417 nil, 418 ccv3.Warnings{"get-orgs-warning"}, 419 errors.New("get-orgs-error"), 420 ) 421 }) 422 It("returns an error and the warnings", func() { 423 Expect(fakeCloudControllerClient.UnsharePrivateDomainFromOrgCallCount()).To(Equal(0)) 424 425 Expect(executeErr).To(MatchError(errors.New("get-orgs-error"))) 426 Expect(warnings).To(ConsistOf("get-orgs-warning")) 427 }) 428 }) 429 430 When("getting the guids succeeds", func() { 431 BeforeEach(func() { 432 fakeCloudControllerClient.GetDomainsReturns( 433 []ccv3.Domain{ 434 {Name: domainName, GUID: "private-domain-guid"}, 435 }, 436 ccv3.Warnings{"get-domains-warning"}, 437 nil, 438 ) 439 440 fakeCloudControllerClient.GetOrganizationsReturns( 441 []ccv3.Organization{ 442 {Name: orgName, GUID: "org-guid"}, 443 }, 444 ccv3.Warnings{"get-orgs-warning"}, 445 nil, 446 ) 447 }) 448 449 When("Unsharing the domain errors", func() { 450 BeforeEach(func() { 451 fakeCloudControllerClient.UnsharePrivateDomainFromOrgReturns( 452 ccv3.Warnings{"unshare-domain-warning"}, 453 errors.New("unsahre-domain-error"), 454 ) 455 }) 456 457 It("returns any warnings and errors", func() { 458 Expect(fakeCloudControllerClient.UnsharePrivateDomainFromOrgCallCount()).To(Equal(1)) 459 actualDomainGUID, actualOrgGUID := fakeCloudControllerClient.UnsharePrivateDomainFromOrgArgsForCall(0) 460 Expect(actualDomainGUID).To(Equal("private-domain-guid")) 461 Expect(actualOrgGUID).To(Equal("org-guid")) 462 463 Expect(executeErr).To(MatchError(errors.New("unsahre-domain-error"))) 464 Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning", "unshare-domain-warning")) 465 }) 466 }) 467 468 When("everything succeeds", func() { 469 BeforeEach(func() { 470 fakeCloudControllerClient.UnsharePrivateDomainFromOrgReturns( 471 ccv3.Warnings{"unshare-domain-warning"}, 472 nil, 473 ) 474 }) 475 476 It("returns any warnings and no error", func() { 477 Expect(fakeCloudControllerClient.UnsharePrivateDomainFromOrgCallCount()).To(Equal(1)) 478 actualDomainGUID, actualOrgGUID := fakeCloudControllerClient.UnsharePrivateDomainFromOrgArgsForCall(0) 479 Expect(actualDomainGUID).To(Equal("private-domain-guid")) 480 Expect(actualOrgGUID).To(Equal("org-guid")) 481 482 Expect(executeErr).ToNot(HaveOccurred()) 483 Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning", "unshare-domain-warning")) 484 }) 485 }) 486 }) 487 }) 488 489 Describe("GetDomainAndOrgByNames", func() { 490 var ( 491 orgName = "my-org" 492 domainName = "domain.com" 493 494 orgGUID string 495 domainGUID string 496 warnings Warnings 497 executeErr error 498 ) 499 JustBeforeEach(func() { 500 orgGUID, domainGUID, warnings, executeErr = actor.GetDomainAndOrgGUIDsByName(domainName, orgName) 501 }) 502 503 When("Getting the organization is not successful", func() { 504 BeforeEach(func() { 505 fakeCloudControllerClient.GetOrganizationsReturns( 506 nil, 507 ccv3.Warnings{"get-orgs-warning"}, 508 errors.New("get-orgs-error"), 509 ) 510 }) 511 512 It("returns the error and doesnt get the domain", func() { 513 Expect(fakeCloudControllerClient.GetOrganizationsCallCount()).To(Equal(1)) 514 actualQuery := fakeCloudControllerClient.GetOrganizationsArgsForCall(0) 515 Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{orgName}}})) 516 517 Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(0)) 518 519 Expect(executeErr).To(MatchError(errors.New("get-orgs-error"))) 520 Expect(warnings).To(ConsistOf("get-orgs-warning")) 521 }) 522 }) 523 524 When("getting the orgs succeeds", func() { 525 BeforeEach(func() { 526 fakeCloudControllerClient.GetOrganizationsReturns( 527 []ccv3.Organization{ 528 {Name: orgName, GUID: "org-guid"}, 529 }, 530 ccv3.Warnings{"get-orgs-warning"}, 531 nil, 532 ) 533 }) 534 When("Getting the domain is not successful", func() { 535 BeforeEach(func() { 536 fakeCloudControllerClient.GetDomainsReturns( 537 nil, 538 ccv3.Warnings{"get-domains-warning"}, 539 errors.New("get-domains-error"), 540 ) 541 }) 542 543 It("returns the error and doesnt get the domain", func() { 544 Expect(fakeCloudControllerClient.GetOrganizationsCallCount()).To(Equal(1)) 545 actualQuery := fakeCloudControllerClient.GetOrganizationsArgsForCall(0) 546 Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{orgName}}})) 547 548 Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1)) 549 actualQuery = fakeCloudControllerClient.GetDomainsArgsForCall(0) 550 Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{domainName}}})) 551 552 Expect(executeErr).To(MatchError(errors.New("get-domains-error"))) 553 Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning")) 554 }) 555 }) 556 557 When("the api call are successful", func() { 558 BeforeEach(func() { 559 fakeCloudControllerClient.GetDomainsReturns( 560 []ccv3.Domain{ 561 {Name: domainName, GUID: "private-domain-guid"}, 562 }, 563 ccv3.Warnings{"get-domains-warning"}, 564 nil, 565 ) 566 }) 567 568 It("returns the GUIDs", func() { 569 Expect(fakeCloudControllerClient.GetOrganizationsCallCount()).To(Equal(1)) 570 actualQuery := fakeCloudControllerClient.GetOrganizationsArgsForCall(0) 571 Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{orgName}}})) 572 573 Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1)) 574 actualQuery = fakeCloudControllerClient.GetDomainsArgsForCall(0) 575 Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{domainName}}})) 576 577 Expect(executeErr).ToNot(HaveOccurred()) 578 Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning")) 579 Expect(orgGUID).To(Equal("org-guid")) 580 Expect(domainGUID).To(Equal("private-domain-guid")) 581 }) 582 }) 583 }) 584 }) 585 })