From 0b5277c5ec0c492d4287a3cf8dfde8b60dba666d Mon Sep 17 00:00:00 2001 From: Alyssa Dai Date: Fri, 17 Nov 2023 11:46:22 -0500 Subject: [PATCH] add test for unrecognized node URLs --- tests/test_query.py | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/test_query.py diff --git a/tests/test_query.py b/tests/test_query.py new file mode 100644 index 0000000..d6a77cd --- /dev/null +++ b/tests/test_query.py @@ -0,0 +1,47 @@ +import pytest + +from app.api import crud + + +@pytest.fixture +def mock_invalid_get(): + """Mock get function that does not return any response (for testing invalid parameter values).""" + + async def mockreturn( + min_age, + max_age, + sex, + diagnosis, + is_control, + min_num_sessions, + assessment, + image_modal, + node_urls, + ): + return None + + return mockreturn + + +@pytest.mark.parametrize( + "invalid_node_url_list", + [ + [ + "https://api.neurobagel.org/", + "https://mysterynode.org/", + ], # can probably change this to set an environment variable + ["http://unknownnode.org", "https://mysterynode.org/"], + ], +) +def test_get_invalid_node_urls( + test_app, mock_invalid_get, monkeypatch, invalid_node_url_list +): + """Given a node URL list that contains URL(s) not recognized by the API instance, returns an informative 422 error response.""" + + monkeypatch.setattr(crud, "get", mock_invalid_get) + + response = test_app.get( + f"/query/?node_url={invalid_node_url_list[0]}&node_url={invalid_node_url_list[1]}" + ) + assert response.status_code == 422 + assert "Unrecognized Neurobagel node URL(s)" in response.text