github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+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("CheckRoute", func() {
    25  		var (
    26  			domainName string
    27  			hostname   string
    28  			path       string
    29  
    30  			matches    bool
    31  			warnings   Warnings
    32  			executeErr error
    33  		)
    34  
    35  		BeforeEach(func() {
    36  			domainName = "domain-name"
    37  			hostname = "host"
    38  			path = "/path"
    39  
    40  			fakeCloudControllerClient.GetDomainsReturns(
    41  				[]ccv3.Domain{{GUID: "domain-guid"}},
    42  				ccv3.Warnings{"get-domains-warning"},
    43  				nil,
    44  			)
    45  
    46  			fakeCloudControllerClient.CheckRouteReturns(
    47  				true,
    48  				ccv3.Warnings{"check-route-warning-1", "check-route-warning-2"},
    49  				nil,
    50  			)
    51  		})
    52  
    53  		JustBeforeEach(func() {
    54  			matches, warnings, executeErr = actor.CheckRoute(domainName, hostname, path)
    55  		})
    56  
    57  		It("delegates to the cloud controller client", func() {
    58  			Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1))
    59  			givenQuery := fakeCloudControllerClient.GetDomainsArgsForCall(0)
    60  			Expect(givenQuery).To(Equal([]ccv3.Query{
    61  				{Key: ccv3.NameFilter, Values: []string{domainName}},
    62  			}))
    63  
    64  			Expect(fakeCloudControllerClient.CheckRouteCallCount()).To(Equal(1))
    65  			givenDomainGUID, givenHostname, givenPath := fakeCloudControllerClient.CheckRouteArgsForCall(0)
    66  			Expect(givenDomainGUID).To(Equal("domain-guid"))
    67  			Expect(givenHostname).To(Equal(hostname))
    68  			Expect(givenPath).To(Equal(path))
    69  
    70  			Expect(matches).To(BeTrue())
    71  			Expect(warnings).To(ConsistOf("get-domains-warning", "check-route-warning-1", "check-route-warning-2"))
    72  			Expect(executeErr).NotTo(HaveOccurred())
    73  		})
    74  
    75  		When("getting the domain by name errors", func() {
    76  			BeforeEach(func() {
    77  				fakeCloudControllerClient.GetDomainsReturns(
    78  					[]ccv3.Domain{{GUID: "domain-guid"}},
    79  					ccv3.Warnings{"get-domains-warning"},
    80  					errors.New("domain not found"),
    81  				)
    82  			})
    83  
    84  			It("returns the error and any warnings", func() {
    85  				Expect(warnings).To(ConsistOf("get-domains-warning"))
    86  				Expect(executeErr).To(MatchError("domain not found"))
    87  			})
    88  		})
    89  
    90  		When("checking the route errors", func() {
    91  			BeforeEach(func() {
    92  				fakeCloudControllerClient.CheckRouteReturns(
    93  					true,
    94  					ccv3.Warnings{"check-route-warning-1", "check-route-warning-2"},
    95  					errors.New("failed to check route"),
    96  				)
    97  			})
    98  
    99  			It("returns the error and any warnings", func() {
   100  				Expect(warnings).To(ConsistOf("get-domains-warning", "check-route-warning-1", "check-route-warning-2"))
   101  				Expect(executeErr).To(MatchError("failed to check route"))
   102  			})
   103  		})
   104  	})
   105  
   106  	Describe("create shared domain", func() {
   107  		It("delegates to the cloud controller client", func() {
   108  			fakeCloudControllerClient.CreateDomainReturns(ccv3.Domain{}, ccv3.Warnings{"create-warning-1", "create-warning-2"}, errors.New("create-error"))
   109  
   110  			warnings, executeErr := actor.CreateSharedDomain("the-domain-name", true)
   111  			Expect(executeErr).To(MatchError("create-error"))
   112  			Expect(warnings).To(ConsistOf("create-warning-1", "create-warning-2"))
   113  
   114  			Expect(fakeCloudControllerClient.CreateDomainCallCount()).To(Equal(1))
   115  			passedDomain := fakeCloudControllerClient.CreateDomainArgsForCall(0)
   116  
   117  			Expect(passedDomain).To(Equal(
   118  				ccv3.Domain{
   119  					Name:     "the-domain-name",
   120  					Internal: types.NullBool{IsSet: true, Value: true},
   121  				},
   122  			))
   123  		})
   124  	})
   125  
   126  	Describe("create private domain", func() {
   127  
   128  		BeforeEach(func() {
   129  			fakeCloudControllerClient.GetOrganizationsReturns(
   130  				[]ccv3.Organization{
   131  					{GUID: "org-guid"},
   132  				},
   133  				ccv3.Warnings{"get-orgs-warning"},
   134  				nil,
   135  			)
   136  
   137  			fakeCloudControllerClient.CreateDomainReturns(
   138  				ccv3.Domain{},
   139  				ccv3.Warnings{"create-warning-1", "create-warning-2"},
   140  				errors.New("create-error"),
   141  			)
   142  		})
   143  
   144  		It("delegates to the cloud controller client", func() {
   145  			warnings, executeErr := actor.CreatePrivateDomain("private-domain-name", "org-name")
   146  			Expect(executeErr).To(MatchError("create-error"))
   147  			Expect(warnings).To(ConsistOf("get-orgs-warning", "create-warning-1", "create-warning-2"))
   148  
   149  			Expect(fakeCloudControllerClient.CreateDomainCallCount()).To(Equal(1))
   150  			passedDomain := fakeCloudControllerClient.CreateDomainArgsForCall(0)
   151  
   152  			Expect(passedDomain).To(Equal(
   153  				ccv3.Domain{
   154  					Name:             "private-domain-name",
   155  					OrganizationGUID: "org-guid",
   156  				},
   157  			))
   158  		})
   159  	})
   160  
   161  	Describe("delete domain", func() {
   162  		var (
   163  			domain Domain
   164  		)
   165  		BeforeEach(func() {
   166  			domain = Domain{Name: "the-domain.com", GUID: "domain-guid"}
   167  		})
   168  
   169  		It("delegates to the cloud controller client", func() {
   170  			fakeCloudControllerClient.DeleteDomainReturns(
   171  				ccv3.JobURL("https://jobs/job_guid"),
   172  				ccv3.Warnings{"delete-warning"},
   173  				nil)
   174  
   175  			warnings, executeErr := actor.DeleteDomain(domain)
   176  			Expect(executeErr).ToNot(HaveOccurred())
   177  			Expect(warnings).To(ConsistOf("delete-warning"))
   178  
   179  			Expect(fakeCloudControllerClient.DeleteDomainCallCount()).To(Equal(1))
   180  			passedDomainGuid := fakeCloudControllerClient.DeleteDomainArgsForCall(0)
   181  
   182  			Expect(passedDomainGuid).To(Equal("domain-guid"))
   183  
   184  			Expect(fakeCloudControllerClient.PollJobCallCount()).To(Equal(1))
   185  			responseJobUrl := fakeCloudControllerClient.PollJobArgsForCall(0)
   186  			Expect(responseJobUrl).To(Equal(ccv3.JobURL("https://jobs/job_guid")))
   187  		})
   188  
   189  		When("polling the job fails", func() {
   190  			BeforeEach(func() {
   191  				fakeCloudControllerClient.PollJobReturns(
   192  					ccv3.Warnings{"poll-job-warning"},
   193  					errors.New("async-domain-delete-error"),
   194  				)
   195  			})
   196  
   197  			It("returns the error", func() {
   198  				warnings, err := actor.DeleteDomain(domain)
   199  				Expect(err).To(MatchError("async-domain-delete-error"))
   200  				Expect(warnings).To(ConsistOf(
   201  					"poll-job-warning",
   202  				))
   203  			})
   204  		})
   205  	})
   206  
   207  	Describe("list domains for org", func() {
   208  		var (
   209  			ccv3Domains []ccv3.Domain
   210  			domains     []Domain
   211  
   212  			domain1Name string
   213  			domain1Guid string
   214  
   215  			domain2Name string
   216  			domain2Guid string
   217  
   218  			domain3Name string
   219  			domain3Guid string
   220  
   221  			org1Guid          = "some-org-guid"
   222  			sharedFromOrgGuid = "another-org-guid"
   223  			warnings          Warnings
   224  			executeErr        error
   225  			labelSelector     string
   226  		)
   227  
   228  		BeforeEach(func() {
   229  			ccv3Domains = []ccv3.Domain{
   230  				{Name: domain1Name, GUID: domain1Guid, OrganizationGUID: org1Guid},
   231  				{Name: domain2Name, GUID: domain2Guid, OrganizationGUID: org1Guid},
   232  				{Name: domain3Name, GUID: domain3Guid, OrganizationGUID: sharedFromOrgGuid},
   233  			}
   234  			labelSelector = "foo=bar"
   235  		})
   236  
   237  		JustBeforeEach(func() {
   238  			domains, warnings, executeErr = actor.GetOrganizationDomains(org1Guid, labelSelector)
   239  		})
   240  
   241  		When("the API layer call is successful", func() {
   242  			expectedOrgGUID := "some-org-guid"
   243  
   244  			BeforeEach(func() {
   245  				fakeCloudControllerClient.GetOrganizationDomainsReturns(
   246  					ccv3Domains,
   247  					ccv3.Warnings{"some-domain-warning"},
   248  					nil,
   249  				)
   250  			})
   251  
   252  			It("returns back the domains and warnings", func() {
   253  				Expect(executeErr).ToNot(HaveOccurred())
   254  
   255  				Expect(fakeCloudControllerClient.GetOrganizationDomainsCallCount()).To(Equal(1))
   256  				actualOrgGuid, _ := fakeCloudControllerClient.GetOrganizationDomainsArgsForCall(0)
   257  				Expect(actualOrgGuid).To(Equal(expectedOrgGUID))
   258  
   259  				Expect(domains).To(ConsistOf(
   260  					Domain{Name: domain1Name, GUID: domain1Guid, OrganizationGUID: org1Guid},
   261  					Domain{Name: domain2Name, GUID: domain2Guid, OrganizationGUID: org1Guid},
   262  					Domain{Name: domain3Name, GUID: domain3Guid, OrganizationGUID: sharedFromOrgGuid},
   263  				))
   264  				Expect(warnings).To(ConsistOf("some-domain-warning"))
   265  
   266  			})
   267  
   268  			It("uses the label selector", func() {
   269  				_, actualQuery := fakeCloudControllerClient.GetOrganizationDomainsArgsForCall(0)
   270  				Expect(actualQuery).To(ContainElement(ccv3.Query{Key: ccv3.LabelSelectorFilter, Values: []string{"foo=bar"}}))
   271  			})
   272  
   273  			When("the label selector isn't specified", func() {
   274  				BeforeEach(func() {
   275  					labelSelector = ""
   276  				})
   277  
   278  				It("calls the API with no label selectors", func() {
   279  					Expect(executeErr).ToNot(HaveOccurred())
   280  
   281  					Expect(fakeCloudControllerClient.GetOrganizationDomainsCallCount()).To(Equal(1))
   282  					_, actualQuery := fakeCloudControllerClient.GetOrganizationDomainsArgsForCall(0)
   283  					Expect(len(actualQuery)).To(Equal(0))
   284  				})
   285  			})
   286  		})
   287  
   288  		When("when the API layer call returns an error", func() {
   289  			BeforeEach(func() {
   290  				fakeCloudControllerClient.GetOrganizationDomainsReturns(
   291  					[]ccv3.Domain{},
   292  					ccv3.Warnings{"some-domain-warning"},
   293  					errors.New("list-error"),
   294  				)
   295  			})
   296  
   297  			It("returns the error and prints warnings", func() {
   298  				Expect(executeErr).To(MatchError("list-error"))
   299  				Expect(warnings).To(ConsistOf("some-domain-warning"))
   300  				Expect(domains).To(ConsistOf([]Domain{}))
   301  
   302  				Expect(fakeCloudControllerClient.GetOrganizationDomainsCallCount()).To(Equal(1))
   303  			})
   304  
   305  		})
   306  	})
   307  
   308  	Describe("get domain by guid", func() {
   309  		var (
   310  			domain      Domain
   311  			ccv3Domain  ccv3.Domain
   312  			domain1Guid string
   313  
   314  			warnings   Warnings
   315  			executeErr error
   316  		)
   317  
   318  		BeforeEach(func() {
   319  			domain1Guid = "domain-1-guid"
   320  			ccv3Domain = ccv3.Domain{Name: "domain-1-name", GUID: domain1Guid}
   321  		})
   322  
   323  		JustBeforeEach(func() {
   324  
   325  			domain, warnings, executeErr = actor.GetDomain(domain1Guid)
   326  		})
   327  
   328  		When("the API layer call is successful", func() {
   329  			BeforeEach(func() {
   330  				fakeCloudControllerClient.GetDomainReturns(
   331  					ccv3Domain,
   332  					ccv3.Warnings{"some-domain-warning"},
   333  					nil,
   334  				)
   335  			})
   336  
   337  			It("returns back the domains and warnings", func() {
   338  				Expect(executeErr).ToNot(HaveOccurred())
   339  
   340  				Expect(fakeCloudControllerClient.GetDomainCallCount()).To(Equal(1))
   341  				actualGUID := fakeCloudControllerClient.GetDomainArgsForCall(0)
   342  				Expect(actualGUID).To(Equal(domain1Guid))
   343  
   344  				Expect(domain).To(Equal(
   345  					Domain{Name: "domain-1-name", GUID: domain1Guid},
   346  				))
   347  				Expect(warnings).To(ConsistOf("some-domain-warning"))
   348  
   349  			})
   350  		})
   351  
   352  		When("when the API layer call returns an error", func() {
   353  			BeforeEach(func() {
   354  				fakeCloudControllerClient.GetDomainReturns(
   355  					ccv3.Domain{},
   356  					ccv3.Warnings{"some-domain-warning"},
   357  					errors.New("get-domain-error"),
   358  				)
   359  			})
   360  
   361  			It("returns the error and prints warnings", func() {
   362  				Expect(executeErr).To(MatchError("get-domain-error"))
   363  				Expect(warnings).To(ConsistOf("some-domain-warning"))
   364  				Expect(domain).To(Equal(Domain{}))
   365  
   366  				Expect(fakeCloudControllerClient.GetDomainCallCount()).To(Equal(1))
   367  			})
   368  		})
   369  	})
   370  
   371  	Describe("get domain by name", func() {
   372  		var (
   373  			ccv3Domains []ccv3.Domain
   374  			domain      Domain
   375  
   376  			domain1Name string
   377  			domain1Guid string
   378  
   379  			warnings   Warnings
   380  			executeErr error
   381  		)
   382  
   383  		BeforeEach(func() {
   384  			ccv3Domains = []ccv3.Domain{
   385  				{Name: domain1Name, GUID: domain1Guid},
   386  			}
   387  		})
   388  
   389  		JustBeforeEach(func() {
   390  			domain, warnings, executeErr = actor.GetDomainByName(domain1Name)
   391  		})
   392  
   393  		When("the API layer call is successful", func() {
   394  			expectedQuery := []ccv3.Query{{Key: ccv3.NameFilter, Values: []string{domain1Name}}}
   395  			BeforeEach(func() {
   396  				fakeCloudControllerClient.GetDomainsReturns(
   397  					ccv3Domains,
   398  					ccv3.Warnings{"some-domain-warning"},
   399  					nil,
   400  				)
   401  			})
   402  
   403  			It("returns back the domains and warnings", func() {
   404  				Expect(executeErr).ToNot(HaveOccurred())
   405  
   406  				Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1))
   407  				actualQuery := fakeCloudControllerClient.GetDomainsArgsForCall(0)
   408  				Expect(actualQuery).To(Equal(expectedQuery))
   409  
   410  				Expect(domain).To(Equal(
   411  					Domain{Name: domain1Name, GUID: domain1Guid},
   412  				))
   413  				Expect(warnings).To(ConsistOf("some-domain-warning"))
   414  
   415  			})
   416  		})
   417  
   418  		When("when the API layer call returns an error", func() {
   419  			BeforeEach(func() {
   420  				fakeCloudControllerClient.GetDomainsReturns(
   421  					[]ccv3.Domain{},
   422  					ccv3.Warnings{"some-domain-warning"},
   423  					errors.New("list-error"),
   424  				)
   425  			})
   426  
   427  			It("returns the error and prints warnings", func() {
   428  				Expect(executeErr).To(MatchError("list-error"))
   429  				Expect(warnings).To(ConsistOf("some-domain-warning"))
   430  				Expect(domain).To(Equal(Domain{}))
   431  
   432  				Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1))
   433  			})
   434  		})
   435  	})
   436  
   437  	Describe("share private domain to org", func() {
   438  		BeforeEach(func() {
   439  			fakeCloudControllerClient.GetOrganizationsReturns(
   440  				[]ccv3.Organization{
   441  					{GUID: "org-guid"},
   442  				},
   443  				ccv3.Warnings{"get-orgs-warning"},
   444  				nil,
   445  			)
   446  
   447  			fakeCloudControllerClient.GetDomainsReturns(
   448  				[]ccv3.Domain{
   449  					{Name: "private-domain.com", GUID: "private-domain-guid"},
   450  				},
   451  				ccv3.Warnings{"get-domains-warning"},
   452  				nil,
   453  			)
   454  
   455  			fakeCloudControllerClient.SharePrivateDomainToOrgsReturns(
   456  				ccv3.Warnings{"share-domain-warning"},
   457  				nil,
   458  			)
   459  		})
   460  
   461  		It("delegates to the cloud controller client", func() {
   462  			warnings, executeErr := actor.SharePrivateDomain("private-domain.com", "org-name")
   463  			Expect(executeErr).To(BeNil())
   464  			Expect(warnings).To(ConsistOf("share-domain-warning", "get-orgs-warning", "get-domains-warning"))
   465  
   466  			Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1))
   467  			actualQuery := fakeCloudControllerClient.GetDomainsArgsForCall(0)
   468  			Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{"private-domain.com"}}}))
   469  
   470  			Expect(fakeCloudControllerClient.SharePrivateDomainToOrgsCallCount()).To(Equal(1))
   471  			domainGuid, sharedOrgs := fakeCloudControllerClient.SharePrivateDomainToOrgsArgsForCall(0)
   472  			Expect(domainGuid).To(Equal("private-domain-guid"))
   473  			Expect(sharedOrgs).To(Equal(ccv3.SharedOrgs{GUIDs: []string{"org-guid"}}))
   474  		})
   475  	})
   476  
   477  	Describe("unshare private domain from org", func() {
   478  		var (
   479  			domainName string
   480  			orgName    string
   481  			executeErr error
   482  			warnings   Warnings
   483  		)
   484  
   485  		JustBeforeEach(func() {
   486  			warnings, executeErr = actor.UnsharePrivateDomain(domainName, orgName)
   487  		})
   488  
   489  		When("getting the org or domain errors", func() {
   490  			BeforeEach(func() {
   491  				fakeCloudControllerClient.GetOrganizationsReturns(
   492  					nil,
   493  					ccv3.Warnings{"get-orgs-warning"},
   494  					errors.New("get-orgs-error"),
   495  				)
   496  			})
   497  			It("returns an error and the warnings", func() {
   498  				Expect(fakeCloudControllerClient.UnsharePrivateDomainFromOrgCallCount()).To(Equal(0))
   499  
   500  				Expect(executeErr).To(MatchError(errors.New("get-orgs-error")))
   501  				Expect(warnings).To(ConsistOf("get-orgs-warning"))
   502  			})
   503  		})
   504  
   505  		When("getting the guids succeeds", func() {
   506  			BeforeEach(func() {
   507  				fakeCloudControllerClient.GetDomainsReturns(
   508  					[]ccv3.Domain{
   509  						{Name: domainName, GUID: "private-domain-guid"},
   510  					},
   511  					ccv3.Warnings{"get-domains-warning"},
   512  					nil,
   513  				)
   514  
   515  				fakeCloudControllerClient.GetOrganizationsReturns(
   516  					[]ccv3.Organization{
   517  						{Name: orgName, GUID: "org-guid"},
   518  					},
   519  					ccv3.Warnings{"get-orgs-warning"},
   520  					nil,
   521  				)
   522  			})
   523  
   524  			When("Unsharing the domain errors", func() {
   525  				BeforeEach(func() {
   526  					fakeCloudControllerClient.UnsharePrivateDomainFromOrgReturns(
   527  						ccv3.Warnings{"unshare-domain-warning"},
   528  						errors.New("unsahre-domain-error"),
   529  					)
   530  				})
   531  
   532  				It("returns any warnings and errors", func() {
   533  					Expect(fakeCloudControllerClient.UnsharePrivateDomainFromOrgCallCount()).To(Equal(1))
   534  					actualDomainGUID, actualOrgGUID := fakeCloudControllerClient.UnsharePrivateDomainFromOrgArgsForCall(0)
   535  					Expect(actualDomainGUID).To(Equal("private-domain-guid"))
   536  					Expect(actualOrgGUID).To(Equal("org-guid"))
   537  
   538  					Expect(executeErr).To(MatchError(errors.New("unsahre-domain-error")))
   539  					Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning", "unshare-domain-warning"))
   540  				})
   541  			})
   542  
   543  			When("everything succeeds", func() {
   544  				BeforeEach(func() {
   545  					fakeCloudControllerClient.UnsharePrivateDomainFromOrgReturns(
   546  						ccv3.Warnings{"unshare-domain-warning"},
   547  						nil,
   548  					)
   549  				})
   550  
   551  				It("returns any warnings and no error", func() {
   552  					Expect(fakeCloudControllerClient.UnsharePrivateDomainFromOrgCallCount()).To(Equal(1))
   553  					actualDomainGUID, actualOrgGUID := fakeCloudControllerClient.UnsharePrivateDomainFromOrgArgsForCall(0)
   554  					Expect(actualDomainGUID).To(Equal("private-domain-guid"))
   555  					Expect(actualOrgGUID).To(Equal("org-guid"))
   556  
   557  					Expect(executeErr).ToNot(HaveOccurred())
   558  					Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning", "unshare-domain-warning"))
   559  				})
   560  			})
   561  		})
   562  	})
   563  
   564  	Describe("GetDomainAndOrgByNames", func() {
   565  		var (
   566  			orgName    = "my-org"
   567  			domainName = "domain.com"
   568  
   569  			orgGUID    string
   570  			domainGUID string
   571  			warnings   Warnings
   572  			executeErr error
   573  		)
   574  		JustBeforeEach(func() {
   575  			orgGUID, domainGUID, warnings, executeErr = actor.GetDomainAndOrgGUIDsByName(domainName, orgName)
   576  		})
   577  
   578  		When("Getting the organization is not successful", func() {
   579  			BeforeEach(func() {
   580  				fakeCloudControllerClient.GetOrganizationsReturns(
   581  					nil,
   582  					ccv3.Warnings{"get-orgs-warning"},
   583  					errors.New("get-orgs-error"),
   584  				)
   585  			})
   586  
   587  			It("returns the error and doesnt get the domain", func() {
   588  				Expect(fakeCloudControllerClient.GetOrganizationsCallCount()).To(Equal(1))
   589  				actualQuery := fakeCloudControllerClient.GetOrganizationsArgsForCall(0)
   590  				Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{orgName}}}))
   591  
   592  				Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(0))
   593  
   594  				Expect(executeErr).To(MatchError(errors.New("get-orgs-error")))
   595  				Expect(warnings).To(ConsistOf("get-orgs-warning"))
   596  			})
   597  		})
   598  
   599  		When("getting the orgs succeeds", func() {
   600  			BeforeEach(func() {
   601  				fakeCloudControllerClient.GetOrganizationsReturns(
   602  					[]ccv3.Organization{
   603  						{Name: orgName, GUID: "org-guid"},
   604  					},
   605  					ccv3.Warnings{"get-orgs-warning"},
   606  					nil,
   607  				)
   608  			})
   609  			When("Getting the domain is not successful", func() {
   610  				BeforeEach(func() {
   611  					fakeCloudControllerClient.GetDomainsReturns(
   612  						nil,
   613  						ccv3.Warnings{"get-domains-warning"},
   614  						errors.New("get-domains-error"),
   615  					)
   616  				})
   617  
   618  				It("returns the error and doesnt get the domain", func() {
   619  					Expect(fakeCloudControllerClient.GetOrganizationsCallCount()).To(Equal(1))
   620  					actualQuery := fakeCloudControllerClient.GetOrganizationsArgsForCall(0)
   621  					Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{orgName}}}))
   622  
   623  					Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1))
   624  					actualQuery = fakeCloudControllerClient.GetDomainsArgsForCall(0)
   625  					Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{domainName}}}))
   626  
   627  					Expect(executeErr).To(MatchError(errors.New("get-domains-error")))
   628  					Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning"))
   629  				})
   630  			})
   631  
   632  			When("the api call are successful", func() {
   633  				BeforeEach(func() {
   634  					fakeCloudControllerClient.GetDomainsReturns(
   635  						[]ccv3.Domain{
   636  							{Name: domainName, GUID: "private-domain-guid"},
   637  						},
   638  						ccv3.Warnings{"get-domains-warning"},
   639  						nil,
   640  					)
   641  				})
   642  
   643  				It("returns the GUIDs", func() {
   644  					Expect(fakeCloudControllerClient.GetOrganizationsCallCount()).To(Equal(1))
   645  					actualQuery := fakeCloudControllerClient.GetOrganizationsArgsForCall(0)
   646  					Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{orgName}}}))
   647  
   648  					Expect(fakeCloudControllerClient.GetDomainsCallCount()).To(Equal(1))
   649  					actualQuery = fakeCloudControllerClient.GetDomainsArgsForCall(0)
   650  					Expect(actualQuery).To(Equal([]ccv3.Query{{Key: ccv3.NameFilter, Values: []string{domainName}}}))
   651  
   652  					Expect(executeErr).ToNot(HaveOccurred())
   653  					Expect(warnings).To(ConsistOf("get-orgs-warning", "get-domains-warning"))
   654  					Expect(orgGUID).To(Equal("org-guid"))
   655  					Expect(domainGUID).To(Equal("private-domain-guid"))
   656  				})
   657  			})
   658  		})
   659  	})
   660  })