Beispiel #1
0
def test_format_map(params, legend_at_web, expected_legend_at_web):
    with pyramid_oereb_test_config():
        renderer = Renderer(DummyRenderInfo())
        renderer._language = u'de'
        renderer._params = params
        renderer._request = MockRequest()
        legend_entry = LegendEntryRecord(ImageRecord('1'.encode('utf-8')),
                                         {u'de': u'Legendeneintrag'},
                                         u'CodeA',
                                         u'type_code_list',
                                         ThemeRecord(u'ContaminatedSites',
                                                     {u'de': u'Test'}),
                                         view_service_id=1)
        view_service = ViewServiceRecord('http://my.wms.ch', 1, 1.0,
                                         legend_at_web, [legend_entry])
        view_service.image = ImageRecord('1'.encode('utf-8'))
        result = renderer.format_map(view_service)
        assert isinstance(result, dict)
        expected_result = {
            'Image': base64.b64encode('1'.encode('utf-8')).decode('ascii'),
            'layerIndex': 1,
            'layerOpacity': 1.0,
            'ReferenceWMS': 'http://my.wms.ch',
            'OtherLegend': [renderer.format_legend_entry(legend_entry)]
        }
        if expected_legend_at_web is not None:
            expected_result['LegendAtWeb'] = expected_legend_at_web
        assert result == expected_result
def test_get_image():
    request = MockRequest()
    request.matchdict.update({'logo': 'oereb'})
    webservice = Logo(request)
    result = webservice.get_image()
    assert isinstance(result, Response)
    assert result.body == Config.get_logo_config().get('oereb').content
def test_getegrid_address(pyramid_oereb_test_config, schema_json_extract,
                          real_estate_data, address):
    del 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'})
    request.params.update({
        'POSTALCODE': u'4410',
        'LOCALISATION': u'test',
        'NUMBER': u'10'
    })
    webservice = PlrWebservice(request)
    response = webservice.get_egrid().json
    Draft4Validator.check_schema(schema_json_extract)
    validator = Draft4Validator(schema_json_extract)
    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'
Beispiel #4
0
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
Beispiel #5
0
def test_get_image(pyramid_oereb_test_config, logo_test_data):
    with patch.object(Config, 'logos', logo_test_data):
        request = MockRequest()
        request.matchdict.update({'logo': 'oereb', 'language': 'de'})
        webservice = Logo(request)
        result = webservice.get_image()
        assert isinstance(result, Response)
def test_getegrid_gnss():
    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'
