@@ -35,6 +35,7 @@ var _ = Describe("Cluster", func() {
3535 mockClient * csapi.CloudStackClient
3636 zs * csapi.MockZoneServiceIface
3737 ds * csapi.MockDomainServiceIface
38+ as * csapi.MockAccountServiceIface
3839 ns * csapi.MockNetworkServiceIface
3940 )
4041
@@ -43,10 +44,12 @@ var _ = Describe("Cluster", func() {
4344 mockClient = csapi .NewMockClient (mockCtrl )
4445 zs = mockClient .Zone .(* csapi.MockZoneServiceIface )
4546 ds = mockClient .Domain .(* csapi.MockDomainServiceIface )
47+ as = mockClient .Account .(* csapi.MockAccountServiceIface )
4648 ns = mockClient .Network .(* csapi.MockNetworkServiceIface )
4749 client = cloud .NewClientFromCSAPIClient (mockClient )
4850 dummies .SetDummyVars ()
4951 dummies .SetDummyDomainAndAccount ()
52+ dummies .SetDummyCSApiResponse ()
5053 })
5154
5255 AfterEach (func () {
@@ -72,10 +75,13 @@ var _ = Describe("Cluster", func() {
7275 ContainSubstring ("could not get Zone by ID " + dummies .Zone1 .ID + ": Not found" ))))
7376 })
7477
75- It ("translates Domain to DomainID when Domain is set " , func () {
78+ It ("resolves domain and account when both are specified " , func () {
7679 zs .EXPECT ().GetZoneID (dummies .Zone1 .Name ).Return (dummies .Zone1 .ID , 1 , nil )
7780 zs .EXPECT ().GetZoneByID (dummies .Zone1 .ID ).Return (dummies .CAPCZoneToCSAPIZone (& dummies .Zone1 ), 1 , nil )
78- ds .EXPECT ().GetDomainID (dummies .CSCluster .Spec .Domain ).Return (dummies .DomainID , 1 , nil )
81+ ds .EXPECT ().NewListDomainsParams ().Return (dummies .ListDomainsParams )
82+ ds .EXPECT ().ListDomains (dummies .ListDomainsParams ).Return (dummies .ListDomainsResp , nil )
83+ as .EXPECT ().NewListAccountsParams ().Return (dummies .ListAccountsParams )
84+ as .EXPECT ().ListAccounts (dummies .ListAccountsParams ).Return (dummies .ListAccountsResp , nil )
7985 ns .EXPECT ().GetNetworkByName (dummies .Net1 .Name ).Return (dummies .CAPCNetToCSAPINet (& dummies .Net1 ), 1 , nil )
8086
8187 // Limit test to single zone.
@@ -85,5 +91,41 @@ var _ = Describe("Cluster", func() {
8591 Ω (client .GetOrCreateCluster (dummies .CSCluster )).Should (Succeed ())
8692 Ω (dummies .CSCluster .Status .DomainID ).Should (Equal (dummies .DomainID ))
8793 })
94+
95+ It ("resolves domain and account when none are specified" , func () {
96+ zs .EXPECT ().GetZoneID (dummies .Zone1 .Name ).Return (dummies .Zone1 .ID , 1 , nil )
97+ zs .EXPECT ().GetZoneByID (dummies .Zone1 .ID ).Return (dummies .CAPCZoneToCSAPIZone (& dummies .Zone1 ), 1 , nil )
98+ ns .EXPECT ().GetNetworkByName (dummies .Net1 .Name ).Return (dummies .CAPCNetToCSAPINet (& dummies .Net1 ), 1 , nil )
99+
100+ // Limit test to single zone.
101+ dummies .CSCluster .Spec .Zones = []capcv1.Zone {dummies .Zone1 }
102+ dummies .CSCluster .Status .Zones = capcv1.ZoneStatusMap {}
103+
104+ dummies .CSCluster .Spec .Domain = ""
105+ dummies .CSCluster .Spec .Account = ""
106+
107+ Ω (client .GetOrCreateCluster (dummies .CSCluster )).Should (Succeed ())
108+ Ω (dummies .CSCluster .Status .DomainID ).Should (Equal ("" ))
109+ })
110+
111+ It ("fails when only one of domain or account is specified" , func () {
112+ zs .EXPECT ().GetZoneID (dummies .Zone1 .Name ).Return (dummies .Zone1 .ID , 1 , nil ).AnyTimes ()
113+ zs .EXPECT ().GetZoneByID (dummies .Zone1 .ID ).Return (dummies .CAPCZoneToCSAPIZone (& dummies .Zone1 ), 1 , nil ).AnyTimes ()
114+ ns .EXPECT ().GetNetworkByName (dummies .Net1 .Name ).Return (dummies .CAPCNetToCSAPINet (& dummies .Net1 ), 1 , nil ).AnyTimes ()
115+
116+ // Limit test to single zone.
117+ dummies .CSCluster .Spec .Zones = []capcv1.Zone {dummies .Zone1 }
118+ dummies .CSCluster .Status .Zones = capcv1.ZoneStatusMap {}
119+
120+ domainBackup := dummies .CSCluster .Spec .Domain
121+ dummies .CSCluster .Spec .Domain = ""
122+
123+ Ω (client .GetOrCreateCluster (dummies .CSCluster )).ShouldNot (Succeed ())
124+
125+ dummies .CSCluster .Spec .Domain = domainBackup
126+ dummies .CSCluster .Spec .Account = ""
127+
128+ Ω (client .GetOrCreateCluster (dummies .CSCluster )).ShouldNot (Succeed ())
129+ })
88130 })
89131})
0 commit comments