blob: 1581c56e2bf366a8a871e2dbcbe7441931f93ec4 [file] [log] [blame]
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import pytest
from google.api_core import client_options
def get_client_cert():
return b"cert", b"key"
def get_client_encrypted_cert():
return "cert_path", "key_path", b"passphrase"
def test_constructor():
options = client_options.ClientOptions(
api_endpoint="foo.googleapis.com",
client_cert_source=get_client_cert,
quota_project_id="quote-proj",
credentials_file="path/to/credentials.json",
scopes=[
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/cloud-platform.read-only",
]
)
assert options.api_endpoint == "foo.googleapis.com"
assert options.client_cert_source() == (b"cert", b"key")
assert options.quota_project_id == "quote-proj"
assert options.credentials_file == "path/to/credentials.json"
assert options.scopes == [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/cloud-platform.read-only",
]
def test_constructor_with_encrypted_cert_source():
options = client_options.ClientOptions(
api_endpoint="foo.googleapis.com",
client_encrypted_cert_source=get_client_encrypted_cert,
)
assert options.api_endpoint == "foo.googleapis.com"
assert options.client_encrypted_cert_source() == (
"cert_path",
"key_path",
b"passphrase",
)
def test_constructor_with_both_cert_sources():
with pytest.raises(ValueError):
client_options.ClientOptions(
api_endpoint="foo.googleapis.com",
client_cert_source=get_client_cert,
client_encrypted_cert_source=get_client_encrypted_cert,
)
def test_from_dict():
options = client_options.from_dict(
{
"api_endpoint": "foo.googleapis.com",
"client_cert_source": get_client_cert,
"quota_project_id": "quote-proj",
"credentials_file": "path/to/credentials.json",
"scopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/cloud-platform.read-only",
]
}
)
assert options.api_endpoint == "foo.googleapis.com"
assert options.client_cert_source() == (b"cert", b"key")
assert options.quota_project_id == "quote-proj"
assert options.credentials_file == "path/to/credentials.json"
assert options.scopes == [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/cloud-platform.read-only",
]
def test_from_dict_bad_argument():
with pytest.raises(ValueError):
client_options.from_dict(
{
"api_endpoint": "foo.googleapis.com",
"bad_arg": "1234",
"client_cert_source": get_client_cert,
}
)
def test_repr():
options = client_options.ClientOptions(api_endpoint="foo.googleapis.com")
assert (
repr(options)
== "ClientOptions: {'api_endpoint': 'foo.googleapis.com', 'client_cert_source': None, 'client_encrypted_cert_source': None}"
or "ClientOptions: {'client_encrypted_cert_source': None, 'client_cert_source': None, 'api_endpoint': 'foo.googleapis.com'}"
)