Change-detectors, tautologies, source-reading tests, redundant duplicates, mock-echo tests and dead/unrunnable tests. Per-test rationale in the lane ledger (category + reason for every removal).
94 lines
3.1 KiB
Python
94 lines
3.1 KiB
Python
"""Contract tests for gateway.platforms.media_cache — the shared mime↔ext
|
|
dispatch — plus per-adapter parity spot-checks that hardcode each adapter's
|
|
HISTORICAL (pre-refactor) mappings as the contract.
|
|
|
|
If any of these fail, an adapter's downloaded-media filenames changed —
|
|
that's a behavioral regression, not a test to update casually.
|
|
"""
|
|
|
|
|
|
import pytest
|
|
|
|
from gateway.platforms.media_cache import (
|
|
cache_media_bytes,
|
|
ext_for_mime,
|
|
mime_for_ext,
|
|
)
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Shared table contract
|
|
# ---------------------------------------------------------------------------
|
|
|
|
class TestSharedTable:
|
|
|
|
|
|
def test_stage_gating(self):
|
|
# use_defaults=False skips the shared table.
|
|
assert ext_for_mime(
|
|
"audio/ogg", use_defaults=False, use_mimetypes=False, fallback=".x"
|
|
) == ".x"
|
|
# use_mimetypes=False skips the mimetypes fallback.
|
|
assert ext_for_mime("image/bmp", use_mimetypes=False) is None
|
|
|
|
|
|
def test_mime_for_ext_fallback_and_case(self):
|
|
assert mime_for_ext(".JPG") == "image/jpeg"
|
|
assert mime_for_ext(".unknown") == "application/octet-stream"
|
|
assert mime_for_ext(".unknown", fallback="x/y") == "x/y"
|
|
assert mime_for_ext(".pdf", overrides={".pdf": "custom/pdf"}) == "custom/pdf"
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# cache_media_bytes dispatch
|
|
# ---------------------------------------------------------------------------
|
|
|
|
class TestCacheMediaBytes:
|
|
PNG = b"\x89PNG\r\n\x1a\n" + b"\x00" * 16
|
|
|
|
def test_image_dispatch(self, monkeypatch, tmp_path):
|
|
monkeypatch.setattr(
|
|
"gateway.platforms.base.get_image_cache_dir", lambda: tmp_path
|
|
)
|
|
path = cache_media_bytes(self.PNG, "image/png")
|
|
assert path.endswith(".png")
|
|
|
|
|
|
def test_document_dispatch_uses_filename_hint(self, monkeypatch, tmp_path):
|
|
monkeypatch.setattr(
|
|
"gateway.platforms.base.get_document_cache_dir", lambda: tmp_path
|
|
)
|
|
path = cache_media_bytes(b"%PDF-1.4", "application/pdf",
|
|
filename_hint="report.pdf")
|
|
assert path.endswith("_report.pdf")
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Per-adapter parity: HISTORICAL mappings hardcoded as the contract
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
class TestWhatsAppCloudParity:
|
|
"""Historical _ext_for_mime: overrides → mimetypes → None."""
|
|
|
|
CASES = {
|
|
# Pinned overrides (Meta-sent types the STT pipeline needs pinned).
|
|
"audio/ogg": ".ogg", # NOT mimetypes' .oga
|
|
"audio/x-opus+ogg": ".ogg",
|
|
"audio/opus": ".ogg",
|
|
"audio/mp4": ".m4a",
|
|
"audio/x-m4a": ".m4a",
|
|
"image/jpeg": ".jpg", # NOT the legacy .jpe
|
|
}
|
|
|
|
@pytest.mark.parametrize("mime,expected", sorted(CASES.items()))
|
|
def test_pinned_overrides(self, mime, expected):
|
|
from gateway.platforms.whatsapp_cloud import _ext_for_mime
|
|
assert _ext_for_mime(mime) == expected
|
|
|
|
|
|
|
|
|
|
|