74 lines
3.0 KiB
Python
74 lines
3.0 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
from mcp.server.fastmcp import Image
|
|
|
|
|
|
class TestGetPageImageBase64:
|
|
def test_returns_image_object(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1)
|
|
assert isinstance(result, Image)
|
|
|
|
def test_image_has_data(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1)
|
|
assert len(result.data) > 0
|
|
|
|
def test_png_signature(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1)
|
|
assert result.data[:4] == b"\x89PNG"
|
|
|
|
def test_different_pages(self, basic_pdf, call_tool):
|
|
img1 = call_tool("get_page_image", filename=basic_pdf, page=1)
|
|
img2 = call_tool("get_page_image", filename=basic_pdf, page=2)
|
|
assert img1.data != img2.data
|
|
|
|
|
|
class TestGetPageImageFile:
|
|
def test_returns_string_with_path(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1, output="file")
|
|
assert isinstance(result, str)
|
|
assert "Image saved to" in result
|
|
|
|
def test_file_exists(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1, output="file")
|
|
path = result.split("Image saved to ")[1].split(" (")[0]
|
|
assert Path(path).exists()
|
|
os.unlink(path)
|
|
|
|
def test_file_is_valid_png(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1, output="file")
|
|
path = result.split("Image saved to ")[1].split(" (")[0]
|
|
with open(path, "rb") as f:
|
|
assert f.read(4) == b"\x89PNG"
|
|
os.unlink(path)
|
|
|
|
def test_file_includes_dimensions(self, basic_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=basic_pdf, page=1, output="file")
|
|
assert "px)" in result
|
|
|
|
|
|
class TestGetPageImageDpi:
|
|
def test_higher_dpi_larger_file(self, basic_pdf, call_tool):
|
|
low = call_tool("get_page_image", filename=basic_pdf, page=1, dpi=72)
|
|
high = call_tool("get_page_image", filename=basic_pdf, page=1, dpi=300)
|
|
assert len(high.data) > len(low.data)
|
|
|
|
def test_default_dpi(self, basic_pdf, call_tool):
|
|
default = call_tool("get_page_image", filename=basic_pdf, page=1)
|
|
explicit_150 = call_tool("get_page_image", filename=basic_pdf, page=1, dpi=150)
|
|
assert len(default.data) == len(explicit_150.data)
|
|
|
|
|
|
class TestGetPageImageDiagrams:
|
|
def test_diagrams_renders(self, diagrams_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=diagrams_pdf, page=1)
|
|
assert isinstance(result, Image)
|
|
assert len(result.data) > 0
|
|
|
|
def test_diagrams_file_output(self, diagrams_pdf, call_tool):
|
|
result = call_tool("get_page_image", filename=diagrams_pdf, page=1, output="file")
|
|
path = result.split("Image saved to ")[1].split(" (")[0]
|
|
assert Path(path).exists()
|
|
assert Path(path).stat().st_size > 0
|
|
os.unlink(path)
|