Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite4eaec0

Browse files
feat: add client_encryped_cert_source to ClientOptions (#31)
1 parenta82f289 commite4eaec0

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

‎google/api_core/client_options.py‎

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,31 @@ class ClientOptions(object):
5656
api_endpoint (str): The desired API endpoint, e.g., compute.googleapis.com
5757
client_cert_source (Callable[[], (bytes, bytes)]): An optional callback
5858
which returns client certificate bytes and private key bytes both in
59-
PEM format.
59+
PEM format. ``client_cert_source`` and ``client_encrypted_cert_source``
60+
are mutually exclusive.
61+
client_encrypted_cert_source (Callable[[], (str, str, bytes)]): An optional
62+
callback which returns client certificate file path, encrypted private
63+
key file path, and the passphrase bytes.``client_cert_source`` and
64+
``client_encrypted_cert_source`` are mutually exclusive.
65+
66+
Raises:
67+
ValueError: If both ``client_cert_source`` and ``client_encrypted_cert_source``
68+
are provided.
6069
"""
6170

62-
def__init__(self,api_endpoint=None,client_cert_source=None):
71+
def__init__(
72+
self,
73+
api_endpoint=None,
74+
client_cert_source=None,
75+
client_encrypted_cert_source=None,
76+
):
77+
ifclient_cert_sourceandclient_encrypted_cert_source:
78+
raiseValueError(
79+
"client_cert_source and client_encrypted_cert_source are mutually exclusive"
80+
)
6381
self.api_endpoint=api_endpoint
6482
self.client_cert_source=client_cert_source
83+
self.client_encrypted_cert_source=client_encrypted_cert_source
6584

6685
def__repr__(self):
6786
return"ClientOptions: "+repr(self.__dict__)

‎tests/unit/test_client_options.py‎

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def get_client_cert():
2121
returnb"cert",b"key"
2222

2323

24+
defget_client_encrypted_cert():
25+
return"cert_path","key_path",b"passphrase"
26+
27+
2428
deftest_constructor():
2529

2630
options=client_options.ClientOptions(
@@ -31,6 +35,30 @@ def test_constructor():
3135
assertoptions.client_cert_source()== (b"cert",b"key")
3236

3337

38+
deftest_constructor_with_encrypted_cert_source():
39+
40+
options=client_options.ClientOptions(
41+
api_endpoint="foo.googleapis.com",
42+
client_encrypted_cert_source=get_client_encrypted_cert,
43+
)
44+
45+
assertoptions.api_endpoint=="foo.googleapis.com"
46+
assertoptions.client_encrypted_cert_source()== (
47+
"cert_path",
48+
"key_path",
49+
b"passphrase",
50+
)
51+
52+
53+
deftest_constructor_with_both_cert_sources():
54+
withpytest.raises(ValueError):
55+
client_options.ClientOptions(
56+
api_endpoint="foo.googleapis.com",
57+
client_cert_source=get_client_cert,
58+
client_encrypted_cert_source=get_client_encrypted_cert,
59+
)
60+
61+
3462
deftest_from_dict():
3563
options=client_options.from_dict(
3664
{"api_endpoint":"foo.googleapis.com","client_cert_source":get_client_cert}
@@ -57,6 +85,6 @@ def test_repr():
5785

5886
assert (
5987
repr(options)
60-
=="ClientOptions: {'api_endpoint': 'foo.googleapis.com', 'client_cert_source': None}"
61-
or"ClientOptions: {'client_cert_source': None, 'api_endpoint': 'foo.googleapis.com'}"
88+
=="ClientOptions: {'api_endpoint': 'foo.googleapis.com', 'client_cert_source': None, 'client_encrypted_cert_source': None}"
89+
or"ClientOptions: {'client_encrypted_cert_source': None, 'client_cert_source': None, 'api_endpoint': 'foo.googleapis.com'}"
6290
)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp