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()
Exemple #2
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)
Exemple #3
0
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'
Exemple #4
0
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'
        # Check consistency of ordering (according to config) for not concerned themes
        assert extract.get(
            'NotConcernedTheme')[0]['Code'] == 'MotorwaysProjectPlaningZones'
        assert extract.get(
            'NotConcernedTheme')[1]['Code'] == 'RailwaysBuildingLines'
        assert extract.get(
            'NotConcernedTheme')[2]['Code'] == 'RailwaysProjectPlanningZones'
        assert extract.get(
            'NotConcernedTheme')[3]['Code'] == 'AirportsProjectPlanningZones'
        assert extract.get(
            'NotConcernedTheme')[4]['Code'] == 'AirportsBuildingLines'
        assert extract.get(
            'NotConcernedTheme')[5]['Code'] == 'AirportsSecurityZonePlans'
        assert extract.get(
            'NotConcernedTheme')[6]['Code'] == 'ContaminatedMilitarySites'
        assert extract.get(
            'NotConcernedTheme')[7]['Code'] == 'ContaminatedCivilAviationSites'
        assert extract.get('NotConcernedTheme'
                           )[8]['Code'] == 'ContaminatedPublicTransportSites'
        assert extract.get(
            'NotConcernedTheme')[9]['Code'] == 'GroundwaterProtectionZones'
        assert extract.get(
            'NotConcernedTheme')[10]['Code'] == 'GroundwaterProtectionSites'
        assert extract.get(
            'NotConcernedTheme')[11]['Code'] == 'NoiseSensitivityLevels'
        assert extract.get(
            'NotConcernedTheme')[12]['Code'] == 'ForestPerimeters'
        assert extract.get(
            'NotConcernedTheme')[13]['Code'] == 'ForestDistanceLines'

    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'