@@ -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 }
@@ -409,15 +409,15 @@ func TestEnableKeyVersionWaitHandler(t *testing.T) {
409409 false ,
410410 },
411411 {
412- "create failed delayed " ,
412+ "create failed with invalid key material " ,
413413 []versionResponse {
414414 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
415415 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
416416 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
417417 {fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_INVALID ), nil },
418418 },
419419 fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_INVALID ),
420- false ,
420+ true ,
421421 },
422422 {
423423 "timeout" ,
@@ -433,7 +433,55 @@ func TestEnableKeyVersionWaitHandler(t *testing.T) {
433433 {fixtureVersion (1 , false , "bogus" ), nil },
434434 },
435435 fixtureVersion (1 , false , "bogus" ),
436- false ,
436+ true ,
437+ },
438+ {
439+ "version destroyed" ,
440+ []versionResponse {
441+ {fixtureVersion (1 , false , kms .VERSIONSTATE_DESTROYED ), nil },
442+ },
443+ fixtureVersion (1 , false , kms .VERSIONSTATE_DESTROYED ),
444+ true ,
445+ },
446+ {
447+ "version disabled - unexpected state" ,
448+ []versionResponse {
449+ {fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ), nil },
450+ },
451+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
452+ true ,
453+ },
454+ {
455+ "version key material unavailable - unexpected state" ,
456+ []versionResponse {
457+ {fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_UNAVAILABLE ), nil },
458+ },
459+ fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_UNAVAILABLE ),
460+ true ,
461+ },
462+ {
463+ "version not found (404)" ,
464+ []versionResponse {
465+ {nil , oapierror .NewError (http .StatusNotFound , "not found" )},
466+ },
467+ nil ,
468+ true ,
469+ },
470+ {
471+ "version gone (410)" ,
472+ []versionResponse {
473+ {nil , oapierror .NewError (http .StatusGone , "gone" )},
474+ },
475+ nil ,
476+ true ,
477+ },
478+ {
479+ "error fetching version" ,
480+ []versionResponse {
481+ {nil , oapierror .NewError (http .StatusInternalServerError , "internal error" )},
482+ },
483+ nil ,
484+ true ,
437485 },
438486 // no special update tests needed as the states are the same
439487 }
@@ -454,7 +502,7 @@ func TestEnableKeyVersionWaitHandler(t *testing.T) {
454502 }
455503
456504 if diff := cmp .Diff (tt .want , got ); diff != "" {
457- t .Errorf ("differing key %s" , diff )
505+ t .Errorf ("differing version %s" , diff )
458506 }
459507 })
460508 }
@@ -464,61 +512,84 @@ func TestDisableKeyVersionWaitHandler(t *testing.T) {
464512 tests := []struct {
465513 name string
466514 responses []versionResponse
515+ want * kms.Version
467516 wantErr bool
468517 }{
469518 {
470- "Delete with '404' succeeded immediately" ,
519+ "disable succeeded immediately" ,
471520 []versionResponse {
472- {nil , oapierror . NewError ( http . StatusNotFound , "not found" ) },
521+ {fixtureVersion ( 1 , true , kms . VERSIONSTATE_DISABLED ), nil },
473522 },
523+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
474524 false ,
475525 },
476526 {
477- "Delete with '404' delayed" ,
527+ "disable succeeded delayed" ,
528+ []versionResponse {
529+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
530+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
531+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
532+ {fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ), nil },
533+ },
534+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
535+ false ,
536+ },
537+ {
538+ "disable succeeded from creating state" ,
478539 []versionResponse {
479540 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
480541 {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
481- {fixtureVersion (1 , false , kms .VERSIONSTATE_CREATING ), nil },
482- {nil , oapierror .NewError (http .StatusNotFound , "not found" )},
542+ {fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ), nil },
483543 },
544+ fixtureVersion (1 , true , kms .VERSIONSTATE_DISABLED ),
484545 false ,
485546 },
486547 {
487- "Delete with 'gone' succeeded immediately " ,
548+ "version already destroyed " ,
488549 []versionResponse {
489- {nil , oapierror . NewError ( http . StatusGone , "gone" ) },
550+ {fixtureVersion ( 1 , false , kms . VERSIONSTATE_DESTROYED ), nil },
490551 },
491- false ,
552+ fixtureVersion (1 , false , kms .VERSIONSTATE_DESTROYED ),
553+ true ,
492554 },
493555 {
494- "Delete with 'gone' delayed " ,
556+ "version key material invalid " ,
495557 []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" )},
558+ {fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_INVALID ), nil },
500559 },
501- false ,
560+ fixtureVersion (1 , false , kms .VERSIONSTATE_KEY_MATERIAL_INVALID ),
561+ true ,
502562 },
503563 {
504- "Delete with error delayed " ,
564+ "timeout waiting for disabled state " ,
505565 []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" )},
566+ {fixtureVersion (1 , false , kms .VERSIONSTATE_ACTIVE ), nil },
511567 },
568+ nil ,
512569 true ,
513570 },
514571 {
515- "Cannot delete " ,
572+ "version not found (404) " ,
516573 []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" )},
574+ {nil , oapierror .NewError (http .StatusNotFound , "not found" )},
575+ },
576+ nil ,
577+ true ,
578+ },
579+ {
580+ "version gone (410)" ,
581+ []versionResponse {
582+ {nil , oapierror .NewError (http .StatusGone , "gone" )},
583+ },
584+ nil ,
585+ true ,
586+ },
587+ {
588+ "error fetching version" ,
589+ []versionResponse {
590+ {nil , oapierror .NewError (http .StatusInternalServerError , "internal error" )},
521591 },
592+ nil ,
522593 true ,
523594 },
524595 }
@@ -529,18 +600,16 @@ func TestDisableKeyVersionWaitHandler(t *testing.T) {
529600 versionResponses : tt .responses ,
530601 }
531602 handler := DisableKeyVersionWaitHandler (ctx , client , testProject , testRegion , testKeyRingId , testKeyId , 1 )
532- _ , err := handler .SetTimeout (1 * time .Second ).
603+ got , err := handler .SetTimeout (1 * time .Second ).
533604 SetThrottle (250 * time .Millisecond ).
534605 WaitWithContext (ctx )
535606
536- if tt . wantErr != (err != nil ) {
537- t .Fatalf ("wrong error result . want err: %v got %v" , tt .wantErr , err )
607+ if (err != nil ) != tt . wantErr {
608+ t .Fatalf ("unexpected error response . want %v but got %v " , tt .wantErr , err )
538609 }
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- }
610+
611+ if diff := cmp .Diff (tt .want , got ); diff != "" {
612+ t .Errorf ("differing version %s" , diff )
544613 }
545614 })
546615 }
@@ -618,7 +687,7 @@ func TestCreateWrappingWaitHandler(t *testing.T) {
618687 }
619688
620689 if diff := cmp .Diff (tt .want , got ); diff != "" {
621- t .Errorf ("differing key %s" , diff )
690+ t .Errorf ("differing wrapping key %s" , diff )
622691 }
623692 })
624693 }
0 commit comments