Skip to content

Commit 4cd74e4

Browse files
committed
test: add unit tests for default_scopes
1 parent f2c806e commit 4cd74e4

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed

tests/asyncio/test_grpc_helpers_async.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,25 @@ def test_create_channel_implicit_with_scopes(
317317
grpc_secure_channel.assert_called_once_with(target, composite_creds)
318318

319319

320+
@mock.patch("grpc.composite_channel_credentials")
321+
@mock.patch(
322+
"google.auth.default",
323+
return_value=(mock.sentinel.credentials, mock.sentinel.projet),
324+
)
325+
@mock.patch("grpc.experimental.aio.secure_channel")
326+
def test_create_channel_implicit_with_default_scopes(
327+
grpc_secure_channel, default, composite_creds_call
328+
):
329+
target = "example.com:443"
330+
composite_creds = composite_creds_call.return_value
331+
332+
channel = grpc_helpers_async.create_channel(target, scopes=["one", "two"], default_scopes=["three", "four"])
333+
334+
assert channel is grpc_secure_channel.return_value
335+
default.assert_called_once_with(scopes=["one", "two"], default_scopes=["three", "four"])
336+
grpc_secure_channel.assert_called_once_with(target, composite_creds)
337+
338+
320339
def test_create_channel_explicit_with_duplicate_credentials():
321340
target = "example:443"
322341

@@ -363,6 +382,27 @@ def test_create_channel_explicit_scoped(grpc_secure_channel, composite_creds_cal
363382
grpc_secure_channel.assert_called_once_with(target, composite_creds)
364383

365384

385+
@mock.patch("grpc.composite_channel_credentials")
386+
@mock.patch("grpc.experimental.aio.secure_channel")
387+
def test_create_channel_explicit_default_scopes(grpc_secure_channel, composite_creds_call):
388+
target = "example.com:443"
389+
scopes = ["1", "2"]
390+
default_scopes = ["3", "4"]
391+
composite_creds = composite_creds_call.return_value
392+
393+
credentials = mock.create_autospec(google.auth.credentials.Scoped, instance=True)
394+
credentials.requires_scopes = True
395+
396+
channel = grpc_helpers_async.create_channel(
397+
target, credentials=credentials, scopes=scopes, default_scopes=default_scopes
398+
)
399+
400+
credentials.with_scopes.assert_called_once_with(scopes, default_scopes=default_scopes)
401+
assert channel is grpc_secure_channel.return_value
402+
grpc_secure_channel.assert_called_once_with(target, composite_creds)
403+
404+
405+
366406
@mock.patch("grpc.composite_channel_credentials")
367407
@mock.patch("grpc.experimental.aio.secure_channel")
368408
def test_create_channel_explicit_with_quota_project(grpc_secure_channel, composite_creds_call):
@@ -423,6 +463,29 @@ def test_create_channel_with_credentials_file_and_scopes(load_credentials_from_f
423463
grpc_secure_channel.assert_called_once_with(target, composite_creds)
424464

425465

466+
@mock.patch("grpc.composite_channel_credentials")
467+
@mock.patch("grpc.experimental.aio.secure_channel")
468+
@mock.patch(
469+
"google.auth.load_credentials_from_file",
470+
return_value=(mock.sentinel.credentials, mock.sentinel.project)
471+
)
472+
def test_create_channel_with_credentials_file_and_default_scopes(load_credentials_from_file, grpc_secure_channel, composite_creds_call):
473+
target = "example.com:443"
474+
scopes = ["1", "2"]
475+
default_scopes = ["3", "4"]
476+
477+
credentials_file = "/path/to/credentials/file.json"
478+
composite_creds = composite_creds_call.return_value
479+
480+
channel = grpc_helpers_async.create_channel(
481+
target, credentials_file=credentials_file, scopes=scopes, default_scopes=default_scopes
482+
)
483+
484+
google.auth.load_credentials_from_file.assert_called_once_with(credentials_file, scopes=scopes, default_scopes=default_scopes)
485+
assert channel is grpc_secure_channel.return_value
486+
grpc_secure_channel.assert_called_once_with(target, composite_creds)
487+
488+
426489
@pytest.mark.skipif(grpc_helpers_async.HAS_GRPC_GCP, reason="grpc_gcp module not available")
427490
@mock.patch("grpc.experimental.aio.secure_channel")
428491
def test_create_channel_without_grpc_gcp(grpc_secure_channel):

tests/unit/test_grpc_helpers.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
288310
def 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

Comments
 (0)