import requests, json, sys # Swagger UI https://inspire.ec.europa.eu/validator/swagger-ui.html # Specify which validator to use baseUrl='https://inspire.agrarforschung.at/' testRunUrl = baseUrl+"validator/v2/TestRuns" # TestIDs obtained from https://inspire.agrarforschung.at/validator/v2/ExecutableTestSuites testMdData = '"EID59692c11-df86-49ad-be7f-94a1e1ddd8da","EIDe4a95862-9cc9-436b-9fdd-a0115d342350","EID2be1480a-fe42-40b2-9420-eb0e69385c80","EID0b86f7a3-2947-4841-823d-6a00d8e06d70"' testMdService = '"EID59692c11-df86-49ad-be7f-94a1e1ddd8da","EID8f869e23-c9e9-4e86-8dca-be30ff421229","EID606587df-65a8-4b7b-9eee-e0d94daaa42a"' testWMS = '"EIDeec9d674-d94b-4d8d-b744-1309c6cae1d2"' testWMTS = '"EID550ceacf-b3cb-47a0-b2dd-d3edb18344a9"' testWFS = '"EID1104fc9f-a7af-3862-9bd1-9f02921103a2","EID174edf55-699b-446c-968c-1892a4d8d5bd","EIDed2d3501-d700-4ff9-b9bf-070dece8ddbd"' testAtom = '"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"' testSOS = '"EID0ff73873-5601-41ff-8d92-3fb1fbba3cf2"' testWCS = '"EID074570ad-d720-47b3-af79-d54201793404"' testOGCFeatures = '"EID599648e9-316c-31ba-bae4-1a8668ce05fb"' testCSW = '"EIDc837298f-a10e-42d1-88f2-f1415cbbb463"' headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} testObject = '' while 1!=0: resource = input("Select the INSPIRE resource you would like to test\n1...Metadata\n2...View Service\n3...Download Service\n4...Discovery Service\n--> ") if resource == '1': # Metadata Test suites while 1!=0: testSuites = input("\nPlease choose Test Suites\n1...Data Metadata\n2...Service Metadata\n--> ") if testSuites == '1': testIds=testMdData break elif testSuites == '2': testIds=testMdService break else: print('Fehlerhafte Eingabe!\n') while 1!=0: # Choose File Upload or URL pointing to metadata method = input ("\nPlease choose your Test Object\n1...File Upload\n2...Remote URL\n--> ") if method == '1': localFile = input("\nPath to File: ") files = {'fileupload': open(localFile.strip('\"'),'rb')} uploadUrl=baseUrl+'validator/v2/TestObjects?action=upload' r = requests.post(uploadUrl,files=files) response = r.json() testObject = (response["testObject"]["id"]) testObjectJson = '{"id":"'+testObject+'"}' break elif method == '2': testObject= input("\nURL to XML document: ") testObjectJson = '{"resources":{"data":"'+testObject+'"}}' break else: print('Fehlerhafte Eingabe!\n') arguments = '"files_to_test":".*","tests_to_execute":".*"' break else: if resource == '2': # View Service Test suites while 1!=0: testSuites = input("\nPlease choose Test Suites\n1...Web Map Service (WMS)\n2...Web Map Tile Service (WMTS)\n--> ") if testSuites == '1': testIds=testWMS break elif testSuites == '2': testIds=testWMTS break else: print('Fehlerhafte Eingabe!\n') elif resource == '3': # Download Service Test suites while 1!=0: testSuites = input("\nPlease choose Test Suites\n1...Web Feature Service (WFS)\n2...Pre-defined Atom\n3...Sensor Observation Service (SOS)\n4...Web Coverage Service (WCS)\n5...OGC API - Features\n--> ") if testSuites == '1': testIds=testWFS break elif testSuites == '2': testIds=testAtom break elif testSuites == '3': testIds=testSOS break elif testSuites == '4': testIds=testWCS break elif testSuites == '5': testIds=testOGCFeatures break else: print('Fehlerhafte Eingabe!\n') elif resource == '4': # Discovery Service Test suites testIds=testCSW else: print('Fehlerhafte Eingabe!\n') continue testObject = input("\nService URL: ") arguments = '' testObjectJson = '{"resources":{"serviceEndpoint":"'+testObject+'"}}' break label = input("Please insert label for the test result: ") data = '{"label":"'+label+'","executableTestSuiteIds":['+testIds+'],"arguments":{'+arguments+'},"testObject":'+testObjectJson+'}' r = requests.post(testRunUrl,data=data,headers=headers) response = r.json() testRunId=response['EtfItemCollection']['testRuns']['TestRun']['id'] print("Please Check URL for Test Report: "+baseUrl+"test-reports/details.html?id="+testRunId)