diff --git a/testing/registrar_test.py b/testing/registrar_test.py index 48436d4ea82b26adee54de22afd6580ca2a51bb5..8fc84fb9be616b839580d87802481b5ea7f4a6c6 100644 --- a/testing/registrar_test.py +++ b/testing/registrar_test.py @@ -3,7 +3,9 @@ import csv import pytest import psycopg2 +import paramiko from dotenv import load_dotenv +from xml.etree import ElementTree @pytest.fixture(scope="session") @@ -28,6 +30,14 @@ def identifiers(): yield csv.reader(f) +@pytest.fixture +def sftp_connection(): + + transport = paramiko.Transport(('localhost',2222)) + transport.connect(username='eox', password='password') + with paramiko.SFTPClient.from_transport(transport) as sftp: + yield sftp + def query_eo_object(connection, eo_id): query = f"SELECT identifier FROM coverages_eoobject WHERE identifier = '{eo_id}';" with connection.cursor() as cursor: @@ -39,3 +49,34 @@ def test_db_name(connection, identifiers): for row in identifiers: identifier = row[0].split('/')[4] query_eo_object(connection, identifier) + + +def compare_links(sftp, product_xml, product): + + report= sftp.file("data/to/panda/%s" % product_xml) + + + xml_file= report.read() + root = ElementTree.fromstring(xml_file.decode('utf-8')) + + urls = root.findall('{http://www.telespazio.com/CSCDA/CDD/PDAS}URL') + wms_link = urls[0].find('{http://www.telespazio.com/CSCDA/CDD/PDAS}URL').text + wcs_link = urls[1].find('{http://www.telespazio.com/CSCDA/CDD/PDAS}URL').text + + wms_capabilities = 'emg.pass.copernicus.eu/ows?service=wms&request=GetCapabilities&&cql=identifier=' + wcs_capabilities = 'emg.pass.copernicus.eu/ows?service=wcs&request=GetCapabilities&&cql=identifier=' + expected_wms_link = '%s"%s"' % (wms_capabilities, product) + expected_wcs_link = '%s"%s"' % (wcs_capabilities, product) + assert expected_wms_link.replace('&&', '&') == wms_link + + assert expected_wcs_link.replace('&&', '&') == wcs_link + +def test_reporting(sftp_connection, identifiers): + report_list = sftp_connection.listdir('data/to/panda/') + assert len(report_list) > 0 + for item in report_list: + for row in identifiers: + identifier = row[0].split('/')[4] + + if identifier in item: + compare_links(sftp_connection, item, identifier) \ No newline at end of file diff --git a/testing/registrar_test.sh b/testing/registrar_test.sh index 536d113dfcab5446ab77c3f27b4d480922aca55f..3c26bc87dea352ee81cea9b046f0ff2602de11f6 100755 --- a/testing/registrar_test.sh +++ b/testing/registrar_test.sh @@ -11,25 +11,6 @@ while read product; do --reporting-dir "/mnt/reports" \ <<<$product - IFS='/' read -ra ADDR <<< "$product" - docker exec $(docker ps -qf "name=emg-pvs_registrar") bash -c 'ls /mnt/reports/. | grep $ADDR[4]' >> ${ADDR[4]}.csv - - - while IFS="" read -r name - do - docker exec $(docker ps -qf "name=emg-pvs_registrar") cat /mnt/reports/$name > temp.xml - tail -n +2 temp.xml > ${ADDR[4]}.xml - done < ${ADDR[4]}.csv - - rm ${ADDR[4]}.csv temp.xml - done < "$product_list_file" pytest #-s registrar_test.py --name $product_list_file - - -# Remove the created xml reports -while read product; do - IFS='/' read -ra ADDR <<< "$product" - rm ${ADDR[4]}.xml -done < $product_list_file diff --git a/testing/requirements.txt b/testing/requirements.txt index 43d82cd782b2b2d1884b394390eaf0abab8aaeac..b6db4b77a42837295c7f2c82dfad95859ea34b56 100644 --- a/testing/requirements.txt +++ b/testing/requirements.txt @@ -1,5 +1,6 @@ pytest psycopg2 python-dotenv +paramiko # python-swiftclient # python-keystoneclient \ No newline at end of file