@@ -1015,6 +1015,11 @@ func TestCodeForError(t *testing.T) {
1015
1015
inputErr : nil ,
1016
1016
expCode : codes .Internal ,
1017
1017
},
1018
+ {
1019
+ name : "user multiattach error" ,
1020
+ inputErr : fmt .Errorf ("The disk resource 'projects/foo/disk/bar' is already being used by 'projects/foo/instances/1'" ),
1021
+ expCode : codes .InvalidArgument ,
1022
+ },
1018
1023
}
1019
1024
1020
1025
for _ , tc := range testCases {
@@ -1076,6 +1081,34 @@ func TestIsContextError(t *testing.T) {
1076
1081
}
1077
1082
}
1078
1083
1084
+ func TestIsUserMultiAttachError (t * testing.T ) {
1085
+ cases := []struct {
1086
+ errorString string
1087
+ expectedCode codes.Code
1088
+ expectCode bool
1089
+ }{
1090
+ {
1091
+ errorString : "The disk resource 'projects/foo/disk/bar' is already being used by 'projects/foo/instance/biz'" ,
1092
+ expectedCode : codes .InvalidArgument ,
1093
+ expectCode : true ,
1094
+ },
1095
+ {
1096
+ errorString : "The disk resource is ok!" ,
1097
+ expectCode : false ,
1098
+ },
1099
+ }
1100
+ for _ , test := range cases {
1101
+ code , err := isUserMultiAttachError (fmt .Errorf (test .errorString ))
1102
+ if test .expectCode {
1103
+ if err != nil || code != test .expectedCode {
1104
+ t .Errorf ("Failed with non-nil error %v or bad code %v: %s" , err , code , test .errorString )
1105
+ }
1106
+ } else if err == nil {
1107
+ t .Errorf ("Expected error for test but got none: %s" , test .errorString )
1108
+ }
1109
+ }
1110
+ }
1111
+
1079
1112
func TestIsValidDiskEncryptionKmsKey (t * testing.T ) {
1080
1113
cases := []struct {
1081
1114
diskEncryptionKmsKey string
0 commit comments