File size: 1,994 Bytes
ed962ac | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | # -------------------------------------------------------------------
# This source file is available under the terms of the
# Pimcore Open Core License (POCL)
# Full copyright and license information is available in
# LICENSE.md which is distributed with this source code.
# -------------------------------------------------------------------
"""OpenAPI-contract tests: a POST endpoint that documents no request body is undiscoverable from
the generated docs — Swagger UI renders no input widget and a caller has nothing to go on. Needs
no model weights."""
from src import main
SCHEMA = main.app.openapi()
IMAGE_TO_TEXT_BODY = "/image-to-text/{model_name}"
def test_image_to_text_documents_its_multipart_body():
"""`image_to_text` takes a raw ``Request`` rather than a typed model, so FastAPI cannot infer
the body — the multipart schema has to be declared explicitly via ``openapi_extra`` or the
endpoint appears to take no input at all.
"""
schema = SCHEMA["paths"][IMAGE_TO_TEXT_BODY]["post"]["requestBody"]["content"]["multipart/form-data"]["schema"]
assert schema["properties"]["image"]["format"] == "binary"
assert schema["required"] == ["image"]
def test_image_to_text_documents_its_raw_image_body():
"""``get_encoded_image`` accepts a raw ``image/*`` body as well as the multipart form, so both
accepted content types belong in the docs — see ``TextToImageTaskService.get_encoded_image``.
"""
content = SCHEMA["paths"][IMAGE_TO_TEXT_BODY]["post"]["requestBody"]["content"]
assert content["image/*"]["schema"]["format"] == "binary"
def test_every_post_endpoint_documents_a_request_body():
"""Guards the general case, so the next endpoint taking a raw ``Request`` cannot silently ship
without a documented body.
"""
missing = [
path
for path, operations in SCHEMA["paths"].items()
if "post" in operations and "requestBody" not in operations["post"]
]
assert missing == []
|