Example #1
0
    def test_data(self):
        request = appier.Request("GET", "/")
        request.set_data(appier.legacy.bytes("hello world", encoding="utf-8"))

        self.assertEqual(type(request.get_data()), bytes)
        self.assertEqual(request.get_data(),
                         appier.legacy.bytes("hello world", encoding="utf-8"))
        self.assertEqual(type(request.get_encoded()), appier.legacy.UNICODE)
        self.assertEqual(request.get_encoded(), appier.legacy.u("hello world"))

        request = appier.Request("GET", "/")
        request.set_data(appier.legacy.bytes("你好世界", encoding="utf-8"))

        self.assertEqual(type(request.get_data()), bytes)
        self.assertEqual(request.get_data(),
                         appier.legacy.bytes("你好世界", encoding="utf-8"))
        self.assertEqual(type(request.get_encoded()), appier.legacy.UNICODE)
        self.assertEqual(request.get_encoded(), appier.legacy.u("你好世界"))
        self.assertEqual(type(request.get_encoded(encoding="ascii")), bytes)
        self.assertEqual(request.get_data(),
                         appier.legacy.bytes("你好世界", encoding="utf-8"))
        self.assertRaises(
            UnicodeDecodeError,
            lambda: request.get_encoded(encoding="ascii", safe=False))
Example #2
0
    def test_get_address(self):
        request = appier.Request("GET", "/", address="127.0.0.1")

        self.assertEqual(request.get_address(), "127.0.0.1")

        request.in_headers["X-Forwarded-For"] = "1.1.1.1, 1.1.1.2, 1.1.1.3"
        self.assertEqual(request.get_address(), "1.1.1.1")

        request.in_headers["X-Client-Ip"] = "2.2.2.2"
        self.assertEqual(request.get_address(), "2.2.2.2")

        request.in_headers["X-Real-Ip"] = "3.3.3.3"
        self.assertEqual(request.get_address(), "3.3.3.3")

        result = request.get_address(resolve=False)
        self.assertEqual(result, "127.0.0.1")
Example #3
0
    def test_check_login(self):
        request = appier.Request("GET", "/", session_c=appier.MemorySession)

        request.session["tokens"] = ["*"]
        result = appier.check_login(None, token="admin", request=request)
        self.assertEqual(result, True)
        self.assertEqual(request.session["tokens"], {"*": True})

        request.session["tokens"] = []
        result = appier.check_login(None, token="admin", request=request)
        self.assertEqual(result, False)
        self.assertEqual(request.session["tokens"], {})

        request.session["tokens"] = ["admin"]
        result = appier.check_login(None, token="admin", request=request)
        self.assertEqual(result, True)
        self.assertEqual(request.session["tokens"], {"admin": True})

        request.session["tokens"] = ["admin.read"]
        result = appier.check_login(None, token="admin.read", request=request)
        self.assertEqual(result, True)
        self.assertEqual(request.session["tokens"], {"admin": {"read": True}})

        request.session["tokens"] = ["admin.*"]
        result = appier.check_login(None, token="admin.read", request=request)
        self.assertEqual(result, True)
        self.assertEqual(request.session["tokens"], {"admin": {"*": True}})

        request.session["tokens"] = ["admin", "admin.write"]
        result = appier.check_login(None, token="admin.read", request=request)
        self.assertEqual(result, False)
        self.assertEqual(request.session["tokens"], {"admin": {"write": True}})

        request.session["tokens"] = ["admin.write", "admin.*"]
        result = appier.check_login(None, token="admin.read", request=request)
        self.assertEqual(result, True)
        self.assertEqual(request.session["tokens"],
                         {"admin": {
                             "write": True,
                             "*": True
                         }})

        del request.session["tokens"]
        result = appier.check_login(None, token="admin.read", request=request)
        self.assertEqual(result, False)
        self.assertEqual("tokens" in request.session, False)
Example #4
0
    def test_mock(self):
        request = appier.Request("GET",
                                 "/",
                                 address="127.0.0.1",
                                 session_c=appier.FileSession)
        request.load_session()

        sid = request.session.sid

        self.assertEqual(request.session.__class__, appier.MockSession)
        self.assertEqual(request.session.sid, sid)
        self.assertEqual(request.session.address, "127.0.0.1")

        request.session["first"] = 1

        self.assertNotEqual(request.set_cookie, None)

        self.assertEqual(request.session["first"], 1)
        self.assertEqual(request.session.__class__, appier.FileSession)
        self.assertEqual(request.session.sid, sid)
        self.assertEqual(request.session.address, "127.0.0.1")

        appier.FileSession.close()
Example #5
0
    def test_field(self):
        request = appier.Request("GET", "/")
        request.set_params(
            dict(
                name = ["john doe"],
                message = [""],
                valid_email = ["*****@*****.**"],
                invalid_email = ["john"],
                valid_length = ["1234"],
                invalid_length = ["12345"]
            ),
        )
        self.app._request = request

        value = self.app.field("name")
        self.assertEqual(value, "john doe")

        value = self.app.field("message", mandatory = True)
        self.assertEqual(value, "")

        value = self.app.field(
            "valid_email",
            mandatory = True,
            not_empty = True,
            validation = (appier.is_email,)
        )
        self.assertEqual(value, "*****@*****.**")

        value = self.app.field(
            "valid_length",
            mandatory = True,
            not_empty = True,
            validation = ((appier.string_lt, 5),)
        )
        self.assertEqual(value, "1234")

        self.assertRaises(
            appier.OperationalError,
            lambda: self.app.field("other", mandatory = True)
        )

        self.assertRaises(
            appier.OperationalError,
            lambda: self.app.field("message", mandatory = True, not_empty = True)
        )

        self.assertRaises(
            appier.ValidationInternalError,
            lambda: self.app.field(
                "invalid_email",
                mandatory = True,
                not_empty = True,
                validation = (appier.is_email,)
            )
        )

        self.assertRaises(
            appier.ValidationInternalError,
            lambda: self.app.field(
                "invalid_length",
                mandatory = True,
                not_empty = True,
                validation = ((appier.string_lt, 5),)
            )
        )