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"]))
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"]))
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]"]))
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
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
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