diff --git a/mapping_provider/api/map.py b/mapping_provider/api/map.py index 79c64800776e531733cac1065f151d93cb315837..924ffa595dc4db94c15b6be297d3746466a132d0 100644 --- a/mapping_provider/api/map.py +++ b/mapping_provider/api/map.py @@ -155,6 +155,7 @@ INPROV_SERVICE_LIST_SCHEMA = { 'items': {'$ref': '#/definitions/service'} } +INPROV_API_URL_TODO = 'https://test-inprov01.geant.org' @router.get("/sites") def get_sites() -> SiteList: """ @@ -164,7 +165,7 @@ def get_sites() -> SiteList: # TODO: catch/handle the usual exceptions rv = requests.get( - 'https://test-inprov01.geant.org/map/sites', + f'{INPROV_API_URL_TODO}/map/sites', headers={'Accept': 'application/json'}) rv.raise_for_status() site_list_json = rv.json() @@ -182,7 +183,7 @@ def get_routers() -> RouterList: # TODO: catch/handle the usual exceptions rv = requests.get( - 'https://test-inprov01.geant.org/map/routers', + f'{INPROV_API_URL_TODO}/map/routers', headers={'Accept': 'application/json'}) rv.raise_for_status() router_list_json = rv.json() @@ -200,7 +201,7 @@ def get_trunks() -> ServiceList: # TODO: catch/handle the usual exceptions rv = requests.get( - 'https://test-inprov01.geant.org/map/services/IP TRUNK', + f'{INPROV_API_URL_TODO}/map/services/IP TRUNK', headers={'Accept': 'application/json'}) rv.raise_for_status() service_list_json = rv.json() diff --git a/test/data/inprov-routers.json b/test/data/inprov-routers.json new file mode 100644 index 0000000000000000000000000000000000000000..a40dfe2c20a7f25005d3099e1ed92c664e6f7544 --- /dev/null +++ b/test/data/inprov-routers.json @@ -0,0 +1,246 @@ +[ + { + "fqdn": "qfx.par.fr.geant.net", + "site": "PAR" + }, + { + "fqdn": "mx2.lis.pt.geant.net", + "site": "LIS" + }, + { + "fqdn": "mx1.vie.at.geant.net", + "site": "VIE" + }, + { + "fqdn": "qfx.fra.de.geant.net", + "site": "FRA" + }, + { + "fqdn": "qfx.lon2.uk.geant.net", + "site": "LON2" + }, + { + "fqdn": "mx1.poz.pl.geant.net", + "site": "POZ" + }, + { + "fqdn": "rt1.bil.es.geant.net", + "site": "BIL" + }, + { + "fqdn": "rt1.chi.md.geant.net", + "site": "CHI" + }, + { + "fqdn": "rt0.ath2.gr.geant.net", + "site": "ATH2" + }, + { + "fqdn": "rt1.ams.nl.geant.net", + "site": "AMS" + }, + { + "fqdn": "rt1.buc.ro.geant.net", + "site": "BUC" + }, + { + "fqdn": "rt1.bra.sk.geant.net", + "site": "BRA" + }, + { + "fqdn": "rt0.lon.uk.geant.net", + "site": "LON" + }, + { + "fqdn": "mx2.zag.hr.geant.net", + "site": "ZAG" + }, + { + "fqdn": "srx1.am.office.geant.net", + "site": "AMO" + }, + { + "fqdn": "mx1.bud.hu.geant.net", + "site": "BUD" + }, + { + "fqdn": "mx1.buc.ro.geant.net", + "site": "BUC" + }, + { + "fqdn": "rt0.mil2.it.geant.net", + "site": "MIL2" + }, + { + "fqdn": "rt0.mar.fr.geant.net", + "site": "MAR" + }, + { + "fqdn": "mx1.lon2.uk.geant.net", + "site": "LON2" + }, + { + "fqdn": "mx1.gen.ch.geant.net", + "site": "GEN" + }, + { + "fqdn": "mx1.mad.es.geant.net", + "site": "MAD" + }, + { + "fqdn": "mx1.par.fr.geant.net", + "site": "PAR" + }, + { + "fqdn": "mx1.lon.uk.geant.net", + "site": "LON" + }, + { + "fqdn": "srx1.ch.office.geant.net", + "site": "CCH" + }, + { + "fqdn": "srx2.am.office.geant.net", + "site": "AMO" + }, + { + "fqdn": "srx2.ch.office.geant.net", + "site": "CCH" + }, + { + "fqdn": "rt1.kie.ua.geant.net", + "site": "KIE" + }, + { + "fqdn": "rt1.fra.de.geant.net", + "site": "FRA" + }, + { + "fqdn": "rt1.mar.fr.geant.net", + "site": "MAR" + }, + { + "fqdn": "rt1.mil2.it.geant.net", + "site": "MIL2" + }, + { + "fqdn": "rt1.por.pt.geant.net", + "site": "POR" + }, + { + "fqdn": "rt1.pra.cz.geant.net", + "site": "PRA" + }, + { + "fqdn": "rt0.poz.pl.geant.net", + "site": "POZ" + }, + { + "fqdn": "rt2.ams.nl.geant.net", + "site": "AMS" + }, + { + "fqdn": "rt0.gen.ch.geant.net", + "site": "GEN" + }, + { + "fqdn": "rt2.kie.ua.geant.net", + "site": "KIE" + }, + { + "fqdn": "rt2.chi.md.geant.net", + "site": "CHI" + }, + { + "fqdn": "rt0.zag.hr.geant.net", + "site": "ZAG" + }, + { + "fqdn": "rt2.bra.sk.geant.net", + "site": "BRA" + }, + { + "fqdn": "rt0.rig.lv.geant.net", + "site": "RIG" + }, + { + "fqdn": "rt0.mad.es.geant.net", + "site": "MAD" + }, + { + "fqdn": "rt0.kau.lt.geant.net", + "site": "KAU" + }, + { + "fqdn": "rt0.the.gr.geant.net", + "site": "THE" + }, + { + "fqdn": "rt0.buc.ro.geant.net", + "site": "BUC" + }, + { + "fqdn": "rt0.tar.ee.geant.net", + "site": "TAR" + }, + { + "fqdn": "rt0.par.fr.geant.net", + "site": "PAR" + }, + { + "fqdn": "rt0.bud.hu.geant.net", + "site": "BUD" + }, + { + "fqdn": "rt0.bra.sk.geant.net", + "site": "BRA" + }, + { + "fqdn": "rt0.pra.cz.geant.net", + "site": "PRA" + }, + { + "fqdn": "rt0.lon2.uk.geant.net", + "site": "LON2" + }, + { + "fqdn": "rt0.por.pt.geant.net", + "site": "POR" + }, + { + "fqdn": "rt0.vie.at.geant.net", + "site": "VIE" + }, + { + "fqdn": "rt0.cor.ie.geant.net", + "site": "COR" + }, + { + "fqdn": "rt0.dub.ie.geant.net", + "site": "DUB" + }, + { + "fqdn": "rt0.bru.be.geant.net", + "site": "BRU" + }, + { + "fqdn": "rt0.fra.de.geant.net", + "site": "FRA" + }, + { + "fqdn": "rt0.ams.nl.geant.net", + "site": "AMS" + }, + { + "fqdn": "rt0.lju.si.geant.net", + "site": "LJU" + }, + { + "fqdn": "rt0.sof.bg.geant.net", + "site": "SOF" + }, + { + "fqdn": "rt0.ham.de.geant.net", + "site": "HAM" + } +] diff --git a/test/data/inprov-services.json b/test/data/inprov-services.json new file mode 100644 index 0000000000000000000000000000000000000000..017bd5b7669250c6e94252f961d55f119c58fdf4 --- /dev/null +++ b/test/data/inprov-services.json @@ -0,0 +1,284 @@ +[ + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-7.0" + } + ], + "name": "BIL-DUB-IPTRUNK", + "overlays": { + "speed": 536870912000 + }, + "sid": "LGS-00044", + "type": "IP TRUNK" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-1" + } + ], + "name": "LONDON-LONDON-LAG-005(UNKNOWN)", + "overlays": { + "speed": 214748364800 + }, + "sid": "GA-000101", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-3" + } + ], + "name": "LONDON-LONDON-LAG-003(UNKNOWN)", + "overlays": { + "speed": 429496729600 + }, + "sid": "LGA-000222", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-2" + } + ], + "name": "ATHENS-LONDON-LAG-001(UNKNOWN)", + "overlays": { + "speed": 429496729600 + }, + "sid": "GA-000662", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "addresses": { + "v4": "62.40.98.60/31", + "v6": "2001:798:cc::65/126" + }, + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-1.0" + } + ], + "name": "LON-LON-IPTRUNK", + "overlays": { + "speed": 214748364800 + }, + "sid": "GS-00010", + "type": "IP TRUNK" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-3.0" + } + ], + "name": "DUB-LON-IPTRUNK", + "overlays": { + "speed": 429496729600 + }, + "sid": "LGS-00022", + "type": "IP TRUNK" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-8" + } + ], + "name": "AMSTERDAM-LONDON-LAG-001(UNKNOWN)", + "overlays": { + "speed": 429496729600 + }, + "sid": "LGA-00771", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-20" + } + ], + "name": "JISC-AP2-LAG", + "overlays": { + "speed": 10737418240 + }, + "sid": "GA-01760", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-20.2501" + } + ], + "name": "JISC-AP2", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-00480", + "type": "GEANT IP" + }, + { + "endpoints": [ + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "lag-20.2522" + } + ], + "name": "JISC-AP2-LHCONE", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-02474", + "type": "L3-VPN" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-1" + } + ], + "name": "UNKNOWN_NOKIA-UNKNOWN_NOKIA-LAG-001(UNKNOWN)", + "overlays": { + "speed": 214748364800 + }, + "sid": "LGS-000991", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-7" + } + ], + "name": "UNKNOWN_NOKIA-UNKNOWN_NOKIA-LAG-002(UNKNOWN)", + "overlays": { + "speed": 429496729600 + }, + "sid": "LGA-000442", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-20" + } + ], + "name": "DUBLIN-DUBLIN-LAG-004(UNKNOWN)", + "overlays": { + "speed": 10737418240 + }, + "sid": "GA-50002", + "type": "ETHERNET" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-20.3333" + } + ], + "name": "BELNET-AP1-IAS", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-00524", + "type": "GEANT PEERING" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-20.2433" + } + ], + "name": "MARNET-AP1-IAS", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-00536", + "type": "GWS - INDIRECT" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-20.2410" + } + ], + "name": "MARNET-AP1", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-12489", + "type": "GEANT IP" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-20:765" + }, + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "pwe-34784" + } + ], + "name": "$GS-50008", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-50008", + "type": "GEANT PLUS" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-24.0" + } + ], + "name": "IX-PEERINGS-IN-INEX", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-00950", + "type": "IP PEERING - NON R&E (PUBLIC)" + }, + { + "endpoints": [ + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "lag-20:790" + }, + { + "hostname": "rt0.dub.ie.geant.net", + "interface": "pwe-31757" + }, + { + "hostname": "rt0.lon.uk.geant.net", + "interface": "pwe-31757" + } + ], + "name": "DUBLIN-LONDON-ETHS-001(BELNET)", + "overlays": { + "speed": 10737418240 + }, + "sid": "GS-50035", + "type": "ETHERNET" + } +] diff --git a/test/data/inprov-sites.json b/test/data/inprov-sites.json new file mode 100644 index 0000000000000000000000000000000000000000..b6f5f56d3a852afd5f889c141591a7f99ece4052 --- /dev/null +++ b/test/data/inprov-sites.json @@ -0,0 +1,261 @@ +[ + { + "city": "AMSTERDAM", + "country": "NETHERLANDS", + "latitude": 52.34638889, + "longitude": 4.93861111, + "name": "AMS" + }, + { + "city": "BILBAO", + "country": "SPAIN", + "latitude": 43.3250881, + "longitude": -2.9804526, + "name": "BIL" + }, + { + "city": "ATTIKI", + "country": "GREECE", + "latitude": 37.98, + "longitude": 23.73, + "name": "ATH2" + }, + { + "city": "CAMBRIDGE", + "country": "UNITED KINGDOM", + "latitude": 52.19152778, + "longitude": 0.13383333, + "name": "CCH" + }, + { + "city": "ATHENS", + "country": "GREECE", + "latitude": 37.97308611, + "longitude": 23.74555556, + "name": "ATH" + }, + { + "city": "BRATISLAVA", + "country": "SLOVAKIA", + "latitude": 48.116833, + "longitude": 17.094389, + "name": "BRA" + }, + { + "city": "BRUSSELS", + "country": "BELGIUM", + "latitude": 50.85694444, + "longitude": 4.41138889, + "name": "BRU" + }, + { + "city": "BUCHAREST", + "country": "ROMANIA", + "latitude": 44.44474167, + "longitude": 26.09642222, + "name": "BUC" + }, + { + "city": "DUBLIN", + "country": "IRELAND", + "latitude": 53.29198056, + "longitude": -6.41473333, + "name": "DUB" + }, + { + "city": "CORK", + "country": "IRELAND", + "latitude": 51.90362538, + "longitude": -8.512314371, + "name": "COR" + }, + { + "city": "BUDAPEST", + "country": "HUNGARY", + "latitude": 47.51777778, + "longitude": 19.05527778, + "name": "BUD" + }, + { + "city": "CHISINAU", + "country": "MOLDOVA, REPUBLIC OF", + "latitude": 47.03072498, + "longitude": 28.82379273, + "name": "CHI" + }, + { + "city": "KAUNAS", + "country": "LITHUANIA", + "latitude": 54.94067222, + "longitude": 24.01801389, + "name": "KAU" + }, + { + "city": "KIEV", + "country": "UKRAINE", + "latitude": 50.44909773, + "longitude": 30.46527006, + "name": "KIE" + }, + { + "city": "GENEVA", + "country": "SWITZERLAND", + "latitude": 46.2355997, + "longitude": 6.0553345, + "name": "GEN" + }, + { + "city": "HAMBURG", + "country": "GERMANY", + "latitude": 53.55090278, + "longitude": 10.04648611, + "name": "HAM" + }, + { + "city": "AMSTERDAM - Office", + "country": "NETHERLANDS", + "latitude": 52.31330556, + "longitude": 4.94911111, + "name": "AMO" + }, + { + "city": "FRANKFURT", + "country": "GERMANY", + "latitude": 50.12029444, + "longitude": 8.73584444, + "name": "FRA" + }, + { + "city": "LONDON", + "country": "UNITED KINGDOM", + "latitude": 51.4981657, + "longitude": -0.0152639, + "name": "LON" + }, + { + "city": "ALCOBENDAS", + "country": "SPAIN", + "latitude": 40.53647778, + "longitude": -3.64880278, + "name": "MAD" + }, + { + "city": "LISBON", + "country": "PORTUGAL", + "latitude": 38.759325, + "longitude": -9.142339, + "name": "LIS" + }, + { + "city": "MARSEILLE", + "country": "FRANCE", + "latitude": 43.338019, + "longitude": 5.347666, + "name": "MAR" + }, + { + "city": "LJUBLJANA", + "country": "SLOVENIA", + "latitude": 46.050171, + "longitude": 14.46033, + "name": "LJU" + }, + { + "city": "SLOUGH", + "country": "UNITED KINGDOM", + "latitude": 51.5231433, + "longitude": -0.6224058, + "name": "LON2" + }, + { + "city": "AUBERVILLIERS", + "country": "FRANCE", + "latitude": 48.90444444, + "longitude": 2.37111111, + "name": "PAR" + }, + { + "city": "MILAN", + "country": "ITALY", + "latitude": 45.47527778, + "longitude": 9.10305556, + "name": "MIL2" + }, + { + "city": "RIGA", + "country": "LATVIA", + "latitude": 56.94834444, + "longitude": 24.118, + "name": "RIG" + }, + { + "city": "PORTO", + "country": "PORTUGAL", + "latitude": 41.177904, + "longitude": -8.594972, + "name": "POR" + }, + { + "city": "PRAGUE", + "country": "CZECH REPUBLIC", + "latitude": 50.10166667, + "longitude": 14.39166667, + "name": "PRA" + }, + { + "city": "POZNAN", + "country": "POLAND", + "latitude": 52.411775, + "longitude": 16.91756111, + "name": "POZ" + }, + { + "city": "SOFIA", + "country": "BULGARIA", + "latitude": 42.67575833, + "longitude": 23.37098611, + "name": "SOF" + }, + { + "city": "ZAGREB", + "country": "CROATIA", + "latitude": 45.79194444, + "longitude": 15.96944444, + "name": "ZAG" + }, + { + "city": "TARTU", + "country": "ESTONIA", + "latitude": 58.383146, + "longitude": 26.71986, + "name": "TAR" + }, + { + "city": "VIENNA", + "country": "AUSTRIA", + "latitude": 48.26888889, + "longitude": 16.41019444, + "name": "VIE" + }, + { + "city": "BELGRADE", + "country": "SERBIA", + "latitude": 44.81141383, + "longitude": 20.39871378, + "name": "BEL" + }, + { + "city": "THESSALONIKI", + "country": "GREECE", + "latitude": 40.662632, + "longitude": 22.860255, + "name": "THE" + }, + { + "city": "GENEVA", + "country": "FR", + "latitude": 46.255952, + "longitude": 6.055262, + "name": "GEN2" + } +] diff --git a/test/test_map_endpoints.py b/test/test_map_endpoints.py index b8678717fc098a074303239210b01f474fd0d2f1..317b1e123d46fd7f58719b7268663d7aa413d585 100644 --- a/test/test_map_endpoints.py +++ b/test/test_map_endpoints.py @@ -1,7 +1,17 @@ +import json +import os +import re + import responses from mapping_provider.api.map import SiteList, RouterList, ServiceList +DATA_DIR = os.path.join(os.path.dirname(__file__), 'data') + + +def _load_test_data(filename: str) -> dict: + with open(os.path.join(DATA_DIR, filename)) as f: + return json.load(f) # @responses.activate # def test_inventory_uri_validation(): @@ -13,22 +23,44 @@ from mapping_provider.api.map import SiteList, RouterList, ServiceList # == "http://a.b.c:9999/" # ) - +@responses.activate def test_get_sites(client): + + responses.add( + method=responses.GET, + url=re.compile(r'.*/map/sites$'), + json=_load_test_data('inprov-sites.json') + ) + rv = client.get("/map/sites") assert rv.status_code == 200 assert rv.json() SiteList.model_validate(rv.json()) +@responses.activate def test_get_routers(client): + + responses.add( + method=responses.GET, + url=re.compile(r'.*/map/routers$'), + json=_load_test_data('inprov-routers.json') + ) + rv = client.get("/map/routers") assert rv.status_code == 200 assert rv.json() RouterList.model_validate(rv.json()) - +@responses.activate def test_get_trunks(client): + + responses.add( + method=responses.GET, + url=re.compile(r'.*/map/services.*'), + json=_load_test_data('inprov-services.json') + ) + rv = client.get("/map/trunks") assert rv.status_code == 200 assert rv.json()