diff --git a/tests/fixtures.py b/tests/fixtures.py index 8903d02b..db5f06e2 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -15,6 +15,10 @@ import time from urllib.parse import unquote +# This temp file is used by one of the plugin config tests +TEMP_PLUGIN_SECRET_FILE = os.path.join(tempfile.gettempdir(), "plugin-secret") + + class TestResponse: def __init__(self, status, headers, body): self.status = status @@ -97,7 +101,6 @@ def make_app_client( memory=False, config=None, filename="fixtures.db", - metadata=None, is_immutable=False, extra_databases=None, inspect_data=None, @@ -140,7 +143,7 @@ def make_app_client( immutables=immutables, memory=memory, cors=cors, - metadata=metadata or METADATA, + metadata=METADATA, plugins_dir=plugins_dir, config=config, inspect_data=inspect_data, @@ -247,7 +250,11 @@ METADATA = { "source_url": "https://github.com/simonw/datasette/blob/master/tests/fixtures.py", "about": "About Datasette", "about_url": "https://github.com/simonw/datasette", - "plugins": {"name-of-plugin": {"depth": "root"}}, + "plugins": { + "name-of-plugin": {"depth": "root"}, + "env-plugin": {"foo": {"$env": "FOO_ENV"}}, + "file-plugin": {"foo": {"$file": TEMP_PLUGIN_SECRET_FILE}}, + }, "databases": { "fixtures": { "description": "Test tables description", diff --git a/tests/test_plugins.py b/tests/test_plugins.py index 58e7fe7c..f42eebd7 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -1,5 +1,5 @@ from bs4 import BeautifulSoup as Soup -from .fixtures import app_client, make_app_client # noqa +from .fixtures import app_client, make_app_client, TEMP_PLUGIN_SECRET_FILE # noqa import base64 import json import os @@ -126,22 +126,16 @@ def test_plugin_config(app_client): assert None is app_client.ds.plugin_config("unknown-plugin") -def test_plugin_config_env(): +def test_plugin_config_env(app_client): os.environ["FOO_ENV"] = "FROM_ENVIRONMENT" - for client in make_app_client( - metadata={"plugins": {"env-plugin": {"foo": {"$env": "FOO_ENV"}}}} - ): - assert {"foo": "FROM_ENVIRONMENT"} == client.ds.plugin_config("env-plugin") + assert {"foo": "FROM_ENVIRONMENT"} == app_client.ds.plugin_config("env-plugin") del os.environ["FOO_ENV"] -def test_plugin_config_file(tmpdir): - filepath = str(tmpdir / "secret-file") - open(filepath, "w").write("FROM_FILE") - for client in make_app_client( - metadata={"plugins": {"file-plugin": {"foo": {"$file": filepath}}}} - ): - assert {"foo": "FROM_FILE"} == client.ds.plugin_config("file-plugin") +def test_plugin_config_file(app_client): + open(TEMP_PLUGIN_SECRET_FILE, "w").write("FROM_FILE") + assert {"foo": "FROM_FILE"} == app_client.ds.plugin_config("file-plugin") + os.remove(TEMP_PLUGIN_SECRET_FILE) @pytest.mark.parametrize(