Beispiel #7
0
def test_sub_theme():
    parameters = Parameter(
        response_format='xml',
        flavour='reduced',
        with_geometry=False,
        images=True,
        identdn='BL0200002829',
        number='1000',
        egrid='CH775979211712',
        language='de')
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._request = MockRequest()
    renderer._request.route_url = lambda url, **kwargs: "http://example.com/current/view"
    legend_entry = LegendEntryRecord(
        symbol=ImageRecord('1'.encode('utf-8')),
        legend_text={'de': 'legend1'},
        type_code='LandUsePlans',
        type_code_list='bla',
        theme=ThemeRecord(u'LandUsePlans', {'de': 'Theme 1'}),
        sub_theme={'de': 'sub theme de'}
    )
    content = template.render(**{
        'params': parameters,
        'localized': renderer.get_localized_text,
        'multilingual': renderer.get_multilingual_text,
        'legend_entry': legend_entry
    }).decode('utf-8').split('\n')
    no_empty_lines = list(filter(lambda line: line != '', content))
    assert no_empty_lines[19] == '<data:SubTheme>sub theme de</data:SubTheme>'
    assert len(no_empty_lines) == 20
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, {'de': '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_invalid_params(matchdict, params):
    request = MockRequest()
    request.matchdict.update(matchdict)
    request.params.update(params)
    service = PlrWebservice(request)
    with pytest.raises(HTTPBadRequest):
        service.__validate_extract_params__()
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': u'4410',
            'localisation': u'test',
            'number': u'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_return_no_content():
    request = MockRequest()
    request.matchdict.update({'format': 'XML'})
    request.params.update({'GEOMETRY': 'true', 'EGRID': 'MISSINGEGRID'})
    service = PlrWebservice(request)
    response = service.get_extract_by_id()
    assert isinstance(response, HTTPNoContent)
def test_getegrid_ident(pyramid_oereb_test_config, schema_json_extract,
                        geometry, real_estate_data):
    request = MockRequest(
        current_route_url='http://example.com/oereb/getegrid/json/BLTEST/1000')

    # Add params to matchdict as the view will do it for /getegrid/{format}/{identdn}/{number}
    request.matchdict.update({'format': u'json'})
    request.params.update({'IDENTDN': u'BLTEST', 'NUMBER': u'1000'})
    if geometry:
        request.params.update({'GEOMETRY': u'true'})

    webservice = PlrWebservice(request)
    response = webservice.get_egrid().json
    Draft4Validator.check_schema(schema_json_extract)
    validator = Draft4Validator(schema_json_extract)
    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'
    assert real_estates[0]['type'] == u'Liegenschaft'
    if geometry:
        assert 'limit' in real_estates[0]
        assert 'crs' in real_estates[0]['limit']
        assert 'coordinates' in real_estates[0]['limit']
Beispiel #13
0
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
Beispiel #14
0
def test_get_image_invalid():
    request = MockRequest()
    request.matchdict.update({
        'fosnr': '0'
    })
    webservice = Municipality(request)
    with pytest.raises(HTTPNotFound):
        webservice.get_image()
def test_matchdict(pyramid_oereb_test_config, matchdict, expected):
    request = MockRequest()
    request.matchdict.update(matchdict)
    request.params.update({'EGRID': 'egrid'})
    service = PlrWebservice(request)
    params = service.__validate_extract_params__()
    for k, v in expected.items():
        assert getattr(params, k) == v
def test_format_url(real_estate_data):
    request = MockRequest()
    request.matchdict.update({'format': 'URL'})
    request.params.update({'EGRID': 'TEST'})
    service = PlrWebservice(request)
    response = service.get_extract_by_id()
    assert isinstance(response, HTTPFound)
    assert response.location == 'https://geoview.bl.ch/oereb/?egrid=TEST'
def test_sub_theme(DummyRenderInfo, xml_templates, pyramid_oereb_test_config):
    template = xml_templates.get_template('public_law_restriction.xml')
    parameters = Parameter(response_format='xml',
                           with_geometry=False,
                           images=True,
                           signed=False,
                           identdn='BL0200002829',
                           number='1000',
                           egrid='CH775979211712',
                           language='de')
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._request = MockRequest()
    renderer._request.route_url = lambda url, **kwargs: "http://example.com/current/view"
    theme = ThemeRecord(u'ch.Nutzungsplanung', {'de': 'Theme 1'}, 1)
    subtheme = ThemeRecord(u'ch.Nutzungsplanung', {'de': 'sub-Theme 1'}, 2,
                           u'ch.NutzungsplanungSubCode')
    office = OfficeRecord(name={'de': 'office de'})
    law_status = LawStatusRecord(code='AenderungMitVorwirkung',
                                 title={'de': 'law status de'})
    geometry = GeometryRecord(law_status, datetime.now(), datetime.now(),
                              Polygon(), 'test')
    public_law_restriction = PlrRecord(
        theme=theme,
        legend_entry=LegendEntryRecord(ImageRecord('1'.encode('utf-8')),
                                       {'de': 'information de'},
                                       'CodeA',
                                       None,
                                       theme,
                                       view_service_id=1),
        law_status=law_status,
        published_from=datetime.now(),
        published_until=None,
        responsible_office=office,
        symbol=ImageRecord('1'.encode('utf-8')),
        view_service=ViewServiceRecord(
            {
                'de':
                'http://example.com?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&SRS=epsg:2056'
            }, 1, 1.0, 'de', 2056, None, None),
        geometries=[geometry],
        sub_theme=subtheme)
    content = template.render(
        **{
            'params': parameters,
            'localized': renderer.get_localized_text,
            'multilingual': renderer.get_multilingual_text,
            'get_localized_image': renderer.get_localized_image,
            'public_law_restriction': public_law_restriction
        }).decode('utf-8').split('\n')
    no_empty_lines = list(filter(lambda line: line != '', content))
    no_empty_lines = [no_space.strip() for no_space in no_empty_lines]

    # assert '<data:SubTheme>' in no_empty_lines  # schema has changed: no subThemes any longer ???
    assert '<data:Text>sub-Theme 1</data:Text>' in no_empty_lines
    assert '<data:SubCode>ch.NutzungsplanungSubCode</data:SubCode>' in no_empty_lines
    assert '<data:Code>ch.Nutzungsplanung</data:Code>' in no_empty_lines
    assert len(no_empty_lines) == 74
Beispiel #18
0
def test_get_image():
    request = MockRequest()
    request.matchdict.update({
        'fosnr': '1234'
    })
    webservice = Municipality(request)
    result = webservice.get_image()
    assert isinstance(result, Response)
    assert result.body == FileAdapter().read('tests/resources/python.svg')
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()
    assert response.code == 400
Beispiel #20
0
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)
Beispiel #21
0
def test_get_extract_by_id(pyramid_test_config, params):
    with pyramid_test_config as pyramid_config:
        pyramid_config.add_renderer(
            'pyramid_oereb_extract_json',
            'pyramid_oereb.core.renderer.extract.json_.Renderer')
        request = MockRequest()
        request.matchdict.update({'format': 'JSON'})
        request.params.update(params)
        service = PlrWebservice(request)
        service.get_extract_by_id()
Beispiel #22
0
def test_get_egrid_coord(pyramid_oereb_test_config, params):
    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()
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)
Beispiel #24
0
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_properties():
    request = MockRequest()
    request.matchdict.update(request_matchdict)
    processor = request.pyramid_oereb_processor
    assert isinstance(processor.extract_reader, ExtractReader)
    assert isinstance(processor.municipality_reader, MunicipalityReader)
    assert isinstance(processor.exclusion_of_liability_reader, ExclusionOfLiabilityReader)
    assert isinstance(processor.glossary_reader, GlossaryReader)
    assert isinstance(processor.plr_sources, list)
    assert isinstance(processor.real_estate_reader, RealEstateReader)
def test_get_image_invalid():
    request = MockRequest()
    request.matchdict.update({
        'theme_code': 'ContaminatedSites',
        'view_service_id': '1',
        'type_code': 'notExisting'
    })
    webservice = Symbol(request)
    with pytest.raises(HTTPNotFound):
        webservice.get_image()
Beispiel #27
0
def test_get_image():
    request = MockRequest()
    request.matchdict.update({'fosnr': '1234'})
    webservice = Municipality(request)
    result = webservice.get_image()
    assert isinstance(result, Response)
    if sys.version_info.major == 2:
        assert result.body == 'abcdefg'
    else:
        assert result.body == b'abcdefg'
Beispiel #28
0
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_get_image():
    request = MockRequest()
    request.matchdict.update({
        'theme_code': 'ContaminatedSites',
        'view_service_id': '1',
        'type_code': 'CodeA'
    })
    webservice = Symbol(request)
    result = webservice.get_image()
    assert isinstance(result, Response)
    assert result.body == FileAdapter().read('tests/resources/symbol.png')
Beispiel #30
0
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)