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