Skip to content

Commit ed37918

Browse files
committed
feat: add tests for requests with empty body
1 parent c2659aa commit ed37918

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

tests/functional/event_handler/_pydantic/test_openapi_validation_middleware.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,53 @@ def handler(user: Annotated[Model, Body(embed=True)]) -> Model:
366366
assert result["statusCode"] == 200
367367

368368

369+
def test_validate_body_params_with_missing_body_sets_received_body_none(gw_event):
370+
# GIVEN an APIGatewayRestResolver with validation enabled
371+
app = APIGatewayRestResolver(enable_validation=True)
372+
373+
# WHEN a handler is defined with multiple body parameters
374+
@app.post("/")
375+
def handler(name: str, age: int):
376+
return {"name": name, "age": age}
377+
378+
# WHEN the event has no body
379+
gw_event["httpMethod"] = "POST"
380+
gw_event["path"] = "/"
381+
gw_event["body"] = None # simulate event without body
382+
gw_event["headers"]["content-type"] = "application/json"
383+
384+
result = app(gw_event, {})
385+
386+
# THEN the handler should be invoked and return 422
387+
assert result["statusCode"] == 422
388+
assert "missing" in result["body"]
389+
390+
391+
def test_validate_embed_body_param_with_missing_body_sets_received_body_none(gw_event):
392+
# GIVEN an APIGatewayRestResolver with validation enabled
393+
app = APIGatewayRestResolver(enable_validation=True)
394+
395+
class Model(BaseModel):
396+
name: str
397+
398+
# WHEN a handler is defined with a body parameter
399+
@app.post("/")
400+
def handler(user: Annotated[Model, Body(embed=True)]) -> Model:
401+
return user
402+
403+
# WHEN the event has no body
404+
gw_event["httpMethod"] = "POST"
405+
gw_event["path"] = "/"
406+
gw_event["body"] = None # simulate event without body
407+
gw_event["headers"]["content-type"] = "application/json"
408+
409+
result = app(gw_event, {})
410+
411+
# THEN the handler should be invoked and return 422
412+
assert result["statusCode"] == 422
413+
assert "missing" in result["body"]
414+
415+
369416
def test_validate_response_return(gw_event):
370417
# GIVEN an APIGatewayRestResolver with validation enabled
371418
app = APIGatewayRestResolver(enable_validation=True)

0 commit comments

Comments
 (0)