62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
import pytest
|
|
from upload.backend.session import (
|
|
create_session, add_file, get_files, file_count,
|
|
store_result, get_result, store_csv, get_csv,
|
|
touch, pause_ttl, resume_ttl, request_cancel, get_cancel_event,
|
|
cleanup, configure, MAX_FILE_BYTES, MAX_SESSION_BYTES
|
|
)
|
|
from upload.backend.session.state import _sessions
|
|
|
|
|
|
def test_session_lifecycle():
|
|
sid = create_session()
|
|
assert sid in _sessions
|
|
assert file_count(sid) == 0
|
|
assert get_files(sid) == []
|
|
|
|
# Add file
|
|
ok = add_file(sid, "doc.txt", b"hello world")
|
|
assert ok is True
|
|
assert file_count(sid) == 1
|
|
files = get_files(sid)
|
|
assert len(files) == 1
|
|
assert files[0] == ("doc.txt", b"hello world")
|
|
|
|
# Store result and csv
|
|
assert store_result(sid, b"PK...zip") is True
|
|
assert get_result(sid) == b"PK...zip"
|
|
assert store_csv(sid, "col1,col2\nval1,val2") is True
|
|
assert get_csv(sid) == "col1,col2\nval1,val2"
|
|
|
|
# Cancel event
|
|
ev = get_cancel_event(sid)
|
|
assert ev is not None
|
|
assert not ev.is_set()
|
|
assert request_cancel(sid) is True
|
|
assert ev.is_set()
|
|
|
|
# TTL methods do not raise
|
|
touch(sid)
|
|
pause_ttl(sid)
|
|
resume_ttl(sid)
|
|
|
|
# Cleanup
|
|
cleanup(sid)
|
|
assert sid not in _sessions
|
|
assert get_files(sid) is None
|
|
assert file_count(sid) == 0
|
|
|
|
|
|
def test_session_limits():
|
|
sid = create_session()
|
|
configure(max_session_bytes=100)
|
|
try:
|
|
# Add 60 bytes - ok
|
|
assert add_file(sid, "f1.bin", b"x" * 60) is True
|
|
# Add 50 bytes - should fail (60 + 50 > 100)
|
|
assert add_file(sid, "f2.bin", b"x" * 50) is False
|
|
assert file_count(sid) == 1
|
|
finally:
|
|
configure(max_session_bytes=500 * 1024 * 1024)
|
|
cleanup(sid)
|