@@ -212,7 +212,7 @@ func TestCreateKeyRingWaitHandler(t *testing.T) {
212212 }
213213
214214 if diff := cmp .Diff (tt .want , got ); diff != "" {
215- t .Errorf ("differing key %s" , diff )
215+ t .Errorf ("differing key ring %s" , diff )
216216 }
217217 })
218218 }
@@ -435,6 +435,30 @@ func TestEnableKeyVersionWaitHandler(t *testing.T) {
435435 fixtureVersion (1 , false , "bogus" ),
436436 false ,
437437 },
438+ {
439+ "version not found (404)" ,
440+ []versionResponse {
441+ {nil , oapierror .NewError (http .StatusNotFound , "not found" )},
442+ },
443+ nil ,
444+ true ,
445+ },
446+ {
447+ "version gone (410)" ,
448+ []versionResponse {
449+ {nil , oapierror .NewError (http .StatusGone , "gone" )},
450+ },
451+ nil ,
452+ true ,
453+ },
454+ {
455+ "error fetching version" ,
456+ []versionResponse {
457+ {nil , oapierror .NewError (http .StatusInternalServerError , "internal error" )},
458+ },
459+ nil ,
460+ true ,
461+ },
438462 // no special update tests needed as the states are the same
439463 }
440464 for _ , tt := range tests {
@@ -454,7 +478,7 @@ func TestEnableKeyVersionWaitHandler(t *testing.T) {
454478 }
455479
456480 if diff := cmp .Diff (tt .want , got ); diff != "" {
457- t .Errorf ("differing key %s" , diff )
481+ t .Errorf ("differing version %s" , diff )
458482 }
459483 })
460484 }
@@ -464,61 +488,84 @@ func TestDisableKeyVersionWaitHandler(t *testing.T) {
464488 tests := []struct {
465489 name string
466490 responses []versionResponse
491+ want * kms.Version
467492 wantErr bool
468493 }{
469494 {
470- "Delete with '404' succeeded immediately" ,
495+ "disable succeeded immediately" ,
471496 []versionResponse {
472- {nil , oapierror . NewError ( http . StatusNotFound , "not found" ) },
497+ {fixtureVersion ( 1 , true , kms . VERSIONSTATE_DISABLED ), nil },
473498 },
499+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
474500 false ,
475501 },
476502 {
477- "Delete with '404' delayed" ,
503+ "disable succeeded delayed" ,
504+ []versionResponse {
505+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
506+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
507+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
508+ {fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ), nil },
509+ },
510+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
511+ false ,
512+ },
513+ {
514+ "disable succeeded from creating state" ,
478515 []versionResponse {
479516 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
480517 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
481- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
482- {nil , oapierror .NewError (http .StatusNotFound , "not found" )},
518+ {fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ), nil },
483519 },
520+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
484521 false ,
485522 },
486523 {
487- "Delete with 'gone' succeeded immediately " ,
524+ "version already destroyed " ,
488525 []versionResponse {
489- {nil , oapierror . NewError ( http . StatusGone , "gone" ) },
526+ {fixtureVersion ( 1 , false , kms . VERSIONSTATE_DESTROYED ), nil },
490527 },
491- false ,
528+ fixtureVersion (1 , false , kms .VERSIONSTATE_DESTROYED ),
529+ true ,
492530 },
493531 {
494- "Delete with 'gone' delayed " ,
532+ "version key material invalid " ,
495533 []versionResponse {
496- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
497- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
498- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
499- {nil , oapierror .NewError (http .StatusGone , "not found" )},
534+ {fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_INVALID ), nil },
500535 },
501- false ,
536+ fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_INVALID ),
537+ true ,
502538 },
503539 {
504- "Delete with error delayed " ,
540+ "timeout waiting for disabled state " ,
505541 []versionResponse {
506- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
507- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
508-
509- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
510- {fixtureVersion (1 , false , kms .VERSIONSTATE_DESTROYED ), oapierror .NewError (http .StatusInternalServerError , "kapow" )},
542+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
543+ },
544+ nil ,
545+ true ,
546+ },
547+ {
548+ "version not found (404)" ,
549+ []versionResponse {
550+ {nil , oapierror .NewError (http .StatusNotFound , "not found" )},
511551 },
552+ nil ,
512553 true ,
513554 },
514555 {
515- "Cannot delete " ,
556+ "version gone (410) " ,
516557 []versionResponse {
517- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
518- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
519- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
520- {fixtureVersion (1 , false , kms .VERSIONSTATE_DESTROYED ), oapierror .NewError (http .StatusOK , "ok" )},
558+ {nil , oapierror .NewError (http .StatusGone , "gone" )},
521559 },
560+ nil ,
561+ true ,
562+ },
563+ {
564+ "error fetching version" ,
565+ []versionResponse {
566+ {nil , oapierror .NewError (http .StatusInternalServerError , "internal error" )},
567+ },
568+ nil ,
522569 true ,
523570 },
524571 }
@@ -529,18 +576,16 @@ func TestDisableKeyVersionWaitHandler(t *testing.T) {
529576 versionResponses : tt .responses ,
530577 }
531578 handler := DisableKeyVersionWaitHandler (ctx , client , testProject , testRegion , testKeyRingId , testKeyId , 1 )
532- _ , err := handler .SetTimeout (1 * time .Second ).
579+ got , err := handler .SetTimeout (1 * time .Second ).
533580 SetThrottle (250 * time .Millisecond ).
534581 WaitWithContext (ctx )
535582
536- if tt . wantErr != (err != nil ) {
537- t .Fatalf ("wrong error result . want err: %v got %v" , tt .wantErr , err )
583+ if (err != nil ) != tt . wantErr {
584+ t .Fatalf ("unexpected error response . want %v but got %v " , tt .wantErr , err )
538585 }
539- if tt .wantErr {
540- var apiErr * oapierror.GenericOpenAPIError
541- if ! errors .As (err , & apiErr ) {
542- t .Fatalf ("expected openapi error, got %v" , err )
543- }
586+
587+ if diff := cmp .Diff (tt .want , got ); diff != "" {
588+ t .Errorf ("differing version %s" , diff )
544589 }
545590 })
546591 }
@@ -618,7 +663,7 @@ func TestCreateWrappingWaitHandler(t *testing.T) {
618663 }
619664
620665 if diff := cmp .Diff (tt .want , got ); diff != "" {
621- t .Errorf ("differing key %s" , diff )
666+ t .Errorf ("differing wrapping key %s" , diff )
622667 }
623668 })
624669 }
0 commit comments