diff options
Diffstat (limited to 'tests/test__service_account_info.py')
-rw-r--r-- | tests/test__service_account_info.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/test__service_account_info.py b/tests/test__service_account_info.py new file mode 100644 index 0000000..13b2f85 --- /dev/null +++ b/tests/test__service_account_info.py @@ -0,0 +1,62 @@ +# Copyright 2016 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 json +import os + +import pytest +import six + +from google.auth import _service_account_info +from google.auth import crypt + + +DATA_DIR = os.path.join(os.path.dirname(__file__), "data") +SERVICE_ACCOUNT_JSON_FILE = os.path.join(DATA_DIR, "service_account.json") + +with open(SERVICE_ACCOUNT_JSON_FILE, "r") as fh: + SERVICE_ACCOUNT_INFO = json.load(fh) + + +def test_from_dict(): + signer = _service_account_info.from_dict(SERVICE_ACCOUNT_INFO) + assert isinstance(signer, crypt.RSASigner) + assert signer.key_id == SERVICE_ACCOUNT_INFO["private_key_id"] + + +def test_from_dict_bad_private_key(): + info = SERVICE_ACCOUNT_INFO.copy() + info["private_key"] = "garbage" + + with pytest.raises(ValueError) as excinfo: + _service_account_info.from_dict(info) + + assert excinfo.match(r"key") + + +def test_from_dict_bad_format(): + with pytest.raises(ValueError) as excinfo: + _service_account_info.from_dict({}, require=("meep",)) + + assert excinfo.match(r"missing fields") + + +def test_from_filename(): + info, signer = _service_account_info.from_filename(SERVICE_ACCOUNT_JSON_FILE) + + for key, value in six.iteritems(SERVICE_ACCOUNT_INFO): + assert info[key] == value + + assert isinstance(signer, crypt.RSASigner) + assert signer.key_id == SERVICE_ACCOUNT_INFO["private_key_id"] |