예제 #1
0
    def test_get_url(self):
        from c2cgeoportal_geoportal.lib import get_url

        request = create_dummy_request({
            "package": "my_project",
            "servers": {
                "srv": "https://example.com/test",
            },
        })

        def static_url(path, **kwargs):
            return "http://server.org/" + path

        request.static_url = static_url

        self.assertEqual(get_url("static://pr:st/icon.png", request),
                         "http://server.org/pr:st/icon.png")
        self.assertEqual(get_url("static:///icon.png", request),
                         "http://server.org/c2cgeoportal:project/icon.png")
        self.assertEqual(get_url("config://srv/icon.png", request),
                         "https://example.com/test/icon.png?")
        self.assertEqual(
            get_url("config://srv2/icon.png", request, "/icon2.png"),
            "/icon2.png")
        self.assertEqual(get_url("http://example.com/icon.png", request),
                         "http://example.com/icon.png")
        self.assertEqual(get_url("https://example.com/icon.png", request),
                         "https://example.com/icon.png")
        errors = set()
        self.assertEqual(
            get_url("config://srv2/icon.png", request, errors=errors), None)
        self.assertEqual(errors,
                         set(["The server 'srv2' is not found in the config"]))
예제 #2
0
    def test_get_url2(self):
        from c2cgeoportal_geoportal.lib import get_url2

        request = create_dummy_request({
            "package": "my_project",
            "servers": {
                "srv": "https://example.com/test",
                "srv_alt": "https://example.com/test/",
                "full_url": "https://example.com/test.xml",
            },
        })

        def static_url(path, **kwargs):
            return "http://server.org/" + path
        request.static_url = static_url

        self.assertEqual(get_url2("test", "static://pr:st/icon.png", request, set()), "http://server.org/pr:st/icon.png")
        self.assertEqual(get_url2("test", "static:///icon.png", request, set()), "http://server.org/my_project_geoportal:static/icon.png")
        self.assertEqual(get_url2("test", "config://srv/icon.png", request, set()), "https://example.com/test/icon.png")
        self.assertEqual(get_url2("test", "config://srv/", request, set()), "https://example.com/test/")
        self.assertEqual(get_url2("test", "config://srv", request, set()), "https://example.com/test")
        self.assertEqual(get_url2("test", "config://srv/icon.png?test=aaa", request, set()), "https://example.com/test/icon.png?test=aaa")
        self.assertEqual(get_url2("test", "config://srv_alt/icon.png", request, set()), "https://example.com/test/icon.png")
        self.assertEqual(get_url2("test", "config://full_url", request, set()), "https://example.com/test.xml")
        self.assertEqual(get_url2("test", "http://example.com/icon.png", request, set()), "http://example.com/icon.png")
        self.assertEqual(get_url2("test", "https://example.com/icon.png", request, set()), "https://example.com/icon.png")
        errors = set()
        self.assertEqual(get_url2("test", "config://srv2/icon.png", request, errors=errors), None)
        self.assertEqual(errors, set(["The server 'srv2' is not found in the config"]))
예제 #3
0
    def test_get_url2(self):
        from c2cgeoportal_geoportal.lib import get_url2

        request = create_dummy_request({
            "package": "my_project",
            "servers": {
                "srv": "https://example.com/test",
                "srv_alt": "https://example.com/test/",
                "full_url": "https://example.com/test.xml",
            },
        })

        def static_url(path, **kwargs):
            del kwargs  # Unused
            return "http://server.org/" + path
        request.static_url = static_url

        self.assertEqual(get_url2("test", "static://pr:st/icon.png", request, set()), "http://server.org/pr:st/icon.png")
        self.assertEqual(get_url2("test", "static:///icon.png", request, set()), "http://server.org//etc/geomapfish/static/icon.png")
        self.assertEqual(get_url2("test", "config://srv/icon.png", request, set()), "https://example.com/test/icon.png")
        self.assertEqual(get_url2("test", "config://srv/", request, set()), "https://example.com/test/")
        self.assertEqual(get_url2("test", "config://srv", request, set()), "https://example.com/test")
        self.assertEqual(get_url2("test", "config://srv/icon.png?test=aaa", request, set()), "https://example.com/test/icon.png?test=aaa")
        self.assertEqual(get_url2("test", "config://srv_alt/icon.png", request, set()), "https://example.com/test/icon.png")
        self.assertEqual(get_url2("test", "config://full_url", request, set()), "https://example.com/test.xml")
        self.assertEqual(get_url2("test", "http://example.com/icon.png", request, set()), "http://example.com/icon.png")
        self.assertEqual(get_url2("test", "https://example.com/icon.png", request, set()), "https://example.com/icon.png")
        errors = set()
        self.assertEqual(get_url2("test", "config://srv2/icon.png", request, errors=errors), None)
        self.assertEqual(errors, set(["test: The server 'srv2' (config://srv2/icon.png) is not found in the config: [srv, srv_alt, full_url]"]))
