@@ -234,3 +234,60 @@ func TestGetMultiWriterFromCapabilities(t *testing.T) {
234234 }
235235 }
236236}
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