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))
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")
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)
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()
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),) ) )