refactor tests
Publish container image / Build and push (push) Successful in 32s

This commit is contained in:
2026-07-26 23:49:40 +02:00
parent 5ef10d28fe
commit ce9f1e3d20
32 changed files with 1546 additions and 1923 deletions
+56 -40
View File
@@ -98,23 +98,38 @@ async def test_invalid_signature_precedes_parsing_and_event_filtering(event: str
assert repository.accepted == []
async def test_signed_unsupported_event_is_ignored_without_parsing() -> None:
repository = FakeRepository()
response = await post_webhook(repository, b"not-json", event="push")
assert response.status_code == 204
assert repository.accepted == []
@pytest.mark.parametrize(
("command", "requester"),
[("ordinary discussion", "alice"), ("/agent plan", "AgentCI")],
("body", "event"),
[
pytest.param(
b"not-json",
"push",
id="unsupported-event-before-parsing",
),
pytest.param(
encoded(payload("ordinary discussion")),
"issue_comment",
id="non-command",
),
pytest.param(
encoded(payload("/agent plan", requester="AgentCI")),
"issue_comment",
id="bot-author",
),
pytest.param(
encoded({"action": "edited"}),
"issue_comment",
id="non-created-before-payload",
),
],
)
async def test_non_command_and_bot_comment_are_ignored(command: str, requester: str) -> None:
async def test_authenticated_irrelevant_webhooks_are_ignored(
body: bytes,
event: str,
) -> None:
repository = FakeRepository()
response = await post_webhook(repository, encoded(payload(command, requester=requester)))
response = await post_webhook(repository, body, event=event)
assert response.status_code == 204
assert repository.accepted == []
@@ -130,40 +145,41 @@ async def test_duplicate_delivery_returns_ok() -> None:
@pytest.mark.parametrize(
"body",
("body", "delivery", "detail"),
[
b"{",
encoded([]),
encoded({"action": "created"}),
encoded({"action": "created", "comment": {}}),
pytest.param(b"{", "delivery", "Invalid webhook payload", id="invalid-json"),
pytest.param(encoded([]), "delivery", "Invalid webhook payload", id="non-object"),
pytest.param(
encoded({"action": "created"}),
"delivery",
"Invalid webhook payload",
id="missing-comment",
),
pytest.param(
encoded({"action": "created", "comment": {}}),
"delivery",
"Invalid webhook payload",
id="incomplete-comment",
),
pytest.param(
encoded(payload("/agent plan")),
None,
"Missing X-Gitea-Delivery",
id="missing-delivery",
),
],
)
async def test_malformed_json_and_payload_contract_return_bad_request(body: bytes) -> None:
async def test_authenticated_bad_requests_are_rejected_without_persistence(
body: bytes,
delivery: str | None,
detail: str,
) -> None:
repository = FakeRepository()
response = await post_webhook(repository, body)
response = await post_webhook(repository, body, delivery=delivery)
assert response.status_code == 400
assert response.json() == {"detail": "Invalid webhook payload"}
assert repository.accepted == []
async def test_command_requires_delivery_header() -> None:
repository = FakeRepository()
response = await post_webhook(repository, encoded(payload("/agent plan")), delivery=None)
assert response.status_code == 400
assert response.json() == {"detail": "Missing X-Gitea-Delivery"}
assert repository.accepted == []
async def test_non_created_comment_is_ignored_without_nested_payload() -> None:
repository = FakeRepository()
response = await post_webhook(repository, encoded({"action": "edited"}))
assert response.status_code == 204
assert response.json() == {"detail": detail}
assert repository.accepted == []