From e69af7806cb92bd0be9ca85141c355d9b432bd85 Mon Sep 17 00:00:00 2001 From: Viktor Bozhinov Date: Tue, 16 Nov 2021 17:43:46 +0000 Subject: [PATCH] test: fix failing tests #283 --- test/datagateway_api/db/conftest.py | 7 ++- .../endpoints/test_count_with_filters_db.py | 11 ++-- .../db/endpoints/test_findone_db.py | 12 ++-- .../db/endpoints/test_get_by_id_db.py | 15 +++-- .../db/endpoints/test_get_with_filters.py | 23 ++++---- .../db/endpoints/test_ping_db.py | 5 +- .../db/endpoints/test_table_endpoints_db.py | 36 ++++++++---- .../db/test_requires_session_id.py | 16 +++-- test/datagateway_api/icat/conftest.py | 10 ++-- .../endpoints/test_count_with_filters_icat.py | 9 ++- .../icat/endpoints/test_create_icat.py | 16 +++-- .../icat/endpoints/test_delete_by_id_icat.py | 11 +++- .../icat/endpoints/test_findone_icat.py | 11 ++-- .../icat/endpoints/test_get_by_id_icat.py | 14 +++-- .../endpoints/test_get_with_filters_icat.py | 21 ++++--- .../icat/endpoints/test_ping_icat.py | 5 +- .../endpoints/test_table_endpoints_icat.py | 33 +++++++---- .../icat/endpoints/test_update_by_id_icat.py | 7 ++- .../endpoints/test_update_multiple_icat.py | 16 +++-- .../icat/test_session_handling.py | 30 +++++++--- test/test_endpoint_rules.py | 58 +++++++++++++------ 21 files changed, 242 insertions(+), 124 deletions(-) diff --git a/test/datagateway_api/db/conftest.py b/test/datagateway_api/db/conftest.py index 1fbb4fd5..e8ca4047 100644 --- a/test/datagateway_api/db/conftest.py +++ b/test/datagateway_api/db/conftest.py @@ -3,6 +3,7 @@ import pytest +from datagateway_api.src.common.config import config from datagateway_api.src.common.constants import Constants from datagateway_api.src.datagateway_api.database.helpers import ( delete_row_by_id, @@ -116,7 +117,8 @@ def isis_specific_endpoint_data_db(): @pytest.fixture() def final_instrument_id(flask_test_app_db, valid_db_credentials_header): final_instrument_result = flask_test_app_db.get( - '/instruments/findone?order="id DESC"', headers=valid_db_credentials_header, + f'{config.datagateway_api.extension}/instruments/findone?order="id DESC"', + headers=valid_db_credentials_header, ) return final_instrument_result.json["id"] @@ -124,6 +126,7 @@ def final_instrument_id(flask_test_app_db, valid_db_credentials_header): @pytest.fixture() def final_facilitycycle_id(flask_test_app_db, valid_db_credentials_header): final_facilitycycle_result = flask_test_app_db.get( - '/facilitycycles/findone?order="id DESC"', headers=valid_db_credentials_header, + f'{config.datagateway_api.extension}/facilitycycles/findone?order="id DESC"', + headers=valid_db_credentials_header, ) return final_facilitycycle_result.json["id"] diff --git a/test/datagateway_api/db/endpoints/test_count_with_filters_db.py b/test/datagateway_api/db/endpoints/test_count_with_filters_db.py index 8be2a91f..7b97dc58 100644 --- a/test/datagateway_api/db/endpoints/test_count_with_filters_db.py +++ b/test/datagateway_api/db/endpoints/test_count_with_filters_db.py @@ -1,5 +1,7 @@ import pytest +from datagateway_api.src.common.config import config + class TestDBCountWithFilters: @pytest.mark.usefixtures("single_investigation_test_data_db") @@ -7,8 +9,8 @@ def test_valid_count_with_filters( self, flask_test_app_db, valid_db_credentials_header, ): test_response = flask_test_app_db.get( - '/investigations/count?where={"title": {"like": "Title for DataGateway API' - ' Testing (DB)"}}', + f"{config.datagateway_api.extension}/investigations/count?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}', headers=valid_db_credentials_header, ) @@ -18,8 +20,9 @@ def test_valid_no_results_count_with_filters( self, flask_test_app_db, valid_db_credentials_header, ): test_response = flask_test_app_db.get( - '/investigations/count?where={"title": {"like": "This filter should cause a' - '404 for testing purposes..."}}', + f"{config.datagateway_api.extension}/investigations/count?where=" + '{"title": {"like": "This filter should cause a404 for testing ' + 'purposes..."}}', headers=valid_db_credentials_header, ) diff --git a/test/datagateway_api/db/endpoints/test_findone_db.py b/test/datagateway_api/db/endpoints/test_findone_db.py index f9f5318d..bd1f6b8a 100644 --- a/test/datagateway_api/db/endpoints/test_findone_db.py +++ b/test/datagateway_api/db/endpoints/test_findone_db.py @@ -1,3 +1,6 @@ +from datagateway_api.src.common.config import config + + class TestDBFindone: def test_valid_findone_with_filters( self, @@ -6,8 +9,8 @@ def test_valid_findone_with_filters( single_investigation_test_data_db, ): test_response = flask_test_app_db.get( - '/investigations/findone?where={"title": {"like": "Title for DataGateway' - ' API Testing (DB)"}}', + f"{config.datagateway_api.extension}/investigations/findone?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}', headers=valid_db_credentials_header, ) @@ -17,8 +20,9 @@ def test_valid_no_results_findone_with_filters( self, flask_test_app_db, valid_db_credentials_header, ): test_response = flask_test_app_db.get( - '/investigations/findone?where={"title": {"eq": "This filter should cause a' - '404 for testing purposes..."}}', + f"{config.datagateway_api.extension}/investigations/findone?where=" + '{"title": {"eq": "This filter should cause a404 for testing ' + 'purposes..."}}', headers=valid_db_credentials_header, ) diff --git a/test/datagateway_api/db/endpoints/test_get_by_id_db.py b/test/datagateway_api/db/endpoints/test_get_by_id_db.py index a32a5860..eb3819c8 100644 --- a/test/datagateway_api/db/endpoints/test_get_by_id_db.py +++ b/test/datagateway_api/db/endpoints/test_get_by_id_db.py @@ -1,3 +1,6 @@ +from datagateway_api.src.common.config import config + + class TestDBGetByID: def test_valid_get_with_id( self, @@ -7,14 +10,15 @@ def test_valid_get_with_id( ): # Need to identify the ID given to the test data investigation_data = flask_test_app_db.get( - '/investigations?where={"title": {"like": "Title for DataGateway API' - ' Testing (DB)"}}', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}', headers=valid_db_credentials_header, ) test_data_id = investigation_data.json[0]["id"] test_response = flask_test_app_db.get( - f"/investigations/{test_data_id}", headers=valid_db_credentials_header, + f"{config.datagateway_api.extension}/investigations/{test_data_id}", + headers=valid_db_credentials_header, ) assert test_response.json == single_investigation_test_data_db.to_dict() @@ -23,14 +27,15 @@ def test_invalid_get_with_id( self, flask_test_app_db, valid_db_credentials_header, ): final_investigation_result = flask_test_app_db.get( - '/investigations/findone?order="id DESC"', + f"{config.datagateway_api.extension}/investigations/findone?order=" + '"id DESC"', headers=valid_db_credentials_header, ) test_data_id = final_investigation_result.json["id"] # Adding 100 onto the ID to the most recent result should ensure a 404 test_response = flask_test_app_db.get( - f"/investigations/{test_data_id + 100}", + f"{config.datagateway_api.extension}/investigations/{test_data_id + 100}", headers=valid_db_credentials_header, ) diff --git a/test/datagateway_api/db/endpoints/test_get_with_filters.py b/test/datagateway_api/db/endpoints/test_get_with_filters.py index a42d2038..40cb3015 100644 --- a/test/datagateway_api/db/endpoints/test_get_with_filters.py +++ b/test/datagateway_api/db/endpoints/test_get_with_filters.py @@ -1,5 +1,6 @@ import pytest +from datagateway_api.src.common.config import config from datagateway_api.src.common.constants import Constants from datagateway_api.src.common.date_handler import DateHandler @@ -12,8 +13,8 @@ def test_valid_get_with_filters( single_investigation_test_data_db, ): test_response = flask_test_app_db.get( - '/investigations?where={"title": {"like": "Title for DataGateway API' - ' Testing (DB)"}}', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}', headers=valid_db_credentials_header, ) @@ -23,8 +24,9 @@ def test_valid_no_results_get_with_filters( self, flask_test_app_db, valid_db_credentials_header, ): test_response = flask_test_app_db.get( - '/investigations?where={"title": {"eq": "This filter should cause a 404 for' - 'testing purposes..."}}', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"eq": "This filter should cause a 404 fortesting ' + 'purposes..."}}', headers=valid_db_credentials_header, ) @@ -35,8 +37,9 @@ def test_valid_get_with_filters_multiple_distinct( self, flask_test_app_db, valid_db_credentials_header, ): test_response = flask_test_app_db.get( - '/investigations?where={"title": {"like": "Title for DataGateway API' - ' Testing (DB)"}}&distinct="title"', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}' + '&distinct="title"', headers=valid_db_credentials_header, ) @@ -125,8 +128,8 @@ def test_valid_get_with_filters_related_distinct( expected_response, ): test_response = flask_test_app_db.get( - '/investigations?where={"title": {"like": "Title for DataGateway API' - ' Testing (DB)"}}' + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}' f"&distinct={distinct_param}", headers=valid_db_credentials_header, ) @@ -145,8 +148,8 @@ def test_limit_skip_merge_get_with_filters( limit_value = 2 test_response = flask_test_app_db.get( - '/investigations?where={"title": {"like": "Title for DataGateway API' - ' Testing (DB)"}}' + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Title for DataGateway API Testing (DB)"}}' f'&skip={skip_value}&limit={limit_value}&order="id ASC"', headers=valid_db_credentials_header, ) diff --git a/test/datagateway_api/db/endpoints/test_ping_db.py b/test/datagateway_api/db/endpoints/test_ping_db.py index f200cb4f..376297e4 100644 --- a/test/datagateway_api/db/endpoints/test_ping_db.py +++ b/test/datagateway_api/db/endpoints/test_ping_db.py @@ -3,6 +3,7 @@ import pytest from sqlalchemy.exc import SQLAlchemyError +from datagateway_api.src.common.config import config from datagateway_api.src.common.constants import Constants from datagateway_api.src.common.exceptions import DatabaseError from datagateway_api.src.datagateway_api.backends import create_backend @@ -10,7 +11,9 @@ class TestICATPing: def test_valid_ping(self, flask_test_app_db): - test_response = flask_test_app_db.get("/ping") + test_response = flask_test_app_db.get( + f"{config.datagateway_api.extension}/ping", + ) assert test_response.json == Constants.PING_OK_RESPONSE diff --git a/test/datagateway_api/db/endpoints/test_table_endpoints_db.py b/test/datagateway_api/db/endpoints/test_table_endpoints_db.py index ad6024d4..adf32245 100644 --- a/test/datagateway_api/db/endpoints/test_table_endpoints_db.py +++ b/test/datagateway_api/db/endpoints/test_table_endpoints_db.py @@ -1,3 +1,6 @@ +from datagateway_api.src.common.config import config + + class TestDBTableEndpoints: """ This class tests the endpoints defined in table_endpoints.py, commonly referred to @@ -11,7 +14,8 @@ def test_valid_get_facility_cycles_with_filters( isis_specific_endpoint_data_db, ): test_response = flask_test_app_db.get( - f"/instruments/{int(isis_specific_endpoint_data_db[0])}/facilitycycles", + f"{config.datagateway_api.extension}/instruments" + f"/{int(isis_specific_endpoint_data_db[0])}/facilitycycles", headers=valid_db_credentials_header, ) @@ -21,7 +25,8 @@ def test_invalid_get_facility_cycles_with_filters( self, flask_test_app_db, valid_db_credentials_header, final_instrument_id, ): test_response = flask_test_app_db.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles", headers=valid_db_credentials_header, ) @@ -34,7 +39,8 @@ def test_valid_get_facility_cycles_count_with_filters( isis_specific_endpoint_data_db, ): test_response = flask_test_app_db.get( - f"/instruments/{isis_specific_endpoint_data_db[0]}/facilitycycles/count", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data_db[0]}/facilitycycles/count", headers=valid_db_credentials_header, ) @@ -44,7 +50,8 @@ def test_invalid_get_facility_cycles_count_with_filters( self, flask_test_app_db, valid_db_credentials_header, final_instrument_id, ): test_response = flask_test_app_db.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles/count", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles/count", headers=valid_db_credentials_header, ) @@ -57,8 +64,9 @@ def test_valid_get_investigations_with_filters( isis_specific_endpoint_data_db, ): test_response = flask_test_app_db.get( - f"/instruments/{isis_specific_endpoint_data_db[0]}/facilitycycles/" - f"{isis_specific_endpoint_data_db[1].to_dict()['id']}/investigations", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data_db[0]}/facilitycycles" + f"/{isis_specific_endpoint_data_db[1].to_dict()['id']}/investigations", headers=valid_db_credentials_header, ) @@ -72,8 +80,9 @@ def test_invalid_get_investigations_with_filters( final_facilitycycle_id, ): test_response = flask_test_app_db.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles/" - f"{final_facilitycycle_id + 100}/investigations", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles" + f"/{final_facilitycycle_id + 100}/investigations", headers=valid_db_credentials_header, ) @@ -86,8 +95,10 @@ def test_valid_get_investigations_count_with_filters( isis_specific_endpoint_data_db, ): test_response = flask_test_app_db.get( - f"/instruments/{isis_specific_endpoint_data_db[0]}/facilitycycles/" - f"{isis_specific_endpoint_data_db[1].to_dict()['id']}/investigations/count", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data_db[0]}/facilitycycles" + f"/{isis_specific_endpoint_data_db[1].to_dict()['id']}" + "/investigations/count", headers=valid_db_credentials_header, ) @@ -101,8 +112,9 @@ def test_invalid_get_investigations_count_with_filters( final_facilitycycle_id, ): test_response = flask_test_app_db.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles/" - f"{final_facilitycycle_id + 100}/investigations/count", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles" + f"/{final_facilitycycle_id + 100}/investigations/count", headers=valid_db_credentials_header, ) diff --git a/test/datagateway_api/db/test_requires_session_id.py b/test/datagateway_api/db/test_requires_session_id.py index 4ebf43a7..5cca1b1b 100644 --- a/test/datagateway_api/db/test_requires_session_id.py +++ b/test/datagateway_api/db/test_requires_session_id.py @@ -1,3 +1,6 @@ +from datagateway_api.src.common.config import config + + class TestRequiresSessionID: """ This class tests the session decorator used for the database backend. The equivalent @@ -5,27 +8,32 @@ class TestRequiresSessionID: """ def test_invalid_missing_credentials(self, flask_test_app_db): - test_response = flask_test_app_db.get("/datafiles") + test_response = flask_test_app_db.get( + f"{config.datagateway_api.extension}/datafiles", + ) assert test_response.status_code == 401 def test_invalid_credentials(self, flask_test_app_db, invalid_credentials_header): test_response = flask_test_app_db.get( - "/datafiles", headers=invalid_credentials_header, + f"{config.datagateway_api.extension}/datafiles", + headers=invalid_credentials_header, ) assert test_response.status_code == 403 def test_bad_credentials(self, flask_test_app_db, bad_credentials_header): test_response = flask_test_app_db.get( - "/datafiles", headers=bad_credentials_header, + f"{config.datagateway_api.extension}/datafiles", + headers=bad_credentials_header, ) assert test_response.status_code == 403 def test_valid_credentials(self, flask_test_app_db, valid_db_credentials_header): test_response = flask_test_app_db.get( - "/datafiles?limit=0", headers=valid_db_credentials_header, + f"{config.datagateway_api.extension}/datafiles?limit=0", + headers=valid_db_credentials_header, ) assert test_response.status_code == 200 diff --git a/test/datagateway_api/icat/conftest.py b/test/datagateway_api/icat/conftest.py index 12aa98d2..a89b4bb8 100644 --- a/test/datagateway_api/icat/conftest.py +++ b/test/datagateway_api/icat/conftest.py @@ -149,7 +149,8 @@ def isis_specific_endpoint_data(icat_client): @pytest.fixture() def final_instrument_id(flask_test_app_icat, valid_icat_credentials_header): final_instrument_result = flask_test_app_icat.get( - '/instruments/findone?order="id DESC"', headers=valid_icat_credentials_header, + f'{config.datagateway_api.extension}/instruments/findone?order="id DESC"', + headers=valid_icat_credentials_header, ) return final_instrument_result.json["id"] @@ -157,7 +158,7 @@ def final_instrument_id(flask_test_app_icat, valid_icat_credentials_header): @pytest.fixture() def final_facilitycycle_id(flask_test_app_icat, valid_icat_credentials_header): final_facilitycycle_result = flask_test_app_icat.get( - '/facilitycycles/findone?order="id DESC"', + f'{config.datagateway_api.extension}/facilitycycles/findone?order="id DESC"', headers=valid_icat_credentials_header, ) return final_facilitycycle_result.json["id"] @@ -180,7 +181,8 @@ def remove_test_created_investigation_data( yield created_test_data = flask_test_app_icat.get( - '/investigations?where={"name":{"like":' + f"{config.datagateway_api.extension}/investigations?where=" + '{"name":{"like":' f'"{TestICATCreateData.investigation_name_prefix}"' "}}", headers=valid_icat_credentials_header, @@ -192,6 +194,6 @@ def remove_test_created_investigation_data( for investigation_id in investigation_ids: flask_test_app_icat.delete( - f"/investigations/{investigation_id}", + f"{config.datagateway_api.extension}/investigations/{investigation_id}", headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_count_with_filters_icat.py b/test/datagateway_api/icat/endpoints/test_count_with_filters_icat.py index 8b112c8e..e37b81a7 100644 --- a/test/datagateway_api/icat/endpoints/test_count_with_filters_icat.py +++ b/test/datagateway_api/icat/endpoints/test_count_with_filters_icat.py @@ -1,5 +1,7 @@ import pytest +from datagateway_api.src.common.config import config + class TestICATCountWithFilters: @pytest.mark.parametrize( @@ -28,7 +30,7 @@ def test_valid_count_with_filters( expected_result, ): test_response = flask_test_app_icat.get( - f"/investigations/count{query_params}", + f"{config.datagateway_api.extension}/investigations/count{query_params}", headers=valid_icat_credentials_header, ) @@ -38,8 +40,9 @@ def test_valid_no_results_count_with_filters( self, flask_test_app_icat, valid_icat_credentials_header, ): test_response = flask_test_app_icat.get( - '/investigations/count?where={"title": {"like": "This filter should cause 0' - ' results to be found for testing purposes..."}}', + f"{config.datagateway_api.extension}/investigations/count?where=" + '{"title": {"like": "This filter should cause 0results to be found ' + 'for testing purposes..."}}', headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_create_icat.py b/test/datagateway_api/icat/endpoints/test_create_icat.py index 140f0f77..57b3622f 100644 --- a/test/datagateway_api/icat/endpoints/test_create_icat.py +++ b/test/datagateway_api/icat/endpoints/test_create_icat.py @@ -1,5 +1,6 @@ import pytest +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -27,7 +28,7 @@ def test_valid_create_data( ] test_response = flask_test_app_icat.post( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=create_investigations_json, ) @@ -62,7 +63,7 @@ def test_valid_boundary_create_data( } test_response = flask_test_app_icat.post( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=create_investigation_json, ) @@ -86,7 +87,7 @@ def test_invalid_create_data( } test_response = flask_test_app_icat.post( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=invalid_request_body, ) @@ -112,7 +113,7 @@ def test_invalid_existing_data_create( } test_response = flask_test_app_icat.post( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=existing_object_json, ) @@ -141,11 +142,14 @@ def test_valid_rollback_behaviour( ] create_response = flask_test_app_icat.post( - "/investigations", headers=valid_icat_credentials_header, json=request_body, + f"{config.datagateway_api.extension}/investigations", + headers=valid_icat_credentials_header, + json=request_body, ) get_response = flask_test_app_icat.get( - '/investigations?where={"title": {"eq": "' + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"eq": "' f'{request_body[0]["title"]}' '"}}', headers=valid_icat_credentials_header, diff --git a/test/datagateway_api/icat/endpoints/test_delete_by_id_icat.py b/test/datagateway_api/icat/endpoints/test_delete_by_id_icat.py index 942fe0bb..e7dcb345 100644 --- a/test/datagateway_api/icat/endpoints/test_delete_by_id_icat.py +++ b/test/datagateway_api/icat/endpoints/test_delete_by_id_icat.py @@ -1,3 +1,6 @@ +from datagateway_api.src.common.config import config + + class TestDeleteByID: def test_valid_delete_with_id( self, @@ -6,7 +9,8 @@ def test_valid_delete_with_id( single_investigation_test_data, ): test_response = flask_test_app_icat.delete( - f'/investigations/{single_investigation_test_data[0]["id"]}', + f"{config.datagateway_api.extension}/investigations" + f'/{single_investigation_test_data[0]["id"]}', headers=valid_icat_credentials_header, ) @@ -18,14 +22,15 @@ def test_invalid_delete_with_id( """Request with a non-existent ID""" final_investigation_result = flask_test_app_icat.get( - '/investigations/findone?order="id DESC"', + f"{config.datagateway_api.extension}/investigations" + '/findone?order="id DESC"', headers=valid_icat_credentials_header, ) test_data_id = final_investigation_result.json["id"] # Adding 100 onto the ID to the most recent result should ensure a 404 test_response = flask_test_app_icat.delete( - f"/investigations/{test_data_id + 100}", + f"{config.datagateway_api.extension}/investigations/{test_data_id + 100}", headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_findone_icat.py b/test/datagateway_api/icat/endpoints/test_findone_icat.py index 66b149b3..02190d87 100644 --- a/test/datagateway_api/icat/endpoints/test_findone_icat.py +++ b/test/datagateway_api/icat/endpoints/test_findone_icat.py @@ -1,3 +1,4 @@ +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -9,8 +10,9 @@ def test_valid_findone_with_filters( single_investigation_test_data, ): test_response = flask_test_app_icat.get( - '/investigations/findone?where={"title": {"like": "Test data for the Python' - ' ICAT Backend on DataGateway API"}}', + f"{config.datagateway_api.extension}/investigations/findone?where=" + '{"title": {"like": "Test data for the Python ICAT Backend on ' + 'DataGateway API"}}', headers=valid_icat_credentials_header, ) response_json = prepare_icat_data_for_assertion([test_response.json]) @@ -21,8 +23,9 @@ def test_valid_no_results_findone_with_filters( self, flask_test_app_icat, valid_icat_credentials_header, ): test_response = flask_test_app_icat.get( - '/investigations/findone?where={"title": {"eq": "This filter should cause a' - '404 for testing purposes..."}}', + f"{config.datagateway_api.extension}/investigations/findone?where=" + '{"title": {"eq": "This filter should cause a404 for testing ' + 'purposes..."}}', headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_get_by_id_icat.py b/test/datagateway_api/icat/endpoints/test_get_by_id_icat.py index 94238a8f..56babbaa 100644 --- a/test/datagateway_api/icat/endpoints/test_get_by_id_icat.py +++ b/test/datagateway_api/icat/endpoints/test_get_by_id_icat.py @@ -1,3 +1,4 @@ +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -10,14 +11,16 @@ def test_valid_get_with_id( ): # Need to identify the ID given to the test data investigation_data = flask_test_app_icat.get( - '/investigations?where={"title": {"like": "Test data for the Python ICAT' - ' Backend on DataGateway API"}}', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Test data for the Python ICAT Backend on ' + 'DataGateway API"}}', headers=valid_icat_credentials_header, ) test_data_id = investigation_data.json[0]["id"] test_response = flask_test_app_icat.get( - f"/investigations/{test_data_id}", headers=valid_icat_credentials_header, + f"{config.datagateway_api.extension}/investigations/{test_data_id}", + headers=valid_icat_credentials_header, ) # Get with ID gives a dictionary response (only ever one result from that kind # of request), so list around json is required for the call @@ -31,14 +34,15 @@ def test_invalid_get_with_id( """Request with a non-existent ID""" final_investigation_result = flask_test_app_icat.get( - '/investigations/findone?order="id DESC"', + f"{config.datagateway_api.extension}/investigations/findone?order=" + '"id DESC"', headers=valid_icat_credentials_header, ) test_data_id = final_investigation_result.json["id"] # Adding 100 onto the ID to the most recent result should ensure a 404 test_response = flask_test_app_icat.get( - f"/investigations/{test_data_id + 100}", + f"{config.datagateway_api.extension}/investigations/{test_data_id + 100}", headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_get_with_filters_icat.py b/test/datagateway_api/icat/endpoints/test_get_with_filters_icat.py index 951c6e71..16be90c3 100644 --- a/test/datagateway_api/icat/endpoints/test_get_with_filters_icat.py +++ b/test/datagateway_api/icat/endpoints/test_get_with_filters_icat.py @@ -1,5 +1,6 @@ import pytest +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -11,8 +12,9 @@ def test_valid_get_with_filters( single_investigation_test_data, ): test_response = flask_test_app_icat.get( - '/investigations?where={"title": {"like": "Test data for the Python ICAT' - ' Backend on DataGateway API"}}', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Test data for the Python ICAT Backend on ' + 'DataGateway API"}}', headers=valid_icat_credentials_header, ) response_json = prepare_icat_data_for_assertion(test_response.json) @@ -23,8 +25,9 @@ def test_valid_no_results_get_with_filters( self, flask_test_app_icat, valid_icat_credentials_header, ): test_response = flask_test_app_icat.get( - '/investigations?where={"title": {"eq": "This filter should cause a 404 for' - 'testing purposes..."}}', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"eq": "This filter should cause a 404 fortesting ' + 'purposes..."}}', headers=valid_icat_credentials_header, ) @@ -35,8 +38,9 @@ def test_valid_get_with_filters_distinct( self, flask_test_app_icat, valid_icat_credentials_header, ): test_response = flask_test_app_icat.get( - '/investigations?where={"title": {"like": "Test data for the Python ICAT' - ' Backend on DataGateway API"}}&distinct="title"', + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Test data for the Python ICAT Backend on ' + 'DataGateway API"}}&distinct="title"', headers=valid_icat_credentials_header, ) @@ -58,8 +62,9 @@ def test_limit_skip_merge_get_with_filters( limit_value = 2 test_response = flask_test_app_icat.get( - '/investigations?where={"title": {"like": "Test data for the Python ICAT' - ' Backend on DataGateway API"}}' + f"{config.datagateway_api.extension}/investigations?where=" + '{"title": {"like": "Test data for the Python ICAT Backend on ' + 'DataGateway API"}}' f'&skip={skip_value}&limit={limit_value}&order="id ASC"', headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_ping_icat.py b/test/datagateway_api/icat/endpoints/test_ping_icat.py index d9030bcc..950342f7 100644 --- a/test/datagateway_api/icat/endpoints/test_ping_icat.py +++ b/test/datagateway_api/icat/endpoints/test_ping_icat.py @@ -3,6 +3,7 @@ from icat.exception import ICATError import pytest +from datagateway_api.src.common.config import config from datagateway_api.src.common.constants import Constants from datagateway_api.src.common.exceptions import PythonICATError from datagateway_api.src.datagateway_api.backends import create_backend @@ -11,7 +12,9 @@ class TestICATPing: def test_valid_ping(self, flask_test_app_icat): - test_response = flask_test_app_icat.get("/ping") + test_response = flask_test_app_icat.get( + f"{config.datagateway_api.extension}/ping", + ) assert test_response.json == Constants.PING_OK_RESPONSE diff --git a/test/datagateway_api/icat/endpoints/test_table_endpoints_icat.py b/test/datagateway_api/icat/endpoints/test_table_endpoints_icat.py index 4f2a7da7..66b04da7 100644 --- a/test/datagateway_api/icat/endpoints/test_table_endpoints_icat.py +++ b/test/datagateway_api/icat/endpoints/test_table_endpoints_icat.py @@ -1,3 +1,4 @@ +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -14,7 +15,8 @@ def test_valid_get_facility_cycles_with_filters( isis_specific_endpoint_data, ): test_response = flask_test_app_icat.get( - f"/instruments/{isis_specific_endpoint_data[0]}/facilitycycles", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data[0]}/facilitycycles", headers=valid_icat_credentials_header, ) @@ -26,7 +28,8 @@ def test_invalid_get_facility_cycles_with_filters( self, flask_test_app_icat, valid_icat_credentials_header, final_instrument_id, ): test_response = flask_test_app_icat.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles", headers=valid_icat_credentials_header, ) @@ -39,7 +42,8 @@ def test_valid_get_facility_cycles_count_with_filters( isis_specific_endpoint_data, ): test_response = flask_test_app_icat.get( - f"/instruments/{isis_specific_endpoint_data[0]}/facilitycycles/count", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data[0]}/facilitycycles/count", headers=valid_icat_credentials_header, ) @@ -49,7 +53,8 @@ def test_invalid_get_facility_cycles_count_with_filters( self, flask_test_app_icat, valid_icat_credentials_header, final_instrument_id, ): test_response = flask_test_app_icat.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles/count", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles/count", headers=valid_icat_credentials_header, ) @@ -62,8 +67,9 @@ def test_valid_get_investigations_with_filters( isis_specific_endpoint_data, ): test_response = flask_test_app_icat.get( - f"/instruments/{isis_specific_endpoint_data[0]}/facilitycycles/" - f"{isis_specific_endpoint_data[2]}/investigations", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data[0]}/facilitycycles" + f"/{isis_specific_endpoint_data[2]}/investigations", headers=valid_icat_credentials_header, ) @@ -79,8 +85,9 @@ def test_invalid_get_investigations_with_filters( final_facilitycycle_id, ): test_response = flask_test_app_icat.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles/" - f"{final_facilitycycle_id + 100}/investigations", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles" + f"/{final_facilitycycle_id + 100}/investigations", headers=valid_icat_credentials_header, ) @@ -93,8 +100,9 @@ def test_valid_get_investigations_count_with_filters( isis_specific_endpoint_data, ): test_response = flask_test_app_icat.get( - f"/instruments/{isis_specific_endpoint_data[0]}/facilitycycles/" - f"{isis_specific_endpoint_data[2]}/investigations/count", + f"{config.datagateway_api.extension}/instruments" + f"/{isis_specific_endpoint_data[0]}/facilitycycles" + f"/{isis_specific_endpoint_data[2]}/investigations/count", headers=valid_icat_credentials_header, ) @@ -108,8 +116,9 @@ def test_invalid_get_investigations_count_with_filters( final_facilitycycle_id, ): test_response = flask_test_app_icat.get( - f"/instruments/{final_instrument_id + 100}/facilitycycles/" - f"{final_facilitycycle_id + 100}/investigations/count", + f"{config.datagateway_api.extension}/instruments" + f"/{final_instrument_id + 100}/facilitycycles" + f"/{final_facilitycycle_id + 100}/investigations/count", headers=valid_icat_credentials_header, ) diff --git a/test/datagateway_api/icat/endpoints/test_update_by_id_icat.py b/test/datagateway_api/icat/endpoints/test_update_by_id_icat.py index e6e100d0..6e498936 100644 --- a/test/datagateway_api/icat/endpoints/test_update_by_id_icat.py +++ b/test/datagateway_api/icat/endpoints/test_update_by_id_icat.py @@ -1,3 +1,4 @@ +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -16,7 +17,8 @@ def test_valid_update_with_id( single_investigation_test_data[0].update(update_data_json) test_response = flask_test_app_icat.patch( - f"/investigations/{single_investigation_test_data[0]['id']}", + f"{config.datagateway_api.extension}/investigations" + f"/{single_investigation_test_data[0]['id']}", headers=valid_icat_credentials_header, json=update_data_json, ) @@ -38,7 +40,8 @@ def test_invalid_update_with_id( } test_response = flask_test_app_icat.patch( - f"/investigations/{single_investigation_test_data[0]['id']}", + f"{config.datagateway_api.extension}/investigations" + f"/{single_investigation_test_data[0]['id']}", headers=valid_icat_credentials_header, json=invalid_update_json, ) diff --git a/test/datagateway_api/icat/endpoints/test_update_multiple_icat.py b/test/datagateway_api/icat/endpoints/test_update_multiple_icat.py index 3de4b621..2ea0c958 100644 --- a/test/datagateway_api/icat/endpoints/test_update_multiple_icat.py +++ b/test/datagateway_api/icat/endpoints/test_update_multiple_icat.py @@ -1,5 +1,6 @@ import pytest +from datagateway_api.src.common.config import config from test.datagateway_api.icat.test_query import prepare_icat_data_for_assertion @@ -27,7 +28,7 @@ def test_valid_multiple_update_data( update_data_list.append(update_entity) test_response = flask_test_app_icat.patch( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=update_data_list, ) @@ -55,7 +56,7 @@ def test_valid_boundary_update_data( single_investigation_test_data[0]["summary"] = expected_summary test_response = flask_test_app_icat.patch( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=update_data_json, ) @@ -77,7 +78,7 @@ def test_invalid_missing_update_data( } test_response = flask_test_app_icat.patch( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=update_data_json, ) @@ -105,7 +106,7 @@ def test_invalid_attribute_update( } test_response = flask_test_app_icat.patch( - "/investigations", + f"{config.datagateway_api.extension}/investigations", headers=valid_icat_credentials_header, json=invalid_update_data_json, ) @@ -137,14 +138,17 @@ def test_valid_rollback_behaviour( ] update_response = flask_test_app_icat.patch( - "/investigations", headers=valid_icat_credentials_header, json=request_body, + f"{config.datagateway_api.extension}/investigations", + headers=valid_icat_credentials_header, + json=request_body, ) # Get first entity that would've been successfully updated to ensure the changes # were rolled back when the ICATValidationError occurred for the second entity # in the request body get_response = flask_test_app_icat.get( - f"/investigations/{multiple_investigation_test_data[0]['id']}", + f"{config.datagateway_api.extension}/investigations" + f"/{multiple_investigation_test_data[0]['id']}", headers=valid_icat_credentials_header, ) get_response_json = prepare_icat_data_for_assertion([get_response.json]) diff --git a/test/datagateway_api/icat/test_session_handling.py b/test/datagateway_api/icat/test_session_handling.py index 095168fc..f5f771dc 100644 --- a/test/datagateway_api/icat/test_session_handling.py +++ b/test/datagateway_api/icat/test_session_handling.py @@ -18,7 +18,8 @@ def test_get_valid_session_details( self, flask_test_app_icat, valid_icat_credentials_header, ): session_details = flask_test_app_icat.get( - "/sessions", headers=valid_icat_credentials_header, + f"{config.datagateway_api.extension}/sessions", + headers=valid_icat_credentials_header, ) session_expiry_datetime = DateHandler.str_to_datetime_object( @@ -47,22 +48,26 @@ def test_get_invalid_session_details( self, bad_credentials_header, flask_test_app_icat, ): session_details = flask_test_app_icat.get( - "/sessions", headers=bad_credentials_header, + f"{config.datagateway_api.extension}/sessions", + headers=bad_credentials_header, ) assert session_details.status_code == 403 def test_refresh_session(self, valid_icat_credentials_header, flask_test_app_icat): pre_refresh_session_details = flask_test_app_icat.get( - "/sessions", headers=valid_icat_credentials_header, + f"{config.datagateway_api.extension}/sessions", + headers=valid_icat_credentials_header, ) refresh_session = flask_test_app_icat.put( - "/sessions", headers=valid_icat_credentials_header, + f"{config.datagateway_api.extension}/sessions", + headers=valid_icat_credentials_header, ) post_refresh_session_details = flask_test_app_icat.get( - "/sessions", headers=valid_icat_credentials_header, + f"{config.datagateway_api.extension}/sessions", + headers=valid_icat_credentials_header, ) assert refresh_session.status_code == 200 @@ -96,7 +101,9 @@ def test_refresh_session(self, valid_icat_credentials_header, flask_test_app_ica def test_valid_login( self, flask_test_app_icat, icat_client, icat_query, request_body, ): - login_response = flask_test_app_icat.post("/sessions", json=request_body) + login_response = flask_test_app_icat.post( + f"{config.datagateway_api.extension}/sessions", json=request_body, + ) icat_client.sessionId = login_response.json["sessionID"] icat_query.setAggregate("COUNT") @@ -127,7 +134,9 @@ def test_valid_login( def test_invalid_login( self, flask_test_app_icat, request_body, expected_response_code, ): - login_response = flask_test_app_icat.post("/sessions", json=request_body) + login_response = flask_test_app_icat.post( + f"{config.datagateway_api.extension}/sessions", json=request_body, + ) assert login_response.status_code == expected_response_code @@ -148,13 +157,16 @@ def test_valid_logout(self, flask_test_app_icat): ) creds_header = {"Authorization": f"Bearer {client.sessionId}"} - logout_response = flask_test_app_icat.delete("/sessions", headers=creds_header) + logout_response = flask_test_app_icat.delete( + f"{config.datagateway_api.extension}/sessions", headers=creds_header, + ) assert logout_response.status_code == 200 def test_invalid_logout(self, bad_credentials_header, flask_test_app_icat): logout_response = flask_test_app_icat.delete( - "/sessions", headers=bad_credentials_header, + f"{config.datagateway_api.extension}/sessions", + headers=bad_credentials_header, ) assert logout_response.status_code == 403 diff --git a/test/test_endpoint_rules.py b/test/test_endpoint_rules.py index d0599020..54e141c4 100644 --- a/test/test_endpoint_rules.py +++ b/test/test_endpoint_rules.py @@ -1,5 +1,6 @@ import pytest +from datagateway_api.src.common.config import config from datagateway_api.src.resources.entities.entity_endpoint_dict import endpoints @@ -22,7 +23,10 @@ def test_entity_endpoints(self, flask_test_app, endpoint_ending, expected_method endpoint_found = False for rule in flask_test_app.url_map.iter_rules(): - if f"/{endpoint_entity.lower()}{endpoint_ending}" == rule.rule: + if ( + f"{config.datagateway_api.extension}" + f"/{endpoint_entity.lower()}{endpoint_ending}" == rule.rule + ): endpoint_found = True for method_name in expected_methods: @@ -35,71 +39,87 @@ def test_entity_endpoints(self, flask_test_app, endpoint_ending, expected_method @pytest.mark.parametrize( "endpoint_name, expected_methods", [ - pytest.param("/sessions", ["DELETE", "GET", "POST", "PUT"], id="sessions"), pytest.param( - "/instruments//facilitycycles", + f"{config.datagateway_api.extension}/sessions", + ["DELETE", "GET", "POST", "PUT"], + id="sessions", + ), + pytest.param( + f"{config.datagateway_api.extension}/instruments/" + f"/facilitycycles", ["GET"], id="ISIS instrument's facility cycles", ), pytest.param( - "/instruments//facilitycycles/count", + f"{config.datagateway_api.extension}/instruments/" + f"/facilitycycles/count", ["GET"], id="count ISIS instrument's facility cycles", ), pytest.param( - "/instruments//facilitycycles/" - "/investigations", + f"{config.datagateway_api.extension}/instruments/" + "/facilitycycles//investigations", ["GET"], id="ISIS investigations", ), pytest.param( - "/instruments//facilitycycles/" - "/investigations/count", + f"{config.datagateway_api.extension}/instruments/" + f"/facilitycycles//investigations/count", ["GET"], id="count ISIS investigations", ), pytest.param( - "/search_api/datasets", ["GET"], id="Search API search datasets", + f"{config.search_api.extension}/datasets", + ["GET"], + id="Search API search datasets", ), pytest.param( - "/search_api/documents", ["GET"], id="Search API search documents", + f"{config.search_api.extension}/documents", + ["GET"], + id="Search API search documents", ), pytest.param( - "/search_api/instruments", ["GET"], id="Search API search instruments", + f"{config.search_api.extension}/instruments", + ["GET"], + id="Search API search instruments", ), pytest.param( - "/search_api/datasets/", + f"{config.search_api.extension}/datasets/", ["GET"], id="Search API get single dataset", ), pytest.param( - "/search_api/documents/", + f"{config.search_api.extension}/documents/", ["GET"], id="Search API get single document", ), pytest.param( - "/search_api/instruments/", + f"{config.search_api.extension}/instruments/", ["GET"], id="Search API get single instrument", ), pytest.param( - "/search_api/datasets/count", ["GET"], id="Search API dataset count", + f"{config.search_api.extension}/datasets/count", + ["GET"], + id="Search API dataset count", ), pytest.param( - "/search_api/documents/count", ["GET"], id="Search API document count", + f"{config.search_api.extension}/documents/count", + ["GET"], + id="Search API document count", ), pytest.param( - "/search_api/instruments/count", + f"{config.search_api.extension}/instruments/count", ["GET"], id="Search API instrument count", ), pytest.param( - "/search_api/datasets//files", + f"{config.search_api.extension}/datasets//files", ["GET"], id="Search API get dataset files", ), pytest.param( - "/search_api/datasets//files/count", + f"{config.search_api.extension}/datasets//files/count", ["GET"], id="Search API dataset files count", ),