2015-09-20 00:27:54 +02:00
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
import urllib
|
2015-09-22 12:16:29 +02:00
|
|
|
import time
|
2015-09-24 22:08:08 +02:00
|
|
|
import logging
|
2015-09-20 00:27:54 +02:00
|
|
|
|
|
|
|
import pytest
|
2015-09-24 22:08:08 +02:00
|
|
|
import mock
|
2015-09-20 00:27:54 +02:00
|
|
|
|
|
|
|
# Config
|
|
|
|
if sys.platform == "win32":
|
|
|
|
PHANTOMJS_PATH = "tools/phantomjs/bin/phantomjs.exe"
|
|
|
|
else:
|
|
|
|
PHANTOMJS_PATH = "phantomjs"
|
|
|
|
SITE_URL = "http://127.0.0.1:43110"
|
|
|
|
|
|
|
|
# Imports relative to src dir
|
|
|
|
sys.path.append(
|
2015-09-24 22:08:08 +02:00
|
|
|
os.path.abspath(os.path.dirname(__file__) + "/..")
|
2015-09-20 00:27:54 +02:00
|
|
|
)
|
|
|
|
from Config import config
|
|
|
|
config.argv = ["none"] # Dont pass any argv to config parser
|
|
|
|
config.parse()
|
|
|
|
config.data_dir = "src/Test/testdata" # Use test data for unittests
|
2015-09-24 22:08:08 +02:00
|
|
|
logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)
|
2015-09-20 00:27:54 +02:00
|
|
|
|
|
|
|
from Site import Site
|
|
|
|
from User import UserManager
|
2015-09-24 22:08:08 +02:00
|
|
|
from File import FileServer
|
2015-09-22 12:16:29 +02:00
|
|
|
from Connection import ConnectionServer
|
|
|
|
from Crypt import CryptConnection
|
|
|
|
import gevent
|
|
|
|
from gevent import monkey
|
|
|
|
monkey.patch_all(thread=False)
|
2015-09-20 00:27:54 +02:00
|
|
|
|
2015-09-24 22:08:08 +02:00
|
|
|
|
2015-09-20 00:27:54 +02:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def resetSettings(request):
|
2015-09-24 22:08:08 +02:00
|
|
|
os.chdir(os.path.abspath(os.path.dirname(__file__) + "/../..")) # Set working dir
|
2015-09-20 00:27:54 +02:00
|
|
|
open("%s/sites.json" % config.data_dir, "w").write("{}")
|
|
|
|
open("%s/users.json" % config.data_dir, "w").write("""
|
|
|
|
{
|
|
|
|
"15E5rhcAUD69WbiYsYARh4YHJ4sLm2JEyc": {
|
|
|
|
"certs": {},
|
|
|
|
"master_seed": "024bceac1105483d66585d8a60eaf20aa8c3254b0f266e0d626ddb6114e2949a",
|
|
|
|
"sites": {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
""")
|
2015-09-24 22:08:08 +02:00
|
|
|
|
2015-09-20 00:27:54 +02:00
|
|
|
def cleanup():
|
|
|
|
os.unlink("%s/sites.json" % config.data_dir)
|
|
|
|
os.unlink("%s/users.json" % config.data_dir)
|
|
|
|
request.addfinalizer(cleanup)
|
|
|
|
|
2015-09-24 22:08:08 +02:00
|
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def resetTempSettings(request):
|
|
|
|
data_dir_temp = config.data_dir + "-temp"
|
|
|
|
if not os.path.isdir(data_dir_temp):
|
|
|
|
os.mkdir(data_dir_temp)
|
|
|
|
open("%s/sites.json" % data_dir_temp, "w").write("{}")
|
|
|
|
open("%s/users.json" % data_dir_temp, "w").write("""
|
|
|
|
{
|
|
|
|
"15E5rhcAUD69WbiYsYARh4YHJ4sLm2JEyc": {
|
|
|
|
"certs": {},
|
|
|
|
"master_seed": "024bceac1105483d66585d8a60eaf20aa8c3254b0f266e0d626ddb6114e2949a",
|
|
|
|
"sites": {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
""")
|
|
|
|
|
|
|
|
def cleanup():
|
|
|
|
os.unlink("%s/sites.json" % data_dir_temp)
|
|
|
|
os.unlink("%s/users.json" % data_dir_temp)
|
|
|
|
request.addfinalizer(cleanup)
|
|
|
|
|
|
|
|
|
2015-09-20 00:27:54 +02:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def site():
|
|
|
|
site = Site("1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT")
|
|
|
|
return site
|
|
|
|
|
|
|
|
|
2015-09-24 22:08:08 +02:00
|
|
|
@pytest.fixture()
|
|
|
|
def site_temp(request):
|
|
|
|
with mock.patch("Config.config.data_dir", config.data_dir+"-temp"):
|
|
|
|
site_temp = Site("1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT")
|
|
|
|
def cleanup():
|
|
|
|
site_temp.storage.deleteFiles()
|
|
|
|
request.addfinalizer(cleanup)
|
|
|
|
return site_temp
|
|
|
|
|
|
|
|
|
2015-09-20 00:27:54 +02:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def user():
|
|
|
|
user = UserManager.user_manager.get()
|
Rev426, Fix for nonce error on bigsites asking, Dont display error details on 404 error, Dont log Websocket close errors, Add travis pip caching and osx test, Add build status to readme, Test for site files after cloning, Test for json to db mapping, Test site deleteFiles command, Test user certificate and auth address generation, Exclude debug lines from coverage, Dont run webtests every time
2015-09-20 22:35:45 +02:00
|
|
|
user.sites = {} # Reset user data
|
2015-09-20 00:27:54 +02:00
|
|
|
return user
|
|
|
|
|
2015-09-24 22:08:08 +02:00
|
|
|
|
2015-09-20 00:27:54 +02:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def browser():
|
|
|
|
try:
|
|
|
|
from selenium import webdriver
|
|
|
|
browser = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, service_log_path=os.path.devnull)
|
|
|
|
browser.set_window_size(1400, 1000)
|
|
|
|
except Exception, err:
|
|
|
|
raise pytest.skip("Test requires selenium + phantomjs: %s" % err)
|
|
|
|
return browser
|
|
|
|
|
2015-09-24 22:08:08 +02:00
|
|
|
|
2015-09-20 00:27:54 +02:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def site_url():
|
|
|
|
try:
|
|
|
|
urllib.urlopen(SITE_URL).read()
|
|
|
|
except Exception, err:
|
|
|
|
raise pytest.skip("Test requires zeronet client running: %s" % err)
|
|
|
|
return SITE_URL
|
2015-09-22 12:16:29 +02:00
|
|
|
|
2015-09-24 22:08:08 +02:00
|
|
|
|
2015-09-22 12:16:29 +02:00
|
|
|
@pytest.fixture(scope="session")
|
2015-09-24 22:08:08 +02:00
|
|
|
def file_server(request):
|
|
|
|
CryptConnection.manager.loadCerts() # Load and create certs
|
|
|
|
request.addfinalizer(CryptConnection.manager.removeCerts) # Remove cert files after end
|
|
|
|
file_server = FileServer("127.0.0.1", 1544)
|
|
|
|
gevent.spawn(lambda: ConnectionServer.start(file_server))
|
|
|
|
time.sleep(0) # Port opening
|
|
|
|
assert file_server.running
|
|
|
|
return file_server
|
|
|
|
|