From 6f4ebc04b7c45dad115bfb61ac350ebde918613d Mon Sep 17 00:00:00 2001
From: Robert Rosca <robert.rosca@xfel.eu>
Date: Fri, 13 May 2022 11:05:22 +0200
Subject: [PATCH] Add test for invalid run dir, test log output

---
 tests/test_webservice.py | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/tests/test_webservice.py b/tests/test_webservice.py
index 4954fd0df..32bdf0303 100644
--- a/tests/test_webservice.py
+++ b/tests/test_webservice.py
@@ -1,3 +1,4 @@
+import logging
 import sys
 from pathlib import Path
 from unittest import mock
@@ -88,7 +89,6 @@ def test_parse_config():
         for dcache in [None, None, "DESY_DCACHE_RAW_CC"]
     }
 )
-
 async def test_wait_on_transfer(
     tmp_path: Path,
     run_links_to: str,
@@ -143,6 +143,38 @@ async def test_wait_on_transfer(
         if not expected_error:
             raise e
 
+
+@pytest.mark.parametrize(
+    "repositories",
+    {
+        (gpfs_online, gpfs_offline, dcache)
+        for gpfs_online in [None, None, "XFEL_GPFS_ONLINE_RAW_CC"]
+        for gpfs_offline in [None, None, "XFEL_GPFS_OFFLINE_RAW_CC"]
+        for dcache in [None, None, "DESY_DCACHE_RAW_CC"]
+    }
+)
+@pytest.mark.asyncio
+async def test_wait_on_transfer_invalid_run_dir(caplog, repositories):
+    response = mock.Mock()
+    response.status_code = 200
+    response.json = lambda: {"runs": [{"repositories": {r: None for r in repositories}}]}
+    client = mock.Mock()
+    client.get_runs_by_proposal_number_api = mock.Mock(return_value=response)
+
+    caplog.set_level(logging.WARNING)
+
+    res = await wait_on_transfer(
+        client,
+        run=0,
+        proposal=str(10),
+        run_dir=Path("/invalid/run/dir"),
+        max_tries=1,
+        sleep_completion=0,
+    )
+
+    assert res is None
+    assert "is not relative to" in caplog.text
+
 @pytest.mark.asyncio
 @pytest.mark.parametrize(
     "mock_json, status_code, exception_class, exception_match",
-- 
GitLab