@@ -285,6 +285,28 @@ def test_create_channel_implicit_with_scopes(
285285 grpc_secure_channel .assert_called_once_with (target , composite_creds )
286286
287287
288+ @mock .patch ("grpc.composite_channel_credentials" )
289+ @mock .patch (
290+ "google.auth.default" ,
291+ return_value = (mock .sentinel .credentials , mock .sentinel .projet ),
292+ )
293+ @mock .patch ("grpc.secure_channel" )
294+ def test_create_channel_implicit_with_default_scopes (
295+ grpc_secure_channel , default , composite_creds_call
296+ ):
297+ target = "example.com:443"
298+ composite_creds = composite_creds_call .return_value
299+
300+ channel = grpc_helpers .create_channel (target , scopes = ["one" , "two" ], default_scopes = ["three" , "four" ])
301+
302+ assert channel is grpc_secure_channel .return_value
303+ default .assert_called_once_with (scopes = ["one" , "two" ], default_scopes = ["three" , "four" ])
304+ if grpc_helpers .HAS_GRPC_GCP :
305+ grpc_secure_channel .assert_called_once_with (target , composite_creds , None )
306+ else :
307+ grpc_secure_channel .assert_called_once_with (target , composite_creds )
308+
309+
288310def test_create_channel_explicit_with_duplicate_credentials ():
289311 target = "example.com:443"
290312
@@ -333,6 +355,29 @@ def test_create_channel_explicit_scoped(grpc_secure_channel, composite_creds_cal
333355 grpc_secure_channel .assert_called_once_with (target , composite_creds , None )
334356 else :
335357 grpc_secure_channel .assert_called_once_with (target , composite_creds )
358+
359+
360+ @mock .patch ("grpc.composite_channel_credentials" )
361+ @mock .patch ("grpc.secure_channel" )
362+ def test_create_channel_explicit_default_scopes (grpc_secure_channel , composite_creds_call ):
363+ target = "example.com:443"
364+ scopes = ["1" , "2" ]
365+ default_scopes = ["3" , "4" ]
366+ composite_creds = composite_creds_call .return_value
367+
368+ credentials = mock .create_autospec (google .auth .credentials .Scoped , instance = True )
369+ credentials .requires_scopes = True
370+
371+ channel = grpc_helpers .create_channel (
372+ target , credentials = credentials , scopes = scopes , default_scopes = default_scopes
373+ )
374+
375+ credentials .with_scopes .assert_called_once_with (scopes , default_scopes = default_scopes )
376+ assert channel is grpc_secure_channel .return_value
377+ if grpc_helpers .HAS_GRPC_GCP :
378+ grpc_secure_channel .assert_called_once_with (target , composite_creds , None )
379+ else :
380+ grpc_secure_channel .assert_called_once_with (target , composite_creds )
336381
337382
338383@mock .patch ("grpc.composite_channel_credentials" )
@@ -408,6 +453,33 @@ def test_create_channel_with_credentials_file_and_scopes(load_credentials_from_f
408453 grpc_secure_channel .assert_called_once_with (target , composite_creds )
409454
410455
456+ @mock .patch ("grpc.composite_channel_credentials" )
457+ @mock .patch ("grpc.secure_channel" )
458+ @mock .patch (
459+ "google.auth.load_credentials_from_file" ,
460+ return_value = (mock .sentinel .credentials , mock .sentinel .project )
461+ )
462+ def test_create_channel_with_credentials_file_and_default_scopes (load_credentials_from_file , grpc_secure_channel , composite_creds_call ):
463+ target = "example.com:443"
464+ scopes = ["1" , "2" ]
465+ default_scopes = ["3" , "4" ]
466+
467+ credentials_file = "/path/to/credentials/file.json"
468+ composite_creds = composite_creds_call .return_value
469+
470+ channel = grpc_helpers .create_channel (
471+ target , credentials_file = credentials_file , scopes = scopes , default_scopes = default_scopes
472+ )
473+
474+ load_credentials_from_file .assert_called_once_with (credentials_file , scopes = scopes , default_scopes = default_scopes )
475+ assert channel is grpc_secure_channel .return_value
476+ if grpc_helpers .HAS_GRPC_GCP :
477+ grpc_secure_channel .assert_called_once_with (target , composite_creds , None )
478+ else :
479+ grpc_secure_channel .assert_called_once_with (target , composite_creds )
480+
481+
482+
411483@pytest .mark .skipif (
412484 not grpc_helpers .HAS_GRPC_GCP , reason = "grpc_gcp module not available"
413485)
0 commit comments