1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
##################################################################
# Copyright 2016 OSGeo Foundation, #
# represented by PyWPS Project Steering Committee, #
# licensed under MIT, Please consult LICENSE.txt for details #
##################################################################
"""Unit tests for complex validator
"""
import unittest
import sys
from pywps.validator.complexvalidator import *
from pywps.inout.formats import FORMATS
import tempfile
import os
try:
import osgeo
except ImportError:
WITH_GDAL = False
else:
WITH_GDAL = True
def get_input(name, schema, mime_type):
class FakeFormat(object):
mimetype = 'text/plain'
schema = None
units = None
def validate(self, data):
return True
class FakeInput(object):
tempdir = tempfile.mkdtemp()
file = os.path.join(
os.path.abspath(os.path.dirname(__file__)),
'..', 'data', name)
format = FakeFormat()
class data_format(object):
file = os.path.join(
os.path.abspath(os.path.dirname(__file__)),
'..', 'data', str(schema))
fake_input = FakeInput()
fake_input.stream = open(fake_input.file)
fake_input.data_format = data_format()
if schema:
fake_input.data_format.schema = 'file://' + fake_input.data_format.file
fake_input.data_format.mime_type = mime_type
return fake_input
class ValidateTest(unittest.TestCase):
"""Complex validator test cases"""
def setUp(self):
pass
def tearDown(self):
pass
def test_gml_validator(self):
"""Test GML validator
"""
gml_input = get_input('gml/point.gml', 'point.xsd', FORMATS.GML.mime_type)
self.assertTrue(validategml(gml_input, MODE.NONE), 'NONE validation')
self.assertTrue(validategml(gml_input, MODE.SIMPLE), 'SIMPLE validation')
if WITH_GDAL:
self.assertTrue(validategml(gml_input, MODE.STRICT), 'STRICT validation')
if os.environ.get('OFFLINE_TESTS') == None:
self.assertTrue(validategml(gml_input, MODE.VERYSTRICT), 'VERYSTRICT validation')
gml_input.stream.close()
def test_geojson_validator(self):
"""Test GeoJSON validator
"""
geojson_input = get_input('json/point.geojson', 'json/schema/geojson.json',
FORMATS.GEOJSON.mime_type)
self.assertTrue(validategeojson(geojson_input, MODE.NONE), 'NONE validation')
self.assertTrue(validategeojson(geojson_input, MODE.SIMPLE), 'SIMPLE validation')
if WITH_GDAL:
self.assertTrue(validategeojson(geojson_input, MODE.STRICT), 'STRICT validation')
self.assertTrue(validategeojson(geojson_input, MODE.VERYSTRICT), 'VERYSTRICT validation')
geojson_input.stream.close()
def test_shapefile_validator(self):
"""Test ESRI Shapefile validator
"""
shapefile_input = get_input('shp/point.shp.zip', None,
FORMATS.SHP.mime_type)
self.assertTrue(validateshapefile(shapefile_input, MODE.NONE), 'NONE validation')
self.assertTrue(validateshapefile(shapefile_input, MODE.SIMPLE), 'SIMPLE validation')
if WITH_GDAL:
self.assertTrue(validateshapefile(shapefile_input, MODE.STRICT), 'STRICT validation')
shapefile_input.stream.close()
def test_geotiff_validator(self):
"""Test GeoTIFF validator
"""
geotiff_input = get_input('geotiff/dem.tiff', None,
FORMATS.GEOTIFF.mime_type)
self.assertTrue(validategeotiff(geotiff_input, MODE.NONE), 'NONE validation')
self.assertTrue(validategeotiff(geotiff_input, MODE.SIMPLE), 'SIMPLE validation')
if not WITH_GDAL:
self.testSkipp('GDAL Not Installed')
self.assertTrue(validategeotiff(geotiff_input, MODE.STRICT), 'STRICT validation')
geotiff_input.stream.close()
def test_fail_validator(self):
fake_input = get_input('point.xsd', 'point.xsd', FORMATS.SHP.mime_type)
self.assertFalse(validategml(fake_input, MODE.SIMPLE), 'SIMPLE validation invalid')
fake_input.stream.close()
def load_tests(loader=None, tests=None, pattern=None):
if not loader:
loader = unittest.TestLoader()
suite_list = [
loader.loadTestsFromTestCase(ValidateTest)
]
return unittest.TestSuite(suite_list)
|