@@ -163,6 +163,282 @@ func TestCreateOrUpdateClusterWaitHandler(t *testing.T) {
163163 }
164164}
165165
166+ func TestTriggerClusterHibernationWaitHandler (t * testing.T ) {
167+ tests := []struct {
168+ description string
169+ getFails bool
170+ resourceState ske.ClusterStatusState
171+ wantErr bool
172+ wantResp bool
173+ }{
174+ {
175+ description : "hibernation ongoing (timeout)" ,
176+ getFails : false ,
177+ resourceState : ske .CLUSTERSTATUSSTATE_HIBERNATING ,
178+ wantErr : true ,
179+ wantResp : false ,
180+ },
181+ {
182+ description : "hibernation succeeded" ,
183+ getFails : false ,
184+ resourceState : ske .CLUSTERSTATUSSTATE_HIBERNATED ,
185+ wantErr : false ,
186+ wantResp : true ,
187+ },
188+ {
189+ description : "unexpected status" ,
190+ getFails : false ,
191+ resourceState : ske .CLUSTERSTATUSSTATE_HEALTHY ,
192+ wantErr : false ,
193+ wantResp : true ,
194+ },
195+ {
196+ description : "get_fails" ,
197+ getFails : true ,
198+ wantErr : true ,
199+ wantResp : false ,
200+ },
201+ }
202+ for _ , tt := range tests {
203+ t .Run (tt .description , func (t * testing.T ) {
204+ name := "cluster"
205+
206+ apiClient := & apiClientClusterMocked {
207+ getFails : tt .getFails ,
208+ name : name ,
209+ resourceState : tt .resourceState ,
210+ }
211+ var wantRes * ske.Cluster
212+ if tt .wantResp {
213+ wantRes = & ske.Cluster {
214+ Name : & name ,
215+ Status : & ske.ClusterStatus {
216+ Aggregated : utils .Ptr (tt .resourceState ),
217+ },
218+ }
219+ }
220+
221+ handler := TriggerClusterHibernationWaitHandler (context .Background (), apiClient , "" , testRegion , name )
222+
223+ gotRes , err := handler .SetTimeout (10 * time .Millisecond ).WaitWithContext (context .Background ())
224+
225+ if (err != nil ) != tt .wantErr {
226+ t .Fatalf ("handler error = %v, wantErr %v" , err , tt .wantErr )
227+ }
228+ if ! cmp .Equal (gotRes , wantRes ) {
229+ t .Fatalf ("handler gotRes = %+v, want %+v" , gotRes , wantRes )
230+ }
231+ })
232+ }
233+ }
234+
235+ func TestTriggerClusterMaintenanceWaitHandler (t * testing.T ) {
236+ tests := []struct {
237+ description string
238+ getFails bool
239+ resourceState ske.ClusterStatusState
240+ wantErr bool
241+ wantResp bool
242+ }{
243+ {
244+ description : "maintenance ongoing (timeout)" ,
245+ getFails : false ,
246+ resourceState : ske .CLUSTERSTATUSSTATE_RECONCILING ,
247+ wantErr : true ,
248+ wantResp : false ,
249+ },
250+ {
251+ description : "maintenance succeeded" ,
252+ getFails : false ,
253+ resourceState : ske .CLUSTERSTATUSSTATE_HEALTHY ,
254+ wantErr : false ,
255+ wantResp : true ,
256+ },
257+ {
258+ description : "unexpected status" ,
259+ getFails : false ,
260+ resourceState : ske .CLUSTERSTATUSSTATE_HIBERNATED ,
261+ wantErr : false ,
262+ wantResp : true ,
263+ },
264+ {
265+ description : "get_fails" ,
266+ getFails : true ,
267+ wantErr : true ,
268+ wantResp : false ,
269+ },
270+ }
271+ for _ , tt := range tests {
272+ t .Run (tt .description , func (t * testing.T ) {
273+ name := "cluster"
274+
275+ apiClient := & apiClientClusterMocked {
276+ getFails : tt .getFails ,
277+ name : name ,
278+ resourceState : tt .resourceState ,
279+ }
280+ var wantRes * ske.Cluster
281+ if tt .wantResp {
282+ wantRes = & ske.Cluster {
283+ Name : & name ,
284+ Status : & ske.ClusterStatus {
285+ Aggregated : utils .Ptr (tt .resourceState ),
286+ },
287+ }
288+ }
289+
290+ handler := TriggerClusterMaintenanceWaitHandler (context .Background (), apiClient , "" , testRegion , name )
291+
292+ gotRes , err := handler .SetTimeout (10 * time .Millisecond ).WaitWithContext (context .Background ())
293+
294+ if (err != nil ) != tt .wantErr {
295+ t .Fatalf ("handler error = %v, wantErr %v" , err , tt .wantErr )
296+ }
297+ if ! cmp .Equal (gotRes , wantRes ) {
298+ t .Fatalf ("handler gotRes = %+v, want %+v" , gotRes , wantRes )
299+ }
300+ })
301+ }
302+ }
303+
304+ func TestTriggerClusterWakeupWaitHandler (t * testing.T ) {
305+ tests := []struct {
306+ description string
307+ getFails bool
308+ resourceState ske.ClusterStatusState
309+ wantErr bool
310+ wantResp bool
311+ }{
312+ {
313+ description : "wakeup ongoing (timeout)" ,
314+ getFails : false ,
315+ resourceState : ske .CLUSTERSTATUSSTATE_WAKINGUP ,
316+ wantErr : true ,
317+ wantResp : false ,
318+ },
319+ {
320+ description : "wakeup succeeded" ,
321+ getFails : false ,
322+ resourceState : ske .CLUSTERSTATUSSTATE_HEALTHY ,
323+ wantErr : false ,
324+ wantResp : true ,
325+ },
326+ {
327+ description : "unexpected status" ,
328+ getFails : false ,
329+ resourceState : ske .CLUSTERSTATUSSTATE_DELETING ,
330+ wantErr : false ,
331+ wantResp : true ,
332+ },
333+ {
334+ description : "get_fails" ,
335+ getFails : true ,
336+ wantErr : true ,
337+ wantResp : false ,
338+ },
339+ }
340+ for _ , tt := range tests {
341+ t .Run (tt .description , func (t * testing.T ) {
342+ name := "cluster"
343+
344+ apiClient := & apiClientClusterMocked {
345+ getFails : tt .getFails ,
346+ name : name ,
347+ resourceState : tt .resourceState ,
348+ }
349+ var wantRes * ske.Cluster
350+ if tt .wantResp {
351+ wantRes = & ske.Cluster {
352+ Name : & name ,
353+ Status : & ske.ClusterStatus {
354+ Aggregated : utils .Ptr (tt .resourceState ),
355+ },
356+ }
357+ }
358+
359+ handler := TriggerClusterWakeupWaitHandler (context .Background (), apiClient , "" , testRegion , name )
360+
361+ gotRes , err := handler .SetTimeout (10 * time .Millisecond ).WaitWithContext (context .Background ())
362+
363+ if (err != nil ) != tt .wantErr {
364+ t .Fatalf ("handler error = %v, wantErr %v" , err , tt .wantErr )
365+ }
366+ if ! cmp .Equal (gotRes , wantRes ) {
367+ t .Fatalf ("handler gotRes = %+v, want %+v" , gotRes , wantRes )
368+ }
369+ })
370+ }
371+ }
372+
373+ func TestTriggerClusterReconciliationWaitHandler (t * testing.T ) {
374+ tests := []struct {
375+ description string
376+ getFails bool
377+ resourceState ske.ClusterStatusState
378+ wantErr bool
379+ wantResp bool
380+ }{
381+ {
382+ description : "reconciliation ongoing (timeout)" ,
383+ getFails : false ,
384+ resourceState : ske .CLUSTERSTATUSSTATE_RECONCILING ,
385+ wantErr : true ,
386+ wantResp : false ,
387+ },
388+ {
389+ description : "reconciliation succeeded" ,
390+ getFails : false ,
391+ resourceState : ske .CLUSTERSTATUSSTATE_HEALTHY ,
392+ wantErr : false ,
393+ wantResp : true ,
394+ },
395+ {
396+ description : "unexpected status" ,
397+ getFails : false ,
398+ resourceState : ske .CLUSTERSTATUSSTATE_CREATING ,
399+ wantErr : false ,
400+ wantResp : true ,
401+ },
402+ {
403+ description : "get_fails" ,
404+ getFails : true ,
405+ wantErr : true ,
406+ wantResp : false ,
407+ },
408+ }
409+ for _ , tt := range tests {
410+ t .Run (tt .description , func (t * testing.T ) {
411+ name := "cluster"
412+
413+ apiClient := & apiClientClusterMocked {
414+ getFails : tt .getFails ,
415+ name : name ,
416+ resourceState : tt .resourceState ,
417+ }
418+ var wantRes * ske.Cluster
419+ if tt .wantResp {
420+ wantRes = & ske.Cluster {
421+ Name : & name ,
422+ Status : & ske.ClusterStatus {
423+ Aggregated : utils .Ptr (tt .resourceState ),
424+ },
425+ }
426+ }
427+
428+ handler := TriggerClusterReconciliationWaitHandler (context .Background (), apiClient , "" , testRegion , name )
429+
430+ gotRes , err := handler .SetTimeout (10 * time .Millisecond ).WaitWithContext (context .Background ())
431+
432+ if (err != nil ) != tt .wantErr {
433+ t .Fatalf ("handler error = %v, wantErr %v" , err , tt .wantErr )
434+ }
435+ if ! cmp .Equal (gotRes , wantRes ) {
436+ t .Fatalf ("handler gotRes = %+v, want %+v" , gotRes , wantRes )
437+ }
438+ })
439+ }
440+ }
441+
166442func TestRotateCredentialsWaitHandler (t * testing.T ) {
167443 tests := []struct {
168444 desc string
0 commit comments