feat: support image inputs in assistant tests
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
"""Persistent image fixtures used by repeatable assistant test cases."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
from services.image_processing import normalize_image
|
||||
from services.object_storage import delete_object, get_object, put_object
|
||||
|
||||
|
||||
TEST_ASSET_PREFIX = "test-assets/"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class StoredTestImage:
|
||||
storage_key: str
|
||||
width: int
|
||||
height: int
|
||||
size_bytes: int
|
||||
mime_type: str = "image/jpeg"
|
||||
|
||||
|
||||
def store_test_image(asset_id: str, data: bytes) -> StoredTestImage:
|
||||
normalized, width, height = normalize_image(data)
|
||||
key = f"{TEST_ASSET_PREFIX}{asset_id}.jpg"
|
||||
put_object(key, normalized, "image/jpeg")
|
||||
return StoredTestImage(
|
||||
storage_key=key,
|
||||
width=width,
|
||||
height=height,
|
||||
size_bytes=len(normalized),
|
||||
)
|
||||
|
||||
|
||||
def read_test_image(storage_key: str) -> bytes:
|
||||
if not storage_key.startswith(TEST_ASSET_PREFIX):
|
||||
raise ValueError("测试图片存储位置无效")
|
||||
return get_object(storage_key)
|
||||
|
||||
|
||||
def delete_test_image(storage_key: str) -> None:
|
||||
if not storage_key.startswith(TEST_ASSET_PREFIX):
|
||||
raise ValueError("测试图片存储位置无效")
|
||||
delete_object(storage_key)
|
||||
Reference in New Issue
Block a user