Rev448, Better file download priority method, Some potential programming error fix, Renamed utils to helper, Moved pack and unpackaddress to helper package, Test new privatekey creation, Test site file download order, Spy test helper to log called parameters, Remove unnecessary fat arrows

This commit is contained in:
HelloZeroNet 2015-09-27 02:08:53 +02:00
parent a891b544d3
commit 4b403da056
24 changed files with 221 additions and 226 deletions

View file

@ -42,3 +42,16 @@ class TestCryptBitcoin:
# Signed by bad privatekey
sign_bad = CryptBitcoin.sign("hello", privatekey_bad)
assert not CryptBitcoin.verify("hello", address, sign_bad)
def testNewPrivatekey(self):
assert CryptBitcoin.newPrivatekey() != CryptBitcoin.newPrivatekey()
assert CryptBitcoin.privatekeyToAddress(CryptBitcoin.newPrivatekey())
def testNewSeed(self):
assert CryptBitcoin.newSeed() != CryptBitcoin.newSeed()
assert CryptBitcoin.privatekeyToAddress(
CryptBitcoin.hdPrivatekey(CryptBitcoin.newSeed(), 0)
)
assert CryptBitcoin.privatekeyToAddress(
CryptBitcoin.hdPrivatekey(CryptBitcoin.newSeed(), 2**256)
)

17
src/Test/TestHelper.py Normal file
View file

@ -0,0 +1,17 @@
class Spy:
def __init__(self, obj, func_name):
self.obj = obj
self.func_name = func_name
self.func_original = getattr(self.obj, func_name)
self.calls = []
def __enter__(self, *args, **kwargs):
def loggedFunc(cls, *args, **kwags):
print "Logging", self, args, kwargs
self.calls.append(args)
return self.func_original(cls, *args, **kwargs)
setattr(self.obj, self.func_name, loggedFunc)
return self.calls
def __exit__(self, *args, **kwargs):
setattr(self.obj, self.func_name, self.func_original)

View file

@ -1,22 +1,21 @@
import time
import os
import gevent
import pytest
import mock
import time
from Crypt import CryptConnection
from Connection import ConnectionServer
from Config import config
from Site import Site
from File import FileRequest
import TestHelper
@pytest.mark.usefixtures("resetTempSettings")
@pytest.mark.usefixtures("resetSettings")
class TestWorker:
def testDownload(self, file_server, site, site_temp):
client = ConnectionServer("127.0.0.1", 1545)
assert site.storage.directory == config.data_dir+"/"+site.address
assert site_temp.storage.directory == config.data_dir+"-temp/"+site.address
assert site.storage.directory == config.data_dir + "/" + site.address
assert site_temp.storage.directory == config.data_dir + "-temp/" + site.address
# Init source server
site.connection_server = file_server
@ -26,10 +25,29 @@ class TestWorker:
site_temp.connection_server = client
site_temp.announce = mock.MagicMock(return_value=True) # Don't try to find peers from the net
# Download to client from source
site_temp.addPeer("127.0.0.1", 1544)
site_temp.download().join(timeout=5)
with TestHelper.Spy(FileRequest, "route") as requests:
def boostRequest(inner_path):
# I really want these file
if inner_path == "index.html":
print "needFile"
site_temp.needFile("data/img/multiuser.png", priority=9, blocking=False)
site_temp.needFile("data/img/direct_domains.png", priority=10, blocking=False)
site_temp.onFileDone.append(boostRequest)
site_temp.download(blind_includes=True).join(timeout=5)
file_requests = [request[2]["inner_path"] for request in requests if request[0] in ("getFile", "streamFile")]
# Test priority
assert file_requests[0:2] == ["content.json", "index.html"] # Must-have files
assert file_requests[2:4] == ["data/img/direct_domains.png", "data/img/multiuser.png"] # Directly requested files
assert file_requests[4:6] == ["css/all.css", "js/all.js"] # Important assets
assert file_requests[6] == "dbschema.json" # Database map
assert "-default" in file_requests[-1] # Put default files for cloning to the end
assert not site_temp.bad_files
# Check files
bad_files = site_temp.storage.verifyFiles(quick_check=True)
# -1 because data/users/1J6... user has invalid cert
assert len(site_temp.content_manager.contents) == len(site.content_manager.contents) - 1
assert not bad_files
site_temp.storage.deleteFiles()