From 5a0e1f8be9f6107d09bc87b807292a0b57128209 Mon Sep 17 00:00:00 2001 From: Five Grant <5@fivegrant.com> Date: Wed, 16 Aug 2023 12:40:39 -0500 Subject: [PATCH] Capture output files [broken] --- tests/integration/conftest.py | 25 +++++++++++++++++++++++++ tests/integration/test_simulate.py | 4 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 72e9643..72284c2 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -1,3 +1,5 @@ +from collections import namedtuple +from urllib.parse import urlparse, parse_qs import pytest from rq import SimpleWorker, Queue @@ -29,3 +31,26 @@ def client(redis): app.dependency_overrides[get_redis] = lambda: redis yield TestClient(app) app.dependency_overrides[get_redis] = get_redis + + +@pytest.fixture +def file_storage(): + storage = {} + + def get_filename(url): + return parse_qs(urlparse(url).query)["filename"][0] + + def get_loc(request, _): + filename = get_filename(request.url) + return {"url": f"filesave?filename={filename}"} + + def save(request, context): + filename = get_filename(request.url) + storage[filename] = context + return {"status": "success"} + + def retrieve(filename): + return storage[filename] + + Storage = namedtuple("Storage", ["get_loc", "save", "retrieve"]) + yield Storage(get_loc, save, retrieve) diff --git a/tests/integration/test_simulate.py b/tests/integration/test_simulate.py index ed04a23..7c26b97 100644 --- a/tests/integration/test_simulate.py +++ b/tests/integration/test_simulate.py @@ -9,7 +9,7 @@ @pytest.mark.example_dir("simulate") -def test_simulate_example(example_context, client, worker, requests_mock): +def test_simulate_example(example_context, client, worker, file_storage, requests_mock): request = example_context["request"] config_id = request["model_config_id"] model = json.loads(example_context["fetch"](config_id + ".json")) @@ -38,7 +38,7 @@ def test_simulate_example(example_context, client, worker, requests_mock): requests_mock.get(f"{TDS_URL}/model_configurations/{config_id}", json=model) # TODO: Save files to locations where we can check against them upload_url = re.compile("upload-url") - requests_mock.get(upload_url, json={"url": "http://WONTWORK"}) + requests_mock.get(upload_url, json=file_storage.get_loc) requests_mock.put("http://WONTWORK", json={"url": "WONTWORK"}) # TODO: Mock PyCIEMSS lib