@@ -260,3 +260,69 @@ func TestSupportsPluginControllerService(t *testing.T) {
260260 }
261261 }
262262}
263+
264+ func TestGetDriverName (t * testing.T ) {
265+ tests := []struct {
266+ name string
267+ output * csi.GetPluginInfoResponse
268+ injectError bool
269+ expectError bool
270+ }{
271+ {
272+ name : "success" ,
273+ output : & csi.GetPluginInfoResponse {
274+ Name : "csi/example" ,
275+ VendorVersion : "0.2.0" ,
276+ Manifest : map [string ]string {
277+ "hello" : "world" ,
278+ },
279+ },
280+ expectError : false ,
281+ },
282+ {
283+ name : "gRPC error" ,
284+ output : nil ,
285+ injectError : true ,
286+ expectError : true ,
287+ },
288+ {
289+ name : "empty name" ,
290+ output : & csi.GetPluginInfoResponse {
291+ Name : "" ,
292+ },
293+ expectError : true ,
294+ },
295+ }
296+
297+ mockController , driver , identityServer , _ , csiConn , err := createMockServer (t )
298+ if err != nil {
299+ t .Fatal (err )
300+ }
301+ defer mockController .Finish ()
302+ defer driver .Stop ()
303+
304+ for _ , test := range tests {
305+
306+ in := & csi.GetPluginInfoRequest {}
307+
308+ out := test .output
309+ var injectedErr error = nil
310+ if test .injectError {
311+ injectedErr = fmt .Errorf ("mock error" )
312+ }
313+
314+ // Setup expectation
315+ identityServer .EXPECT ().GetPluginInfo (gomock .Any (), in ).Return (out , injectedErr ).Times (1 )
316+
317+ name , err := getDriverName (csiConn .conn , timeout )
318+ if test .expectError && err == nil {
319+ t .Errorf ("test %q: Expected error, got none" , test .name )
320+ }
321+ if ! test .expectError && err != nil {
322+ t .Errorf ("test %q: got error: %v" , test .name , err )
323+ }
324+ if err == nil && name != "csi/example" {
325+ t .Errorf ("got unexpected name: %q" , name )
326+ }
327+ }
328+ }
0 commit comments