def test_shortener(self): from tests import DummyRequest from pyramid.httpexceptions import HTTPNotFound, HTTPBadRequest from c2cgeoportal_geoportal.views.shortener import Shortener def route_url(name, *args, **kwargs): del name # Unused del args # Unused return "https://example.com/short/" + kwargs["ref"] request = DummyRequest() request.user = None request.host = "example.com:443" request.server_name = "example.com" request.route_url = route_url request.registry.settings["shortener"] = { "base_url": "https://example.com/s/" } shortener = Shortener(request) request.params = {} request.matchdict = {"ref": "AAAAAA"} self.assertRaises(HTTPNotFound, shortener.get) request.params = {} request.matchdict = {} self.assertRaises(HTTPBadRequest, shortener.create) request.params = {"url": "https://other-site.com/hi"} self.assertRaises(HTTPBadRequest, shortener.create)
def test_shortener_create_1(self): from tests import DummyRequest from pyramid.httpexceptions import HTTPFound from c2cgeoportal_geoportal.views.shortener import Shortener def route_url(name, *elements, **kw): return "https://example.com/short/" + kw["ref"] request = DummyRequest() request.user = None request.host = "example.com:443" request.server_name = "example.com" request.route_url = route_url request.registry.settings["shortener"] = { "base_url": "https://example.com/s/" } shortener = Shortener(request) request.params = {"url": "https://example.com/hi"} result = shortener.create() index = result["short_url"].rfind("/") self.assertEqual(result["short_url"][:index], "https://example.com/s") request.params = {} # fmt: off request.matchdict = {"ref": result["short_url"][index + 1:]} # fmt: on result = shortener.get() self.assertEqual(type(result), HTTPFound) self.assertEqual(result.location, "https://example.com/hi")
def test_shortener_dev(self): from tests import DummyRequest from c2cgeoportal_geoportal.views.shortener import Shortener def route_url(name, *elements, **kw): return "https://localhost:8484/s/" + kw["ref"] request = DummyRequest() request.user = None request.host = "localhost:8484" request.server_name = "0.0.0.0" request.route_url = route_url request.registry.settings["shortener"] = { "base_url": "https://localhost:8484/s/", "allowed_hosts": [ "localhost:8484", ], } shortener = Shortener(request) request.params = {"url": "https://localhost:8484/theme/Demo"} result = shortener.create() index = result["short_url"].rfind("/") self.assertEqual(result["short_url"][:index], "https://localhost:8484/s")
def test_theme(self): from c2cgeoportal_geoportal.views.theme import Theme request = DummyRequest() request.static_url = lambda url: "http://example.com/dummy/static/url" request.route_url = lambda url, _query={}: mapserv_url request.user = None theme_view = Theme(request) _, errors = theme_view._themes("desktop2", True, 2) self.assertEqual( len([e for e in errors if e == "Too many recursions with group '__test_layer_group'"]), 1 )
def test_shortener_noreplace_2(self): from tests import DummyRequest from c2cgeoportal_geoportal.views.shortener import Shortener def route_url(name, *elements, **kw): return "https://example.com/short/" + kw["ref"] request = DummyRequest() request.user = None request.host = "example.com:443" request.server_name = "example.com" request.route_url = route_url request.registry.settings["shortener"] = { "base_url": "https://example.com/s/" } shortener = Shortener(request) request.params = {"url": "https://example.com/s/truite"} result = shortener.create() self.assertEqual(result["short_url"], "https://example.com/s/truite")
def test_intranet(self): from tests import DummyRequest from c2cgeoportal_geoportal.views.login import Login request = DummyRequest() request.registry.settings = { "intranet": { "networks": ["192.168.1.0/255.255.255.0"] } } request.user = None login = Login(request) self.assertEqual( login.loginuser(), { "is_intranet": False, "functionalities": {}, "two_factor_enable": False }) request.client_addr = "192.168.1.20" login = Login(request) self.assertEqual(login.loginuser(), { "is_intranet": True, "functionalities": {}, "two_factor_enable": False }) class G: id = 123 def __init__(self, name, functionalities): self.name = name self.functionalities = functionalities class U: username = "******" is_password_changed = True email = "*****@*****.**" def __init__(self, role="__test_role", functionalities=None): if functionalities is None: functionalities = [] self.roles = [G(role, functionalities)] request.user = U() login = Login(request) request.client_addr = "192.168.2.20" self.assertEqual( login.loginuser(), { "email": "*****@*****.**", "functionalities": {}, "is_intranet": False, "roles": [{ "id": 123, "name": "__test_role" }], "two_factor_enable": False, "username": "******", }, ) login = Login(request) request.client_addr = "192.168.1.20" self.assertEqual( login.loginuser(), { "email": "*****@*****.**", "functionalities": {}, "is_intranet": True, "roles": [{ "id": 123, "name": "__test_role" }], "two_factor_enable": False, "username": "******", }, )
def test_login_0(self): from tests import DummyRequest from c2cgeoportal_geoportal.views.login import Login request = DummyRequest() request.is_valid_referer = True request.user = None login = Login(request) request.path = "/for_test" responce = login.loginform403() assert responce["came_from"] == "/for_test" request.params = {"came_from": "/for_a_second_test"} login = Login(request) responce = login.loginform() assert responce["came_from"] == "/for_a_second_test" login = Login(request) request.params = {} responce = login.loginform() assert responce["came_from"] == "/" request.registry.settings = { "functionalities": { "available_in_templates": ["func"] }, "admin_interface": { "available_functionalities": [{ "name": "func" }] }, } fill_tech_user_functionality("anonymous", (("func", "anon"), ("toto", "anon_value2"))) fill_tech_user_functionality("registered", (("func", "reg"), )) login = Login(request) self.assertEqual(login.loginuser()["functionalities"], {"func": ["anon"]}) class R: id = 123 def __init__(self, name, functionalities): self.name = name self.functionalities = functionalities class U: username = "******" is_password_changed = True email = "*****@*****.**" settings_role = None def __init__(self, role="__test_role", functionalities=None): if functionalities is None: functionalities = [] self.roles = [R(role, functionalities)] request.user = U() login = Login(request) expected = { "username": "******", "email": "*****@*****.**", "is_intranet": False, "two_factor_enable": False, "roles": [{ "name": "__test_role", "id": 123 }], "functionalities": { "func": ["reg"] }, } self.assertEqual(login.loginuser(), expected) class F: name = "func" value = "value" request.user = U("__test_role2", [F()]) login = Login(request) expected = { "username": "******", "email": "*****@*****.**", "is_intranet": False, "two_factor_enable": False, "roles": [{ "name": "__test_role2", "id": 123 }], "functionalities": { "func": ["value"] }, } self.assertEqual(login.loginuser(), expected)