WIP: remove unused server tests, minor syntax fixes. still fails.
This commit is contained in:
parent
9957044a99
commit
37a7ed7adc
|
@ -7,6 +7,7 @@ import mock
|
||||||
from ..cli import cli
|
from ..cli import cli
|
||||||
from ..transit import allocate_tcp_port
|
from ..transit import allocate_tcp_port
|
||||||
from wormhole_mailbox_server.server import make_server
|
from wormhole_mailbox_server.server import make_server
|
||||||
|
from wormhole_mailbox_server.web import make_web_server
|
||||||
from wormhole_mailbox_server.database import create_channel_db
|
from wormhole_mailbox_server.database import create_channel_db
|
||||||
from wormhole_transit_relay.transit_server import Transit
|
from wormhole_transit_relay.transit_server import Transit
|
||||||
|
|
||||||
|
@ -23,9 +24,9 @@ class ServerBase:
|
||||||
self._rendezvous = make_server(db,
|
self._rendezvous = make_server(db,
|
||||||
advertise_version=advertise_version,
|
advertise_version=advertise_version,
|
||||||
signal_error=error)
|
signal_error=error)
|
||||||
ep = endpoints.TCP4ServerEndpoint(reactor 0, interface="127.0.01")
|
ep = endpoints.TCP4ServerEndpoint(reactor, 0, interface="127.0.01")
|
||||||
site = make_web_server(self._rendezvous)
|
site = make_web_server(self._rendezvous, log_requests=False)
|
||||||
s = StreamServerEndpointService(ep, site)
|
s = internet.StreamServerEndpointService(ep, site)
|
||||||
s.setServiceParent(self.sp)
|
s.setServiceParent(self.sp)
|
||||||
self.rdv_ws_port = s.__lp.getHost().port
|
self.rdv_ws_port = s.__lp.getHost().port
|
||||||
self._relay_server = s
|
self._relay_server = s
|
||||||
|
|
|
@ -17,8 +17,6 @@ from ..cli import cmd_send, cmd_receive, welcome, cli
|
||||||
from ..errors import (TransferError, WrongPasswordError, WelcomeError,
|
from ..errors import (TransferError, WrongPasswordError, WelcomeError,
|
||||||
UnsendableFileError, ServerConnectionError)
|
UnsendableFileError, ServerConnectionError)
|
||||||
from .._interfaces import ITorManager
|
from .._interfaces import ITorManager
|
||||||
from wormhole.server.cmd_server import MyPlugin
|
|
||||||
from wormhole.server.cli import server
|
|
||||||
|
|
||||||
|
|
||||||
def build_offer(args):
|
def build_offer(args):
|
||||||
|
@ -1260,97 +1258,3 @@ class Help(unittest.TestCase):
|
||||||
result = CliRunner().invoke(cli.wormhole, ["--help"])
|
result = CliRunner().invoke(cli.wormhole, ["--help"])
|
||||||
self._check_top_level_help(result.output)
|
self._check_top_level_help(result.output)
|
||||||
self.assertEqual(result.exit_code, 0)
|
self.assertEqual(result.exit_code, 0)
|
||||||
|
|
||||||
class FakeConfig(object):
|
|
||||||
no_daemon = True
|
|
||||||
blur_usage = True
|
|
||||||
advertise_version = u"fake.version.1"
|
|
||||||
transit = str('tcp:4321')
|
|
||||||
rendezvous = str('tcp:1234')
|
|
||||||
signal_error = True
|
|
||||||
allow_list = False
|
|
||||||
relay_database_path = "relay.sqlite"
|
|
||||||
stats_json_path = "stats.json"
|
|
||||||
|
|
||||||
|
|
||||||
class Server(unittest.TestCase):
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.runner = CliRunner()
|
|
||||||
|
|
||||||
@mock.patch('wormhole.server.cmd_server.twistd')
|
|
||||||
def test_server_disallow_list(self, fake_twistd):
|
|
||||||
result = self.runner.invoke(server, ['start', '--no-daemon', '--disallow-list'])
|
|
||||||
self.assertEqual(0, result.exit_code)
|
|
||||||
|
|
||||||
def test_server_plugin(self):
|
|
||||||
cfg = FakeConfig()
|
|
||||||
plugin = MyPlugin(cfg)
|
|
||||||
relay = plugin.makeService(None)
|
|
||||||
self.assertEqual(False, relay._allow_list)
|
|
||||||
|
|
||||||
@mock.patch("wormhole.server.cmd_server.start_server")
|
|
||||||
def test_start_no_args(self, fake_start_server):
|
|
||||||
result = self.runner.invoke(server, ['start'])
|
|
||||||
self.assertEqual(0, result.exit_code)
|
|
||||||
cfg = fake_start_server.mock_calls[0][1][0]
|
|
||||||
MyPlugin(cfg).makeService(None)
|
|
||||||
|
|
||||||
@mock.patch("wormhole.server.cmd_server.restart_server")
|
|
||||||
def test_restart_no_args(self, fake_start_reserver):
|
|
||||||
result = self.runner.invoke(server, ['restart'])
|
|
||||||
self.assertEqual(0, result.exit_code)
|
|
||||||
cfg = fake_start_reserver.mock_calls[0][1][0]
|
|
||||||
MyPlugin(cfg).makeService(None)
|
|
||||||
|
|
||||||
def test_state_locations(self):
|
|
||||||
cfg = FakeConfig()
|
|
||||||
plugin = MyPlugin(cfg)
|
|
||||||
relay = plugin.makeService(None)
|
|
||||||
self.assertEqual('relay.sqlite', relay._db_url)
|
|
||||||
self.assertEqual('stats.json', relay._stats_file)
|
|
||||||
|
|
||||||
@mock.patch("wormhole.server.cmd_server.start_server")
|
|
||||||
def test_websocket_protocol_options(self, fake_start_server):
|
|
||||||
result = self.runner.invoke(
|
|
||||||
server, [
|
|
||||||
'start',
|
|
||||||
'--websocket-protocol-option=a=3',
|
|
||||||
'--websocket-protocol-option=b=true',
|
|
||||||
'--websocket-protocol-option=c=3.5',
|
|
||||||
'--websocket-protocol-option=d=["foo","bar"]',
|
|
||||||
'--websocket-protocol-option', 'e=["foof","barf"]',
|
|
||||||
])
|
|
||||||
self.assertEqual(0, result.exit_code)
|
|
||||||
cfg = fake_start_server.mock_calls[0][1][0]
|
|
||||||
self.assertEqual(
|
|
||||||
cfg.websocket_protocol_option,
|
|
||||||
[("a", 3), ("b", True), ("c", 3.5), ("d", ['foo', 'bar']),
|
|
||||||
("e", ['foof', 'barf']),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_broken_websocket_protocol_options(self):
|
|
||||||
result = self.runner.invoke(
|
|
||||||
server, [
|
|
||||||
'start',
|
|
||||||
'--websocket-protocol-option=a',
|
|
||||||
])
|
|
||||||
self.assertNotEqual(0, result.exit_code)
|
|
||||||
self.assertIn(
|
|
||||||
'Error: Invalid value for "--websocket-protocol-option": '
|
|
||||||
'format options as OPTION=VALUE',
|
|
||||||
result.output,
|
|
||||||
)
|
|
||||||
|
|
||||||
result = self.runner.invoke(
|
|
||||||
server, [
|
|
||||||
'start',
|
|
||||||
'--websocket-protocol-option=a=foo',
|
|
||||||
])
|
|
||||||
self.assertNotEqual(0, result.exit_code)
|
|
||||||
self.assertIn(
|
|
||||||
'Error: Invalid value for "--websocket-protocol-option": '
|
|
||||||
'could not parse JSON value for a',
|
|
||||||
result.output,
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
from __future__ import print_function, unicode_literals
|
|
||||||
import os
|
|
||||||
from twisted.python import filepath
|
|
||||||
from twisted.trial import unittest
|
|
||||||
from ..server import database
|
|
||||||
from ..server.database import get_db, TARGET_VERSION, dump_db
|
|
||||||
|
|
||||||
class DB(unittest.TestCase):
|
|
||||||
def test_create_default(self):
|
|
||||||
db_url = ":memory:"
|
|
||||||
db = get_db(db_url)
|
|
||||||
rows = db.execute("SELECT * FROM version").fetchall()
|
|
||||||
self.assertEqual(len(rows), 1)
|
|
||||||
self.assertEqual(rows[0]["version"], TARGET_VERSION)
|
|
||||||
|
|
||||||
def test_failed_create_allows_subsequent_create(self):
|
|
||||||
patch = self.patch(database, "get_schema", lambda version: b"this is a broken schema")
|
|
||||||
dbfile = filepath.FilePath(self.mktemp())
|
|
||||||
self.assertRaises(Exception, lambda: get_db(dbfile.path))
|
|
||||||
patch.restore()
|
|
||||||
get_db(dbfile.path)
|
|
||||||
|
|
||||||
def test_upgrade(self):
|
|
||||||
basedir = self.mktemp()
|
|
||||||
os.mkdir(basedir)
|
|
||||||
fn = os.path.join(basedir, "upgrade.db")
|
|
||||||
self.assertNotEqual(TARGET_VERSION, 2)
|
|
||||||
|
|
||||||
# create an old-version DB in a file
|
|
||||||
db = get_db(fn, 2)
|
|
||||||
rows = db.execute("SELECT * FROM version").fetchall()
|
|
||||||
self.assertEqual(len(rows), 1)
|
|
||||||
self.assertEqual(rows[0]["version"], 2)
|
|
||||||
del db
|
|
||||||
|
|
||||||
# then upgrade the file to the latest version
|
|
||||||
dbA = get_db(fn, TARGET_VERSION)
|
|
||||||
rows = dbA.execute("SELECT * FROM version").fetchall()
|
|
||||||
self.assertEqual(len(rows), 1)
|
|
||||||
self.assertEqual(rows[0]["version"], TARGET_VERSION)
|
|
||||||
dbA_text = dump_db(dbA)
|
|
||||||
del dbA
|
|
||||||
|
|
||||||
# make sure the upgrades got committed to disk
|
|
||||||
dbB = get_db(fn, TARGET_VERSION)
|
|
||||||
dbB_text = dump_db(dbB)
|
|
||||||
del dbB
|
|
||||||
self.assertEqual(dbA_text, dbB_text)
|
|
||||||
|
|
||||||
# The upgraded schema should be equivalent to that of a new DB.
|
|
||||||
# However a text dump will differ because ALTER TABLE always appends
|
|
||||||
# the new column to the end of a table, whereas our schema puts it
|
|
||||||
# somewhere in the middle (wherever it fits naturally). Also ALTER
|
|
||||||
# TABLE doesn't include comments.
|
|
||||||
if False:
|
|
||||||
latest_db = get_db(":memory:", TARGET_VERSION)
|
|
||||||
latest_text = dump_db(latest_db)
|
|
||||||
with open("up.sql","w") as f: f.write(dbA_text)
|
|
||||||
with open("new.sql","w") as f: f.write(latest_text)
|
|
||||||
# check with "diff -u _trial_temp/up.sql _trial_temp/new.sql"
|
|
||||||
self.assertEqual(dbA_text, latest_text)
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user