diff --git a/tests/conftest.py b/tests/conftest.py index 94b8ca1..c4c4152 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,7 @@ import pytest from .helpers import mkcache, mksqlite, mkthrottler -from .secrets import OPS_KEY, OPS_SECRET +from .secrets import get_secrets_or_skip_tests @pytest.fixture @@ -13,8 +13,9 @@ def storage(request): def reset_cached_client(request): from epo_ops import Client + ops_key, ops_secret = get_secrets_or_skip_tests() return Client( - OPS_KEY, OPS_SECRET, middlewares=[mkcache(request), mkthrottler(request)] + ops_key, ops_secret, middlewares=[mkcache(request), mkthrottler(request)] ) @@ -32,14 +33,18 @@ def module_cache(request): def default_client(request): from epo_ops import Client - return Client(OPS_KEY, OPS_SECRET, middlewares=[mkthrottler(request)]) + ops_key, ops_secret = get_secrets_or_skip_tests() + + return Client(ops_key, ops_secret, middlewares=[mkthrottler(request)]) @pytest.fixture(scope="module") def cached_client(request, module_cache): from epo_ops import Client - return Client(OPS_KEY, OPS_SECRET, middlewares=[module_cache, mkthrottler(request)]) + ops_key, ops_secret = get_secrets_or_skip_tests() + + return Client(ops_key, ops_secret, middlewares=[module_cache, mkthrottler(request)]) @pytest.fixture(scope="module", params=["cached_client", "default_client"]) diff --git a/tests/secrets.py b/tests/secrets.py index bf13873..c5dfacb 100644 --- a/tests/secrets.py +++ b/tests/secrets.py @@ -9,6 +9,7 @@ import os from os.path import abspath, dirname, join +import pytest from dotenv import load_dotenv # Prune environment variables. @@ -20,6 +21,13 @@ dotenv_path = abspath(join(dirname(__file__), "../.env")) load_dotenv(dotenv_path) + # Set environment variables as constants. -OPS_KEY = os.environ["OPS_KEY"] -OPS_SECRET = os.environ["OPS_SECRET"] +def get_secrets_or_skip_tests(): + try: + ops_key = os.environ["OPS_KEY"] + ops_secret = os.environ["OPS_SECRET"] + except KeyError as ex: + raise pytest.skip("No OPS credentials configured") from ex + + return ops_key, ops_secret