summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-09-26 02:24:00 -0400
committerJohn Turner <jturner.usa@gmail.com>2025-09-26 02:24:00 -0400
commit06ea9477b95caed298bc8cadac94fa98fc97e8d2 (patch)
treed1b98347d07466f8980a4cb9d35cd973c670231b /tests
parent02f93142eedb1b56c9c93dcc699bd9d3cd57b88a (diff)
downloadpypaste-06ea9477b95caed298bc8cadac94fa98fc97e8d2.tar.gz
add tests for s3 storage backend
Diffstat (limited to 'tests')
-rw-r--r--tests/meson.build2
-rwxr-xr-xtests/test_storage.py (renamed from tests/test_sqlite_storage.py)54
2 files changed, 42 insertions, 14 deletions
diff --git a/tests/meson.build b/tests/meson.build
index c15bbab..6e66e76 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,4 +1,4 @@
-tests = files('test_client_zen.py', 'test_server.py', 'test_sqlite_storage.py')
+tests = files('test_client_zen.py', 'test_server.py', 'test_storage.py')
foreach test : tests
name = fs.stem(test)
diff --git a/tests/test_sqlite_storage.py b/tests/test_storage.py
index 6a93561..e5f312c 100755
--- a/tests/test_sqlite_storage.py
+++ b/tests/test_storage.py
@@ -1,15 +1,18 @@
#!/usr/bin/env python3
import sys
+import os
import asyncio
import tempfile
import aiosqlite
import string
import random
-from pypaste.server import Paste, Key, keygen
+from pypaste.server import Paste, Key, Storage, keygen
from pypaste.server.sqlite import Sqlite
+from pypaste.server.s3 import S3
from datetime import datetime
from pathlib import Path
+from typing import List
def truncate(path: Path) -> None:
@@ -23,7 +26,7 @@ def generate_key() -> str:
return "".join(random.choice(chars) for _ in range(10))
-async def test_exists_but_not_in_our_table(storage: Sqlite) -> None:
+async def test_exists_but_not_in_our_table(storage: Storage) -> None:
key = keygen(6)
await storage.connection.execute(
@@ -34,7 +37,7 @@ async def test_exists_but_not_in_our_table(storage: Sqlite) -> None:
assert not await storage.exists(key)
-async def test_exists(storage: Sqlite) -> None:
+async def test_exists(storage: Storage) -> None:
dt = datetime.now()
key = keygen(6)
@@ -45,7 +48,7 @@ async def test_exists(storage: Sqlite) -> None:
assert not await storage.exists(keygen(6))
-async def test_delete(storage: Sqlite) -> None:
+async def test_delete(storage: Storage) -> None:
dt = datetime.now()
key = keygen(6)
@@ -58,7 +61,7 @@ async def test_delete(storage: Sqlite) -> None:
assert not await storage.exists(key)
-async def test_insert_retrieve(storage: Sqlite) -> None:
+async def test_insert_retrieve(storage: Storage) -> None:
dt = datetime.now()
key = keygen(6)
@@ -73,6 +76,8 @@ async def test_insert_retrieve(storage: Sqlite) -> None:
async def main() -> int:
+ stores: List[Storage] = []
+
with tempfile.TemporaryDirectory() as tmpdir:
f = Path(tmpdir) / "database"
truncate(f)
@@ -89,14 +94,37 @@ async def main() -> int:
)
)
- storage = Sqlite(connection)
- await storage.setup()
-
- await asyncio.gather(
- test_insert_retrieve(storage),
- test_delete(storage),
- test_exists_but_not_in_our_table(storage),
- )
+ sqlite_storage = Sqlite(connection)
+ await sqlite_storage.setup()
+ stores.append(sqlite_storage)
+
+ try:
+ os.environ["PYPASTE_TEST_S3"]
+ test_s3 = True
+ except KeyError:
+ test_s3 = False
+
+ if test_s3:
+ s3_storage = S3(
+ connection,
+ os.environ["PYPASTE_TEST_ENDPOINT"],
+ os.environ["PYPASTE_TEST_REGION"],
+ os.environ["PYPASTE_TEST_BUCKET"],
+ os.environ["PYPASTE_TEST_ACCESS_KEY"],
+ os.environ["PYPASTE_TEST_SECRET_KEY"],
+ )
+ await s3_storage.setup()
+ stores.append(s3_storage)
+
+ for store in stores:
+ await asyncio.gather(
+ test_insert_retrieve(store),
+ test_insert_retrieve(store),
+ test_delete(store),
+ test_delete(store),
+ test_exists_but_not_in_our_table(store),
+ test_exists_but_not_in_our_table(store),
+ )
return 0