64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import functools
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
|
|
from aiohttp.test_utils import AioHTTPTestCase, unused_port
|
|
from aiounittest import AsyncTestCase
|
|
from click.testing import CliRunner
|
|
|
|
from catfish.__main__ import cli
|
|
from catfish.router import get_server
|
|
from catfish.utils.processes import terminate_subprocesses
|
|
from catfish.utils.sockets import create_base_socket_dir, delete_base_socket_dir
|
|
|
|
|
|
class BaseTestCase(AsyncTestCase):
|
|
DUMMY_EXE = os.path.join(os.path.dirname(__file__), "dummy_program.py")
|
|
|
|
def setUp(self):
|
|
create_base_socket_dir()
|
|
self.cli_runner = CliRunner()
|
|
self.cli = cli
|
|
self.run_cli = functools.partial(self.cli_runner.invoke, self.cli)
|
|
|
|
def tearDown(self):
|
|
terminate_subprocesses()
|
|
delete_base_socket_dir()
|
|
|
|
|
|
class BaseWorkerTestCase(BaseTestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.unused_port = unused_port()
|
|
result = subprocess.run(
|
|
[shutil.which("ctf"), "start", "--port", str(self.unused_port)],
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.STDOUT,
|
|
universal_newlines=True,
|
|
timeout=10,
|
|
)
|
|
self.assertEqual(result.returncode, 0, result.stdout)
|
|
|
|
def tearDown(self):
|
|
result = subprocess.run(
|
|
[shutil.which("ctf"), "stop"],
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.STDOUT,
|
|
universal_newlines=True,
|
|
timeout=10,
|
|
)
|
|
self.assertEqual(result.returncode, 0, result.stdout)
|
|
super().tearDown()
|
|
|
|
|
|
class BaseRouterTestCase(AsyncTestCase, AioHTTPTestCase):
|
|
async def get_application(self):
|
|
return get_server()
|
|
|
|
def __getattribute__(self, name):
|
|
attr = super(AioHTTPTestCase, self).__getattribute__(name)
|
|
if name.startswith("test_") and callable(attr):
|
|
return lambda: self.loop.run_until_complete(attr())
|
|
else:
|
|
return attr
|