@@ -234,3 +234,60 @@ func TestGetMultiWriterFromCapabilities(t *testing.T) {
234
234
}
235
235
}
236
236
}
237
+
238
+ func TestGetReadOnlyFromCapabilities (t * testing.T ) {
239
+ testCases := []struct {
240
+ name string
241
+ vc []* csi.VolumeCapability
242
+ expVal bool
243
+ expErr bool
244
+ }{
245
+ {
246
+ name : "false with empty capabilities" ,
247
+ vc : []* csi.VolumeCapability {},
248
+ expVal : false ,
249
+ },
250
+ {
251
+ name : "fail with capabilities no access mode" ,
252
+ vc : []* csi.VolumeCapability {
253
+ {
254
+ AccessType : & csi.VolumeCapability_Mount {
255
+ Mount : & csi.VolumeCapability_MountVolume {},
256
+ },
257
+ },
258
+ },
259
+ expErr : true ,
260
+ },
261
+ {
262
+ name : "false with SINGLE_NODE_WRITER capabilities" ,
263
+ vc : createVolumeCapabilities (csi .VolumeCapability_AccessMode_SINGLE_NODE_WRITER ),
264
+ expVal : false ,
265
+ },
266
+ {
267
+ name : "true with MULTI_NODE_READER_ONLY capabilities" ,
268
+ vc : createBlockVolumeCapabilities (csi .VolumeCapability_AccessMode_MULTI_NODE_READER_ONLY ),
269
+ expVal : true ,
270
+ },
271
+ {
272
+ name : "true with SINGLE_NODE_READER_ONLY capabilities" ,
273
+ vc : createVolumeCapabilities (csi .VolumeCapability_AccessMode_SINGLE_NODE_READER_ONLY ),
274
+ expVal : true ,
275
+ },
276
+ }
277
+
278
+ for _ , tc := range testCases {
279
+ t .Logf ("Running test: %v" , tc .name )
280
+ val , err := getReadOnlyFromCapabilities (tc .vc )
281
+ if tc .expErr && err == nil {
282
+ t .Fatalf ("Expected error but didn't get any" )
283
+ }
284
+ if ! tc .expErr && err != nil {
285
+ t .Fatalf ("Did not expect error but got: %v" , err )
286
+ }
287
+ if err != nil {
288
+ if tc .expVal != val {
289
+ t .Fatalf ("Expected '%t' but got '%t'" , tc .expVal , val )
290
+ }
291
+ }
292
+ }
293
+ }
0 commit comments