@@ -18,6 +18,7 @@ type apiClientClusterMocked struct {
1818 name string
1919 resourceState ske.ClusterStatusState
2020 invalidArgusInstance bool
21+ errorList * []ske.ClusterError
2122}
2223
2324const testRegion = "eu01"
@@ -45,7 +46,17 @@ func (a *apiClientClusterMocked) GetClusterExecute(_ context.Context, _, _, _ st
4546 return & ske.Cluster {
4647 Name : utils .Ptr ("cluster" ),
4748 Status : & ske.ClusterStatus {
48- Aggregated : & rs ,
49+ Aggregated : utils .Ptr (rs ),
50+ Error : func () * ske.RuntimeError {
51+ if a .invalidArgusInstance {
52+ return & ske.RuntimeError {
53+ Code : utils .Ptr (ske .RUNTIMEERRORCODE_OBSERVABILITY_INSTANCE_NOT_FOUND ),
54+ Message : utils .Ptr ("invalid argus instance" ),
55+ }
56+ }
57+ return nil
58+ }(),
59+ Errors : a .errorList ,
4960 },
5061 }, nil
5162}
@@ -77,6 +88,7 @@ func TestCreateOrUpdateClusterWaitHandler(t *testing.T) {
7788 invalidArgusInstance bool
7889 wantErr bool
7990 wantResp bool
91+ errorList * []ske.ClusterError
8092 }{
8193 {
8294 desc : "create_succeeded" ,
@@ -120,6 +132,40 @@ func TestCreateOrUpdateClusterWaitHandler(t *testing.T) {
120132 wantErr : true ,
121133 wantResp : false ,
122134 },
135+ {
136+ desc : "status_errors_present_state_unhealthy" ,
137+ getFails : false ,
138+ resourceState : ske .CLUSTERSTATUSSTATE_UNHEALTHY ,
139+ errorList : & []ske.ClusterError {
140+ {
141+ Code : utils .Ptr ("ERR_CODE" ),
142+ Message : utils .Ptr ("Error 1" ),
143+ },
144+ {
145+ Code : utils .Ptr ("ERR_OTHER" ),
146+ Message : utils .Ptr ("Error 2" ),
147+ },
148+ },
149+ wantErr : false ,
150+ wantResp : true ,
151+ },
152+ {
153+ desc : "status_errors_present_state_unspecified" ,
154+ getFails : false ,
155+ resourceState : ske .CLUSTERSTATUSSTATE_UNSPECIFIED ,
156+ errorList : & []ske.ClusterError {
157+ {
158+ Code : utils .Ptr ("ERR_CODE" ),
159+ Message : utils .Ptr ("Error 1" ),
160+ },
161+ {
162+ Code : utils .Ptr ("ERR_OTHER" ),
163+ Message : utils .Ptr ("Error 2" ),
164+ },
165+ },
166+ wantErr : false ,
167+ wantResp : true ,
168+ },
123169 }
124170 for _ , tt := range tests {
125171 t .Run (tt .desc , func (t * testing.T ) {
@@ -130,6 +176,7 @@ func TestCreateOrUpdateClusterWaitHandler(t *testing.T) {
130176 name : name ,
131177 resourceState : tt .resourceState ,
132178 invalidArgusInstance : tt .invalidArgusInstance ,
179+ errorList : tt .errorList ,
133180 }
134181 var wantRes * ske.Cluster
135182 rs := ske .ClusterStatusState (tt .resourceState )
@@ -147,6 +194,10 @@ func TestCreateOrUpdateClusterWaitHandler(t *testing.T) {
147194 Message : utils .Ptr ("invalid argus instance" ),
148195 }
149196 }
197+
198+ if tt .errorList != nil && len (* tt .errorList ) > 0 {
199+ wantRes .Status .Errors = tt .errorList
200+ }
150201 }
151202
152203 handler := CreateOrUpdateClusterWaitHandler (context .Background (), apiClient , "" , testRegion , name )
0 commit comments