X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2668643b7570db96651466250e7a496184f6ef0a..5c79b60beb2f9bbfa1234ace95979343e40c13d1:/sdk/python/tests/test_safeapi.py diff --git a/sdk/python/tests/test_safeapi.py b/sdk/python/tests/test_safeapi.py new file mode 100644 index 0000000000..a41219e9c5 --- /dev/null +++ b/sdk/python/tests/test_safeapi.py @@ -0,0 +1,63 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +import os +import unittest + +import googleapiclient + +from arvados import safeapi + +from . import run_test_server + +class SafeApiTest(run_test_server.TestCaseWithServers): + MAIN_SERVER = {} + + def test_constructor(self): + env_mapping = { + key: value + for key, value in os.environ.items() + if key.startswith('ARVADOS_API_') + } + extra_params = { + 'timeout': 299, + } + base_params = { + key[12:].lower(): value + for key, value in env_mapping.items() + } + try: + base_params['insecure'] = base_params.pop('host_insecure') + except KeyError: + pass + expected_keep_params = {} + for config, params, subtest in [ + (None, {}, "default arguments"), + (None, extra_params, "extra params"), + (env_mapping, {}, "explicit config"), + (env_mapping, extra_params, "explicit config and params"), + ({}, base_params, "params only"), + ]: + with self.subTest(f"test constructor with {subtest}"): + expected_timeout = params.get('timeout', 300) + expected_params = dict(params) + keep_params = dict(expected_keep_params) + client = safeapi.ThreadSafeApiCache(config, keep_params, params, 'v1') + self.assertTrue(hasattr(client, 'localapi'), "client missing localapi method") + self.assertEqual(client.api_token, os.environ['ARVADOS_API_TOKEN']) + self.assertEqual(client._http.timeout, expected_timeout) + self.assertEqual(params, expected_params, + "api_params was modified in-place") + self.assertEqual(keep_params, expected_keep_params, + "keep_params was modified in-place") + + def test_constructor_no_args(self): + client = safeapi.ThreadSafeApiCache() + self.assertTrue(hasattr(client, 'localapi'), "client missing localapi method") + self.assertEqual(client.api_token, os.environ['ARVADOS_API_TOKEN']) + self.assertTrue(client.insecure) + + def test_constructor_bad_version(self): + with self.assertRaises(googleapiclient.errors.UnknownApiNameOrVersion): + safeapi.ThreadSafeApiCache(version='BadTestVersion')