Skip to content
This repository has been archived by the owner on Sep 5, 2023. It is now read-only.

fix: enable self signed jwt for grpc #9

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -338,6 +338,10 @@ def __init__(
client_cert_source_for_mtls=client_cert_source_func,
quota_project_id=client_options.quota_project_id,
client_info=client_info,
always_use_jwt_access=(
Transport == type(self).get_transport_class("grpc")
or Transport == type(self).get_transport_class("grpc_asyncio")
),
)

def set_iam_policy(
Expand Down
Expand Up @@ -340,6 +340,10 @@ def __init__(
client_cert_source_for_mtls=client_cert_source_func,
quota_project_id=client_options.quota_project_id,
client_info=client_info,
always_use_jwt_access=(
Transport == type(self).get_transport_class("grpc")
or Transport == type(self).get_transport_class("grpc_asyncio")
),
)

def list_brands(
Expand Down
34 changes: 18 additions & 16 deletions tests/unit/gapic/iap_v1/test_identity_aware_proxy_admin_service.py
Expand Up @@ -137,29 +137,14 @@ def test_identity_aware_proxy_admin_service_client_from_service_account_info(
assert client.transport._host == "iap.googleapis.com:443"


@pytest.mark.parametrize(
"client_class",
[IdentityAwareProxyAdminServiceClient, IdentityAwareProxyAdminServiceAsyncClient,],
)
def test_identity_aware_proxy_admin_service_client_service_account_always_use_jwt(
client_class,
):
with mock.patch.object(
service_account.Credentials, "with_always_use_jwt_access", create=True
) as use_jwt:
creds = service_account.Credentials(None, None, None)
client = client_class(credentials=creds)
use_jwt.assert_not_called()


@pytest.mark.parametrize(
"transport_class,transport_name",
[
(transports.IdentityAwareProxyAdminServiceGrpcTransport, "grpc"),
(transports.IdentityAwareProxyAdminServiceGrpcAsyncIOTransport, "grpc_asyncio"),
],
)
def test_identity_aware_proxy_admin_service_client_service_account_always_use_jwt_true(
def test_identity_aware_proxy_admin_service_client_service_account_always_use_jwt(
transport_class, transport_name
):
with mock.patch.object(
Expand All @@ -169,6 +154,13 @@ def test_identity_aware_proxy_admin_service_client_service_account_always_use_jw
transport = transport_class(credentials=creds, always_use_jwt_access=True)
use_jwt.assert_called_once_with(True)

with mock.patch.object(
service_account.Credentials, "with_always_use_jwt_access", create=True
) as use_jwt:
creds = service_account.Credentials(None, None, None)
transport = transport_class(credentials=creds, always_use_jwt_access=False)
use_jwt.assert_not_called()


@pytest.mark.parametrize(
"client_class",
Expand Down Expand Up @@ -260,6 +252,7 @@ def test_identity_aware_proxy_admin_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is
Expand All @@ -276,6 +269,7 @@ def test_identity_aware_proxy_admin_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is
Expand All @@ -292,6 +286,7 @@ def test_identity_aware_proxy_admin_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has
Expand Down Expand Up @@ -320,6 +315,7 @@ def test_identity_aware_proxy_admin_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id="octopus",
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down Expand Up @@ -396,6 +392,7 @@ def test_identity_aware_proxy_admin_service_client_mtls_env_auto(
client_cert_source_for_mtls=expected_client_cert_source,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case ADC client cert is provided. Whether client cert is used depends on
Expand Down Expand Up @@ -429,6 +426,7 @@ def test_identity_aware_proxy_admin_service_client_mtls_env_auto(
client_cert_source_for_mtls=expected_client_cert_source,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case client_cert_source and ADC client cert are not provided.
Expand All @@ -450,6 +448,7 @@ def test_identity_aware_proxy_admin_service_client_mtls_env_auto(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down Expand Up @@ -484,6 +483,7 @@ def test_identity_aware_proxy_admin_service_client_client_options_scopes(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down Expand Up @@ -518,6 +518,7 @@ def test_identity_aware_proxy_admin_service_client_client_options_credentials_fi
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand All @@ -537,6 +538,7 @@ def test_identity_aware_proxy_admin_service_client_client_options_from_dict():
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down
34 changes: 18 additions & 16 deletions tests/unit/gapic/iap_v1/test_identity_aware_proxy_o_auth_service.py
Expand Up @@ -132,29 +132,14 @@ def test_identity_aware_proxy_o_auth_service_client_from_service_account_info(
assert client.transport._host == "iap.googleapis.com:443"


@pytest.mark.parametrize(
"client_class",
[IdentityAwareProxyOAuthServiceClient, IdentityAwareProxyOAuthServiceAsyncClient,],
)
def test_identity_aware_proxy_o_auth_service_client_service_account_always_use_jwt(
client_class,
):
with mock.patch.object(
service_account.Credentials, "with_always_use_jwt_access", create=True
) as use_jwt:
creds = service_account.Credentials(None, None, None)
client = client_class(credentials=creds)
use_jwt.assert_not_called()


@pytest.mark.parametrize(
"transport_class,transport_name",
[
(transports.IdentityAwareProxyOAuthServiceGrpcTransport, "grpc"),
(transports.IdentityAwareProxyOAuthServiceGrpcAsyncIOTransport, "grpc_asyncio"),
],
)
def test_identity_aware_proxy_o_auth_service_client_service_account_always_use_jwt_true(
def test_identity_aware_proxy_o_auth_service_client_service_account_always_use_jwt(
transport_class, transport_name
):
with mock.patch.object(
Expand All @@ -164,6 +149,13 @@ def test_identity_aware_proxy_o_auth_service_client_service_account_always_use_j
transport = transport_class(credentials=creds, always_use_jwt_access=True)
use_jwt.assert_called_once_with(True)

with mock.patch.object(
service_account.Credentials, "with_always_use_jwt_access", create=True
) as use_jwt:
creds = service_account.Credentials(None, None, None)
transport = transport_class(credentials=creds, always_use_jwt_access=False)
use_jwt.assert_not_called()


@pytest.mark.parametrize(
"client_class",
Expand Down Expand Up @@ -255,6 +247,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is
Expand All @@ -271,6 +264,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is
Expand All @@ -287,6 +281,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has
Expand Down Expand Up @@ -315,6 +310,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options(
client_cert_source_for_mtls=None,
quota_project_id="octopus",
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down Expand Up @@ -391,6 +387,7 @@ def test_identity_aware_proxy_o_auth_service_client_mtls_env_auto(
client_cert_source_for_mtls=expected_client_cert_source,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case ADC client cert is provided. Whether client cert is used depends on
Expand Down Expand Up @@ -424,6 +421,7 @@ def test_identity_aware_proxy_o_auth_service_client_mtls_env_auto(
client_cert_source_for_mtls=expected_client_cert_source,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)

# Check the case client_cert_source and ADC client cert are not provided.
Expand All @@ -445,6 +443,7 @@ def test_identity_aware_proxy_o_auth_service_client_mtls_env_auto(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down Expand Up @@ -479,6 +478,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options_scopes(
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down Expand Up @@ -513,6 +513,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options_credentials_f
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand All @@ -532,6 +533,7 @@ def test_identity_aware_proxy_o_auth_service_client_client_options_from_dict():
client_cert_source_for_mtls=None,
quota_project_id=None,
client_info=transports.base.DEFAULT_CLIENT_INFO,
always_use_jwt_access=True,
)


Expand Down