def test_matchdict(params, expected): request = MockRequest() request.matchdict.update(params) service = PlrWebservice(request) params = service.__validate_extract_params__() for k, v in expected.items(): assert getattr(params, k) == v
def test_params(): request = MockRequest() request.matchdict.update({ 'flavour': 'REDUCED', 'format': 'XML', 'param1': 'SomeEGRID' }) request.params.update({ 'WITHIMAGES': '', 'LANG': 'de', 'TOPICS': 'top_A,top_B,top_C' }) service = PlrWebservice(request) params = service.__validate_extract_params__() expected = { 'flavour': 'reduced', 'format': 'xml', 'geometry': False, 'images': True, 'egrid': 'SomeEGRID', 'language': 'de', 'topics': ['top_A', 'top_B', 'top_C'] } for k, v in expected.items(): assert getattr(params, k) == v
def test_getegrid_gnss(config): pyramid_oereb.config = config with pyramid_oereb_test_config(): request = MockRequest( current_route_url= 'http://example.com/oereb/getegrid/json/?GNSS=-19.917989937473,32.1244978460310' ) # Add params to matchdict as the view will do it for /getegrid/{format}/ request.matchdict.update({'format': u'json'}) request.params.update({'GNSS': '32.1244978460310,-19.917989937473'}) webservice = PlrWebservice(request) response = webservice.get_egrid_coord().json with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) validator.validate(response) assert isinstance(response, dict) real_estates = response.get('GetEGRIDResponse') assert isinstance(real_estates, list) assert len(real_estates) == 1 assert real_estates[0]['egrid'] == u'TEST' assert real_estates[0]['number'] == u'1000' assert real_estates[0]['identDN'] == u'BLTEST'
def test_getegrid_xy(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url= 'http://example.com/oereb/getegrid/json/?XY-1999999.032739449,-999998.940457533' ) # Add params to matchdict as the view will do it for /getegrid/{format}/ request.matchdict.update({'format': u'json'}) request.params.update({'XY': '-1999999.032739449,-999998.940457533'}) webservice = PlrWebservice(request) response = webservice.get_egrid_coord().json with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) validator.validate(response) assert isinstance(response, dict) real_estates = response.get('GetEGRIDResponse') assert isinstance(real_estates, list) assert len(real_estates) == 2 assert real_estates[0]['egrid'] == u'TEST' assert real_estates[0]['number'] == u'1000' assert real_estates[0]['identDN'] == u'BLTEST'
def test_getcapabilities(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/capabilities.json') service = PlrWebservice(request) with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) response = service.get_capabilities().json validator.validate(response) assert isinstance(response, dict) caps = response.get('GetCapabilitiesResponse') assert isinstance(caps[u'topic'], list) assert len(caps[u'topic']) == 17 assert caps[u'topic'][15][u'Code'] == u'ForestPerimeters' assert caps[u'topic'][15][u'Text'][0][u'Language'] == u'de' assert isinstance(caps[u'flavour'], list) assert len(caps[u'flavour']) == 3 assert caps[u'flavour'][0] == u'REDUCED' assert isinstance(caps[u'language'], list) assert len(caps[u'language']) == 4 assert caps[u'language'][0] == u'de' assert isinstance(caps[u'crs'], list) assert len(caps[u'crs']) == 1 assert caps[u'crs'][0] == u'epsg:2056' assert isinstance(caps[u'municipality'], list)
def test_getegrid_address(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url= 'http://example.com/oereb/getegrid/json/4410/test/10') # Add params to matchdict as the view will do it for # /getegrid/{format}/{postalcode}/{localisation}/{number} request.matchdict.update({ 'format': u'json', 'postalcode': '4410', 'localisation': 'test', 'number': '10' }) webservice = PlrWebservice(request) response = webservice.get_egrid_address().json with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) validator.validate(response) assert isinstance(response, dict) assert response.get('GetEGRIDResponse') is not None assert response.get('GetEGRIDResponse')[0].get('egrid') == u'TEST' assert response.get('GetEGRIDResponse')[0].get('number') == u'1000' assert response.get('GetEGRIDResponse')[0].get('identDN') == u'BLTEST'
def test_getegrid_coord_missing_parameter(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid/json/') # Add params to matchdict as the view will do it for /getegrid/{format}/ request.matchdict.update({'format': u'json'}) webservice = PlrWebservice(request) response = webservice.get_egrid_ident() assert response.code == 400
def test_process(): request = MockRequest() request.matchdict.update(request_matchdict) processor = create_processor() webservice = PlrWebservice(request) params = webservice.__validate_extract_params__() real_estate = processor.real_estate_reader.read(params, egrid=u'TEST') extract = processor.process(real_estate[0], params, 'http://test.ch') assert isinstance(extract, ExtractRecord)
def test_getegrid_address_missing_parameter(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid/json/') # Add params to matchdict as the view will do it for # /getegrid/{format}/{postalcode}/{localisation}/{number} request.matchdict.update({'format': u'json'}) webservice = PlrWebservice(request) response = webservice.get_egrid_address() assert response.code == 400
def test_return_no_content(): request = MockRequest() request.matchdict.update({ 'flavour': 'REDUCED', 'format': 'XML', 'param1': 'GEOMETRY', 'param2': 'MISSINGEGRID' }) service = PlrWebservice(request) response = service.get_extract_by_id() assert isinstance(response, HTTPNoContent)
def test_get_egrid_coord(params): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid/json') # Add params to matchdict as the view will do it for /getegrid/{format}/ request.matchdict.update({'format': u'json'}) request.params.update(params) webservice = PlrWebservice(request) webservice.get_egrid_coord()
def test_process_geometry_testing(): request = MockRequest() request.matchdict.update(request_matchdict) processor = create_processor() webservice = PlrWebservice(request) params = webservice.__validate_extract_params__() real_estate = processor.real_estate_reader.read(params, egrid=u'TEST') extract = processor.process(real_estate[0], params, 'http://test.ch') for plr in extract.real_estate.public_law_restrictions: for g in plr.geometries: assert g._test_passed
def test_return_json(topics): with pyramid_oereb_test_config() as pyramid_config: pyramid_config.add_renderer('pyramid_oereb_extract_json', 'pyramid_oereb.lib.renderer.extract.json_.Renderer') request = MockRequest() request.matchdict.update({ 'flavour': 'REDUCED', 'format': 'JSON', 'param1': 'GEOMETRY', 'param2': 'TEST' }) request.params.update({ 'TOPICS': topics }) service = PlrWebservice(request) response = service.get_extract_by_id() with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) response = json.loads(response.body.decode('utf-8')) validator.validate(response) assert isinstance(response, dict) extract = response.get('GetExtractByIdResponse').get('extract') real_estate = extract.get('RealEstate') assert isinstance(real_estate, dict) if topics == 'ALL': assert len(real_estate.get('RestrictionOnLandownership')) == 3 assert len(extract.get('ConcernedTheme')) == 3 assert len(extract.get('NotConcernedTheme')) == 14 assert len(extract.get('ThemeWithoutData')) == 0 restrictions = real_estate.get('RestrictionOnLandownership') assert restrictions[0]['Theme']['Code'] == 'LandUsePlans' assert restrictions[1]['Theme']['Code'] == 'MotorwaysBuildingLines' assert restrictions[2]['Theme']['Code'] == 'ContaminatedSites' if topics == 'ALL_FEDERAL': assert len(real_estate.get('RestrictionOnLandownership')) == 1 assert len(extract.get('ConcernedTheme')) == 1 assert len(extract.get('NotConcernedTheme')) == 9 assert len(extract.get('ThemeWithoutData')) == 0 restrictions = real_estate.get('RestrictionOnLandownership') assert restrictions[0]['Theme']['Code'] == 'MotorwaysBuildingLines' if topics == 'ContaminatedSites,RailwaysProjectPlanningZones': assert len(real_estate.get('RestrictionOnLandownership')) == 1 assert len(extract.get('ConcernedTheme')) == 1 assert len(extract.get('NotConcernedTheme')) == 1 assert len(extract.get('ThemeWithoutData')) == 0 restrictions = real_estate.get('RestrictionOnLandownership') assert restrictions[0]['Theme']['Code'] == 'ContaminatedSites'
def test_processor_without_images(): request = MockRequest() request.matchdict.update(request_matchdict) request.params.update({'LANG': 'de'}) processor = create_processor() webservice = PlrWebservice(request) params = webservice.__validate_extract_params__() real_estate = processor.real_estate_reader.read(params, egrid=u'TEST') extract = processor.process(real_estate[0], params, 'http://test.ch') assert extract.real_estate.plan_for_land_register.image is None for plr in extract.real_estate.public_law_restrictions: assert plr.view_service.image is None
def test_filter_published_documents(): request = MockRequest() request.matchdict.update(request_matchdict) processor = create_processor() webservice = PlrWebservice(request) params = webservice.__validate_extract_params__() real_estate = processor.real_estate_reader.read(params, egrid=u'TEST') extract = processor.process(real_estate[0], params, 'http://test.ch') for plr in extract.real_estate.public_law_restrictions: if plr.theme.code == u'MotorwaysBuildingLines': assert len(plr.documents) == 1 assert len(plr.documents[0].references) == 1
def test_processor_without_images(): request = MockRequest() request.matchdict.update(request_matchdict) request.params.update({'LANG': 'de'}) processor = request.pyramid_oereb_processor real_estate = processor.real_estate_reader.read(egrid=u'TEST') webservice = PlrWebservice(request) params = webservice.__validate_extract_params__() extract = processor.process(real_estate[0], params, 'http://test.ch') # TODO: uncomment this when issue GSOREB-194 is solved. # assert extract.real_estate.plan_for_land_register.image is None for plr in extract.real_estate.public_law_restrictions: assert plr.view_service.image is None
def test_getversions(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/versions.json') webservice = PlrWebservice(request) versions = webservice.get_versions().json with open(schema_json_versions) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) validator.validate(versions) assert isinstance(versions, dict) supported_version = versions.get('GetVersionsResponse') assert len(supported_version.get('supportedVersion')) == 1
def test_get_extract_by_id(params): with pyramid_oereb_test_config() as pyramid_config: pyramid_config.add_renderer( 'pyramid_oereb_extract_json', 'pyramid_oereb.lib.renderer.extract.json_.Renderer') request = MockRequest() request.matchdict.update({ 'flavour': 'REDUCED', 'format': 'JSON', 'param1': 'GEOMETRY', 'param2': 'TEST' }) request.params.update(params) service = PlrWebservice(request) service.get_extract_by_id()
def test_get_egrid_response(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid/json/') # Add params to matchdict as the view will do it for /getegrid/{format}/ request.matchdict.update({'format': u'json'}) view_service = ViewServiceRecord('test', 1, 1.0, 'test', None) record = RealEstateRecord('test', 'BL', 'test', 1, 100, MultiPolygon( [Polygon([(0, 0), (1, 1), (1, 0)])]), view_service, number='number', identdn='identdn', egrid='egrid') response = PlrWebservice(request).__get_egrid_response__([record]).json assert response == { 'GetEGRIDResponse': [{ 'egrid': 'egrid', 'number': 'number', 'identDN': 'identdn' }] }
def test_parse_gnss(config): pyramid_oereb.config = config geom = PlrWebservice(MockRequest()).__parse_gnss__('47.48911,7.72866') assert isinstance(geom, Polygon) assert round(geom.centroid.x, 3) == 2621858.036 assert round(geom.centroid.y, 3) == 1259856.747 assert round(geom.area, 2) == round(math.pi, 2)
def test_getcapabilities(): with pyramid_oereb_test_config(): request = MockRequest(current_route_url='http://example.com/oereb/capabilities/json') # Add params to matchdict as the view will do it for /capabilities/{format} request.matchdict.update({ 'format': u'json' }) service = PlrWebservice(request) with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) response = service.get_capabilities().json validator.validate(response) assert isinstance(response, dict) caps = response.get('GetCapabilitiesResponse') assert isinstance(caps[u'topic'], list) assert len(caps[u'topic']) == 17 assert caps[u'topic'][15][u'Code'] == u'ForestPerimeters' forest_perimeter_languages = list(map(lambda l: l[u'Language'], caps[u'topic'][15][u'Text'])) assert u'de' in forest_perimeter_languages assert u'fr' in forest_perimeter_languages assert u'it' in forest_perimeter_languages assert u'rm' in forest_perimeter_languages assert isinstance(caps[u'flavour'], list) assert len(caps[u'flavour']) == 3 assert u'REDUCED' in caps[u'flavour'] assert u'FULL' in caps[u'flavour'] assert u'EMBEDDABLE' in caps[u'flavour'] assert isinstance(caps[u'language'], list) assert len(caps[u'language']) == 4 assert u'de' in caps[u'language'] assert u'fr' in caps[u'language'] assert u'it' in caps[u'language'] assert u'rm' in caps[u'language'] assert isinstance(caps[u'crs'], list) assert len(caps[u'crs']) == 1 assert caps[u'crs'][0] == u'epsg:2056' assert isinstance(caps[u'municipality'], list)
def test_getversions_json(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/versions/json') # Add params to matchdict as the view will do it for /versions/{format} request.matchdict.update({'format': u'json'}) webservice = PlrWebservice(request) versions = webservice.get_versions().json with open(schema_json_versions) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) validator.validate(versions) assert isinstance(versions, dict) supported_version = versions.get('GetVersionsResponse') assert len(supported_version.get('supportedVersion')) == 1
def test_get_egrid_response_no_content(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid/json/') # Add params to matchdict as the view will do it for /getegrid/{format}/ request.matchdict.update({'format': u'json'}) response = PlrWebservice(request).__get_egrid_response__([]) assert isinstance(response, HTTPNoContent)
def test_parse_xy(src, dst, buffer_dist): geom = PlrWebservice(MockRequest()).__parse_xy__(src, buffer_dist=buffer_dist) if buffer_dist: assert isinstance(geom, Polygon) assert round(geom.area, 2) == round(math.pi, 2) assert round(geom.centroid.x, 3) == round(dst[0], 3) assert round(geom.centroid.y, 3) == round(dst[1], 3) else: assert isinstance(geom, Point) assert round(geom.x, 3) == round(dst[0], 3) assert round(geom.y, 3) == round(dst[1], 3)
def test_getegrid_ident(config): pyramid_oereb.config = config with pyramid_oereb_test_config(): request = MockRequest( current_route_url= 'http://example.com/oereb/getegrid/BLTEST/1000.json') request.matchdict.update({'identdn': u'BLTEST', 'number': u'1000'}) webservice = PlrWebservice(request) response = webservice.get_egrid_ident().json with open(schema_json_extract) as f: schema = json.loads(f.read()) Draft4Validator.check_schema(schema) validator = Draft4Validator(schema) validator.validate(response) assert isinstance(response, dict) real_estates = response.get('GetEGRIDResponse') assert isinstance(real_estates, list) assert len(real_estates) == 1 assert real_estates[0]['egrid'] == u'TEST' assert real_estates[0]['number'] == u'1000' assert real_estates[0]['identDN'] == u'BLTEST'
def test_get_egrid_response(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid.json') view_service = ViewServiceRecord('test', 'test') record = RealEstateRecord('test', 'BL', 'test', 1, 100, MultiPolygon( [Polygon([(0, 0), (1, 1), (1, 0)])]), view_service, number='number', identdn='identdn', egrid='egrid') response = PlrWebservice(request).__get_egrid_response__([record]).json assert response == { 'GetEGRIDResponse': [{ 'egrid': 'egrid', 'number': 'number', 'identDN': 'identdn' }] }
def test_get_egrid_response_no_content(): with pyramid_oereb_test_config(): request = MockRequest( current_route_url='http://example.com/oereb/getegrid.json') response = PlrWebservice(request).__get_egrid_response__([]) assert isinstance(response, HTTPNoContent)
def test_parse_invalid_coordinates(config): pyramid_oereb.config = config with pytest.raises(HTTPBadRequest): PlrWebservice(MockRequest()).__parse_gnss__('7.72866') with pytest.raises(HTTPBadRequest): PlrWebservice(MockRequest()).__parse_xy__('2621857.856;1259856.578')
def test_getegrid_coord_missing_parameter(): webservice = PlrWebservice(MockRequest()) with pytest.raises(HTTPBadRequest): webservice.get_egrid_coord()
def test_invalid_flavour(params): request = MockRequest() request.matchdict.update(params) service = PlrWebservice(request) with pytest.raises(HTTPBadRequest): service.__validate_extract_params__()