Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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")
Ejemplo n.º 4
0
    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")
Ejemplo n.º 5
0
    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)