예제 #4
0
def create_dummy_request(additional_settings=None,
                         authentication=True,
                         user=None,
                         *args,
                         **kargs):
    if additional_settings is None:
        additional_settings = {}
    from c2cgeoportal_geoportal import default_user_validator
    from c2cgeoportal_geoportal import create_get_user_from_request
    from c2cgeoportal_geoportal.lib.authentication import create_authentication

    request = tests.create_dummy_request(
        {
            "host_forward_host": [],
            "functionalities": {
                "available_in_templates": []
            },
            "layers": {
                "geometry_validation": True
            },
            "admin_interface": {
                "available_functionalities": [{
                    "name": "mapserver_substitution",
                    "single": False
                }]
            },
        },
        *args,
        **kargs,
    )
    request.accept_language = webob.acceptparse.create_accept_language_header(
        "fr-CH,fr;q=0.8,en;q=0.5,en-US;q=0.3")
    request.registry.settings.update(additional_settings)
    request.referer = "http://example.com/app"
    request.path_info_peek = lambda: "main"
    request.interface_name = "main"
    request.get_user = _get_user
    request.registry.validate_user = default_user_validator
    request.c2c_request_id = "test"
    if authentication and user is None:
        authentication_settings = {
            "authtkt_cookie_name":
            "__test",
            "authtkt_secret":
            "long enough secret!!  00000000000000000000000000000000000000000000000",
        }
        authentication_settings.update(additional_settings)
        request._get_authentication_policy = lambda: create_authentication(
            authentication_settings)
    elif user is not None:
        config.testing_securitypolicy(user)
    request.set_property(create_get_user_from_request(
        {"authorized_referers": [request.referer]}),
                         name="user",
                         reify=True)
    return request
예제 #5
0
def create_dummy_request(additional_settings=None,
                         authentication=True,
                         user=None,
                         *args,
                         **kargs):
    if additional_settings is None:
        additional_settings = {}
    from c2cgeoportal_geoportal import default_user_validator
    from c2cgeoportal_geoportal import create_get_user_from_request
    from c2cgeoportal_geoportal.lib.authentication import create_authentication
    request = tests.create_dummy_request(
        {
            "host_forward_host": [],
            "mapserverproxy": {
                "default_ogc_server": "__test_ogc_server",
                "external_ogc_server": "__test_external_ogc_server",
            },
            "functionalities": {
                "registered": {},
                "anonymous": {},
                "available_in_templates": []
            },
            "layers": {
                "geometry_validation": True
            }
        }, *args, **kargs)
    request.accept_language = Accept("fr-CH,fr;q=0.8,en;q=0.5,en-US;q=0.3")
    request.registry.settings.update(additional_settings)
    request.referer = "http://example.com/app"
    request.path_info_peek = lambda: "main"
    request.interface_name = "main"
    request.get_user = _get_user
    request.registry.validate_user = default_user_validator
    request.client_addr = None
    request.c2c_request_id = 'test'
    if authentication and user is None:
        request._get_authentication_policy = lambda: create_authentication(
            {
                "authtkt_cookie_name": "__test",
                "authtkt_secret": "123",
            })
    elif user is not None:
        config.testing_securitypolicy(user)
    request.set_property(create_get_user_from_request(
        {"authorized_referers": [request.referer]}),
                         name="user",
                         reify=True)
    return request
예제 #6
0
def create_dummy_request(additional_settings=None, authentication=True, user=None, *args, **kargs):
    from pyramid.interfaces import IAuthenticationPolicy

    from c2cgeoportal_geoportal import create_get_user_from_request
    from c2cgeoportal_geoportal.lib.authentication import create_authentication

    if additional_settings is None:
        additional_settings = {}

    pyramid.testing.tearDown()

    request = tests.create_dummy_request(
        {
            "functionalities": {"available_in_templates": []},
            "layers": {"geometry_validation": True},
            "admin_interface": {
                "available_functionalities": [{"name": "mapserver_substitution", "single": False}],
                "available_metadata": [{"name": "lastUpdateDateColumn"}, {"name": "lastUpdateUserColumn"}],
            },
        },
        *args,
        **kargs,
    )

    global config
    config = pyramid.testing.setUp(
        request=request,
        registry=request.registry,
        settings=get_settings(),
    )

    request.accept_language = webob.acceptparse.create_accept_language_header(
        "fr-CH,fr;q=0.8,en;q=0.5,en-US;q=0.3"
    )
    request.registry.settings.update(additional_settings)
    request.referer = "http://example.com/app"
    request.path_info_peek = lambda: "main"
    request.interface_name = "main"
    request.get_user = _get_user
    request.c2c_request_id = "test"
    request.matched_route = DummyRoute()
    init_registry(request.registry)

    if authentication and user is None:
        authentication_settings = {
            "authtkt_cookie_name": "__test",
            "authtkt_secret": "long enough secret!!  00000000000000000000000000000000000000000000000",
            "authentication": {},
        }
        authentication_settings.update(additional_settings)

        testing_legacySecurityPolicy(config)
        config.registry.registerUtility(create_authentication(authentication_settings), IAuthenticationPolicy)

    elif user is not None:
        config.testing_securitypolicy(user)
    request.set_property(
        create_get_user_from_request({"authorized_referers": [request.referer]}), name="user", reify=True
    )

    return request