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:
parent
a891b544d3
commit
4b403da056
24 changed files with 221 additions and 226 deletions
|
@ -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
17
src/Test/TestHelper.py
Normal 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)
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue