diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/test_server.py | 23 | ||||
-rwxr-xr-x | tests/test_sqlite_storage.py | 26 |
2 files changed, 29 insertions, 20 deletions
diff --git a/tests/test_server.py b/tests/test_server.py index 0ccfc5b..2b1ed2e 100755 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -7,6 +7,7 @@ import string import random import aiohttp from pathlib import Path +from asyncio import Queue def truncate(file: Path) -> None: @@ -20,10 +21,21 @@ def generate_name() -> str: return "".join(random.choice(characters) for _ in range(10)) +async def tee_pipe(proc: asyncio.subprocess.Process, queue: Queue[str]) -> None: + assert proc.stdout is not None + + while (line := await proc.stdout.readline()) is not None: + sys.stderr.write(line.decode()) + await queue.put(line.decode()) + + async def main() -> int: - with tempfile.TemporaryDirectory() as tmpdir: + with tempfile.TemporaryDirectory(delete=False) as tmpdir: + print(tmpdir, file=sys.stderr) + socket = Path(tmpdir) / (generate_name() + ".sock") database = Path(tmpdir) / generate_name() + queue: Queue[str] = Queue() truncate(database) @@ -38,7 +50,7 @@ async def main() -> int: "--content-length-max-bytes", "200000", "--key-length", - "3", + "6", "--database", database, "--storage-max-bytes", @@ -48,12 +60,9 @@ async def main() -> int: stderr=asyncio.subprocess.STDOUT, ) - assert proc.stdout is not None - - line = await proc.stdout.readline() + asyncio.create_task(tee_pipe(proc, queue)) - if b"starting" not in line: - print(line, file=sys.stderr) + if "starting" not in await queue.get(): return 1 connection = aiohttp.UnixConnector(path=str(socket)) diff --git a/tests/test_sqlite_storage.py b/tests/test_sqlite_storage.py index 384158c..6a93561 100755 --- a/tests/test_sqlite_storage.py +++ b/tests/test_sqlite_storage.py @@ -6,7 +6,7 @@ import tempfile import aiosqlite import string import random -from pypaste.server import Paste +from pypaste.server import Paste, Key, keygen from pypaste.server.sqlite import Sqlite from datetime import datetime from pathlib import Path @@ -24,11 +24,11 @@ def generate_key() -> str: async def test_exists_but_not_in_our_table(storage: Sqlite) -> None: - key = generate_key() + key = keygen(6) await storage.connection.execute( - "insert into pastes values(?, ?, ?, ?)", - (key, datetime.now().isoformat(), None, bytes()), + "insert into pastes values(?, ?, ?, ?, ?)", + (key.data, key.length, datetime.now().isoformat(), None, bytes()), ) assert not await storage.exists(key) @@ -36,20 +36,20 @@ async def test_exists_but_not_in_our_table(storage: Sqlite) -> None: async def test_exists(storage: Sqlite) -> None: dt = datetime.now() - key = generate_key() + key = keygen(6) - await storage.insert(Paste(key, dt, "test", "hello world")) + await storage.insert(Paste(dt, "test", "hello world"), key) assert await storage.exists(key) - assert not await storage.exists(generate_key()) + assert not await storage.exists(keygen(6)) async def test_delete(storage: Sqlite) -> None: dt = datetime.now() - key = generate_key() + key = keygen(6) - await storage.insert(Paste(key, dt, "test", "hello world")) + await storage.insert(Paste(dt, "test", "hello world"), key) assert await storage.exists(key) @@ -60,14 +60,13 @@ async def test_delete(storage: Sqlite) -> None: async def test_insert_retrieve(storage: Sqlite) -> None: dt = datetime.now() - key = generate_key() + key = keygen(6) - await storage.insert(Paste(key, dt, "test", "hello world")) + await storage.insert(Paste(dt, "test", "hello world"), key) paste = await storage.retrieve(key) assert paste is not None - assert paste.key == key assert paste.dt == dt assert paste.syntax == "test" assert paste.text == "hello world" @@ -81,7 +80,8 @@ async def main() -> int: await connection.execute( ( "create table pastes(" - "key text," + "key blob," + "key_length int," "datetime text," "size int," "syntax text" |