Fix tests on Python 3.5
This commit is contained in:
parent
c7bfe0d537
commit
63ba0a5551
4 changed files with 47 additions and 41 deletions
|
@ -40,6 +40,7 @@ class TestContent:
|
|||
|
||||
def testInlcudeLimits(self, site, crypt_bitcoin_lib):
|
||||
# Data validation
|
||||
res = []
|
||||
data_dict = {
|
||||
"files": {
|
||||
"data.json": {
|
||||
|
@ -51,19 +52,21 @@ class TestContent:
|
|||
}
|
||||
|
||||
# Normal data
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict), self.privatekey)}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)}
|
||||
data_json = json.dumps(data_dict).encode()
|
||||
data = io.BytesIO(data_json)
|
||||
assert site.content_manager.verifyFile("data/test_include/content.json", data, ignore_same=False)
|
||||
|
||||
# Reset
|
||||
del data_dict["signs"]
|
||||
|
||||
# Too large
|
||||
data_dict["files"]["data.json"]["size"] = 200000 # Emulate 2MB sized data.json
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict), self.privatekey)}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)}
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile("data/test_include/content.json", data, ignore_same=False)
|
||||
assert "Include too large" in str(err)
|
||||
assert "Include too large" in str(err)
|
||||
|
||||
# Reset
|
||||
data_dict["files"]["data.json"]["size"] = 505
|
||||
|
@ -71,19 +74,19 @@ class TestContent:
|
|||
|
||||
# Not allowed file
|
||||
data_dict["files"]["notallowed.exe"] = data_dict["files"]["data.json"]
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict), self.privatekey)}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)}
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile("data/test_include/content.json", data, ignore_same=False)
|
||||
assert "File not allowed" in str(err)
|
||||
assert "File not allowed" in str(err)
|
||||
|
||||
# Reset
|
||||
del data_dict["files"]["notallowed.exe"]
|
||||
del data_dict["signs"]
|
||||
|
||||
# Should work again
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict), self.privatekey)}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data_dict["signs"] = {"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)}
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile("data/test_include/content.json", data, ignore_same=False)
|
||||
|
||||
@pytest.mark.parametrize("inner_path", ["content.json", "data/test_include/content.json", "data/users/content.json"])
|
||||
|
@ -166,7 +169,7 @@ class TestContent:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)
|
||||
}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(inner_path, data, ignore_same=False)
|
||||
assert "Wrong site address" in str(err)
|
||||
|
@ -178,7 +181,7 @@ class TestContent:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)
|
||||
}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(inner_path, data, ignore_same=False)
|
||||
assert "Wrong inner_path" in str(err)
|
||||
|
@ -190,7 +193,7 @@ class TestContent:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)
|
||||
}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile(inner_path, data, ignore_same=False)
|
||||
|
||||
def testVerifyInnerPath(self, site, crypt_bitcoin_lib):
|
||||
|
@ -206,7 +209,7 @@ class TestContent:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)
|
||||
}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile(inner_path, data, ignore_same=False)
|
||||
|
||||
for bad_relative_path in ["../data.json", "data/" * 100, "invalid|file.jpg"]:
|
||||
|
@ -218,7 +221,7 @@ class TestContent:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), self.privatekey)
|
||||
}
|
||||
data = io.StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(inner_path, data, ignore_same=False)
|
||||
assert "Invalid relative path" in str(err)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import json
|
||||
from io import StringIO
|
||||
import io
|
||||
|
||||
import pytest
|
||||
|
||||
|
@ -91,7 +91,7 @@ class TestContentUser:
|
|||
data_dict = site.storage.loadJson(user_inner_path)
|
||||
users_content = site.content_manager.contents["data/users/content.json"]
|
||||
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
|
||||
# Test error on 15k data.json
|
||||
|
@ -100,7 +100,7 @@ class TestContentUser:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), privatekey)
|
||||
}
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
assert "Include too large" in str(err)
|
||||
|
@ -111,7 +111,7 @@ class TestContentUser:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), privatekey)
|
||||
}
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
|
||||
def testVerify(self, site):
|
||||
|
@ -120,7 +120,7 @@ class TestContentUser:
|
|||
data_dict = site.storage.loadJson(user_inner_path)
|
||||
users_content = site.content_manager.contents["data/users/content.json"]
|
||||
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
|
||||
# Test max size exception by setting allowed to 0
|
||||
|
@ -131,7 +131,7 @@ class TestContentUser:
|
|||
users_content["user_contents"]["permission_rules"][".*"]["max_size"] = 0
|
||||
rules = site.content_manager.getRules(user_inner_path, data_dict)
|
||||
assert rules["max_size"] == 0
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
|
@ -145,7 +145,7 @@ class TestContentUser:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), privatekey)
|
||||
}
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
assert site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
|
||||
# 100 MB gif = Not allowed
|
||||
|
@ -154,7 +154,7 @@ class TestContentUser:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), privatekey)
|
||||
}
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
assert "Include optional files too large" in str(err)
|
||||
|
@ -166,7 +166,7 @@ class TestContentUser:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), privatekey)
|
||||
}
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
assert "Optional file not allowed" in str(err)
|
||||
|
@ -178,7 +178,7 @@ class TestContentUser:
|
|||
data_dict["signs"] = {
|
||||
"1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT": CryptBitcoin.sign(json.dumps(data_dict, sort_keys=True), privatekey)
|
||||
}
|
||||
data = StringIO(json.dumps(data_dict))
|
||||
data = io.BytesIO(json.dumps(data_dict).encode())
|
||||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(user_inner_path, data, ignore_same=False)
|
||||
assert "Includes not allowed" in str(err)
|
||||
|
@ -227,7 +227,7 @@ class TestContentUser:
|
|||
# Test user cert
|
||||
assert site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
|
||||
# Test banned user
|
||||
|
@ -236,7 +236,7 @@ class TestContentUser:
|
|||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
assert "Valid signs: 0/1" in str(err)
|
||||
del site.content_manager.contents["data/users/content.json"]["user_contents"]["permissions"][cert_user_id] # Reset
|
||||
|
@ -251,7 +251,7 @@ class TestContentUser:
|
|||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
assert "Invalid cert" in str(err)
|
||||
|
||||
|
@ -270,7 +270,7 @@ class TestContentUser:
|
|||
}
|
||||
assert site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(user_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(user_content).encode()), ignore_same=False
|
||||
)
|
||||
|
||||
def testMissingCert(self, site):
|
||||
|
@ -297,7 +297,7 @@ class TestContentUser:
|
|||
|
||||
assert site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
|
||||
# Test invalid cert_user_id
|
||||
|
@ -311,7 +311,7 @@ class TestContentUser:
|
|||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
assert "Invalid domain in cert_user_id" in str(err)
|
||||
|
||||
|
@ -328,7 +328,7 @@ class TestContentUser:
|
|||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
assert "Missing cert_user_id" in str(err)
|
||||
|
||||
|
@ -355,7 +355,7 @@ class TestContentUser:
|
|||
|
||||
assert site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
|
||||
# Cert does not matches the pattern
|
||||
|
@ -364,7 +364,7 @@ class TestContentUser:
|
|||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
assert "Invalid cert signer: 14wgQ4VDDZNoRMFF4yCDuTrBSHmYhL3bet" in str(err)
|
||||
|
||||
|
@ -374,7 +374,7 @@ class TestContentUser:
|
|||
with pytest.raises(VerifyError) as err:
|
||||
site.content_manager.verifyFile(
|
||||
"data/users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C/content.json",
|
||||
StringIO(json.dumps(signed_content)), ignore_same=False
|
||||
io.BytesIO(json.dumps(signed_content).encode()), ignore_same=False
|
||||
)
|
||||
assert "Invalid cert signer: 14wgQ4VDDZNoRMFF4yCDuTrBSHmYhL3bet" in str(err)
|
||||
|
||||
|
|
|
@ -103,14 +103,14 @@ class TestDb:
|
|||
|
||||
|
||||
def testUpdateJson(self, db):
|
||||
f = io.StringIO()
|
||||
f = io.BytesIO()
|
||||
f.write("""
|
||||
{
|
||||
"test": [
|
||||
{"test_id": 1, "title": "Test 1 title", "extra col": "Ignore it"}
|
||||
]
|
||||
}
|
||||
""")
|
||||
""".encode())
|
||||
f.seek(0)
|
||||
assert db.updateJson(db.db_dir + "data.json", f) is True
|
||||
assert db.execute("SELECT COUNT(*) AS num FROM test_importfilter").fetchone()["num"] == 1
|
||||
|
@ -129,4 +129,4 @@ class TestDb:
|
|||
f.seek(0)
|
||||
assert db.updateJson(db.db_dir + "data.json", f) is False
|
||||
assert db.execute("SELECT COUNT(*) AS num FROM test_importfilter").fetchone()["num"] == 0
|
||||
assert db.execute("SELECT COUNT(*) AS num FROM test").fetchone()["num"] == 0
|
||||
assert db.execute("SELECT COUNT(*) AS num FROM test").fetchone()["num"] == 0
|
||||
|
|
|
@ -6,14 +6,17 @@ import pytest
|
|||
|
||||
from Config import config
|
||||
from util import Msgpack
|
||||
from collections import OrderedDict
|
||||
|
||||
|
||||
class TestMsgpack:
|
||||
test_data = {"cmd": "fileGet", "params": {"site": "1Site"}, "utf8": b'\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91'.decode("utf8"), "bin": b'p\x81zDhL\xf0O\xd0\xaf', "list": [b'p\x81zDhL\xf0O\xd0\xaf', b'p\x81zDhL\xf0O\xd0\xaf']}
|
||||
test_data = OrderedDict(
|
||||
sorted({"cmd": "fileGet", "bin": b'p\x81zDhL\xf0O\xd0\xaf', "params": {"site": "1Site"}, "utf8": b'\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91'.decode("utf8"), "list": [b'p\x81zDhL\xf0O\xd0\xaf', b'p\x81zDhL\xf0O\xd0\xaf']}.items())
|
||||
)
|
||||
|
||||
def testPacking(self):
|
||||
assert Msgpack.pack(self.test_data) == b'\x85\xa3cmd\xa7fileGet\xa6params\x81\xa4site\xa51Site\xa4utf8\xad\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91\xa3bin\xc4\np\x81zDhL\xf0O\xd0\xaf\xa4list\x92\xc4\np\x81zDhL\xf0O\xd0\xaf\xc4\np\x81zDhL\xf0O\xd0\xaf'
|
||||
assert Msgpack.pack(self.test_data, use_bin_type=False) == b'\x85\xa3cmd\xa7fileGet\xa6params\x81\xa4site\xa51Site\xa4utf8\xad\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91\xa3bin\xaap\x81zDhL\xf0O\xd0\xaf\xa4list\x92\xaap\x81zDhL\xf0O\xd0\xaf\xaap\x81zDhL\xf0O\xd0\xaf'
|
||||
assert Msgpack.pack(self.test_data) == b'\x85\xa3bin\xc4\np\x81zDhL\xf0O\xd0\xaf\xa3cmd\xa7fileGet\xa4list\x92\xc4\np\x81zDhL\xf0O\xd0\xaf\xc4\np\x81zDhL\xf0O\xd0\xaf\xa6params\x81\xa4site\xa51Site\xa4utf8\xad\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91'
|
||||
assert Msgpack.pack(self.test_data, use_bin_type=False) == b'\x85\xa3bin\xaap\x81zDhL\xf0O\xd0\xaf\xa3cmd\xa7fileGet\xa4list\x92\xaap\x81zDhL\xf0O\xd0\xaf\xaap\x81zDhL\xf0O\xd0\xaf\xa6params\x81\xa4site\xa51Site\xa4utf8\xad\xc3\xa1rv\xc3\xadzt\xc5\xb1r\xc5\x91'
|
||||
|
||||
def testUnpackinkg(self):
|
||||
assert Msgpack.unpack(Msgpack.pack(self.test_data)) == self.test_data
|
||||
|
|
Loading…
Reference in a new issue