From b8ec8c86f8e21088ea1381d2a6e533d1d0cb0f66 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 06:18:26 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20format?= =?UTF-8?q?=20from=20pre-commit.com=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 1 - tests/test_form_defaults.py | 40 ++++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7a7d9a7e1..af8d3b228 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,4 +3,3 @@ WORKDIR /app COPY . . RUN pip install -r requirements.txt CMD ["/bin/bash"] - diff --git a/tests/test_form_defaults.py b/tests/test_form_defaults.py index 05874b22a..59dd50685 100644 --- a/tests/test_form_defaults.py +++ b/tests/test_form_defaults.py @@ -1,106 +1,136 @@ # NOTE: Documentation requirement is not validated by tests; reviewer should check manually. -from fastapi import FastAPI, Form, UploadFile, File +from fastapi import FastAPI, File, Form, UploadFile from fastapi.testclient import TestClient app = FastAPI() + @app.post("/demo/") def demo_endpoint(field: str = Form("default_value")): return {"field": field} + @app.post("/demo_int/") def demo_int_endpoint(field: int = Form(42)): return {"field": field} + @app.post("/demo_float/") def demo_float_endpoint(field: float = Form(3.14)): return {"field": field} + @app.post("/demo_opt/") def demo_opt_endpoint(field: str = Form(None)): return {"field": field} + @app.post("/fileupload/") def fileupload_endpoint(file: UploadFile = File(None)): return {"filename": file.filename if file else None} + @app.post("/other/") def other_endpoint(foo: str = Form("other")): return {"foo": foo} + client = TestClient(app) + def test_blank_field_uses_default(): response = client.post("/demo/", data={"field": ""}) assert response.json()["field"] == "default_value" + def test_missing_field_uses_default(): response = client.post("/demo/", data={}) assert response.json()["field"] == "default_value" + def test_blank_int_field_uses_default(): response = client.post("/demo_int/", data={"field": ""}) assert response.json()["field"] == 42 + def test_missing_int_field_uses_default(): response = client.post("/demo_int/", data={}) assert response.json()["field"] == 42 + def test_blank_float_field_uses_default(): response = client.post("/demo_float/", data={"field": ""}) assert response.json()["field"] == 3.14 + def test_missing_float_field_uses_default(): response = client.post("/demo_float/", data={}) assert response.json()["field"] == 3.14 + def test_optional_field_default_none(): response = client.post("/demo_opt/", data={}) assert response.json()["field"] is None + def test_blank_optional_field_results_in_none(): response = client.post("/demo_opt/", data={"field": ""}) assert response.json()["field"] is None + def test_blank_field_multipart_uses_default(): response = client.post("/demo/", files={"field": ("", "")}) assert response.json()["field"] == "default_value" + def test_missing_field_multipart_uses_default(): response = client.post("/demo/", files={}) assert response.json()["field"] == "default_value" + def test_multipart_blank_text_field_uses_default(): - response = client.post("/demo/", data={"field": ""}, files={"dummy": ("filename.txt", "dummycontent")}) + response = client.post( + "/demo/", data={"field": ""}, files={"dummy": ("filename.txt", "dummycontent")} + ) assert response.json()["field"] == "default_value" + def test_multipart_blank_int_field_uses_default(): - response = client.post("/demo_int/", data={"field": ""}, files={"dummy": ("file.txt", "dummy")}) + response = client.post( + "/demo_int/", data={"field": ""}, files={"dummy": ("file.txt", "dummy")} + ) assert response.json()["field"] == 42 + def test_multipart_blank_float_field_uses_default(): - response = client.post("/demo_float/", data={"field": ""}, files={"dummy": ("file.txt", "dummy")}) + response = client.post( + "/demo_float/", data={"field": ""}, files={"dummy": ("file.txt", "dummy")} + ) assert response.json()["field"] == 3.14 + def test_blank_uploadfile_defaults_to_none(): response = client.post("/fileupload/", files={"file": ("", "")}) assert response.json()["filename"] is None + def test_fileupload_actual_upload_works(): files = {"file": ("afile.txt", "dummydata")} response = client.post("/fileupload/", files=files) assert response.json()["filename"] == "afile.txt" + def test_json_request_unaffected(): response = client.post("/demo/", json={"field": ""}) assert response.json()["field"] == "" + def test_json_missing_field_uses_default(): response = client.post("/demo/", json={}) assert response.json()["field"] == "default_value" + def test_other_request_regression_not_broken(): response = client.post("/other/", data={}) assert response.json()["foo"] == "other" -