| # 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'}" |
| ) |