diff options
Diffstat (limited to 'tests/test_forms.py')
| -rw-r--r-- | tests/test_forms.py | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/tests/test_forms.py b/tests/test_forms.py deleted file mode 100644 index fc16858..0000000 --- a/tests/test_forms.py +++ /dev/null @@ -1,96 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Dennis Fink <me+coding@dennisfink.me> -# -# SPDX-License-Identifier: BSD-3-Clause - -from unittest.mock import patch - -import pytest -from flask import Flask -from werkzeug.datastructures import MultiDict - -from webmentions_ssg.forms import EndpointForm - -VALID_SOURCE = "https://source.example/post" -VALID_TARGET = "https://dennisfink.me/blog/example/" - - -@patch("webmentions_ssg.forms.validators.is_public_url", new=lambda url: True) -@pytest.mark.parametrize( - ("form_data", "invalid_field", "expected_error"), - [ - pytest.param( - {"target": VALID_TARGET}, - "source", - "This field is required.", - id="source-required", - ), - pytest.param( - {"source": "not a URL", "target": VALID_TARGET}, - "source", - "Invalid URL.", - id="source-url", - ), - pytest.param( - {"source": "ftp://source.example/post", "target": VALID_TARGET}, - "source", - "source must begin with http or https", - id="source-scheme", - ), - pytest.param( - {"source": VALID_TARGET, "target": VALID_TARGET}, - "source", - None, - id="source-not-equal-to-target", - ), - pytest.param( - {"source": VALID_SOURCE}, - "target", - "This field is required.", - id="target-required", - ), - pytest.param( - {"source": VALID_SOURCE, "target": "not a URL"}, - "target", - "Invalid URL.", - id="target-url", - ), - pytest.param( - {"source": VALID_SOURCE, "target": "ftp://dennisfink.me/blog/example/"}, - "target", - "target must begin with http or https", - id="target-scheme", - ), - pytest.param( - {"source": VALID_SOURCE, "target": "https://example.com/post"}, - "target", - None, - id="target-allowed-hostname", - ), - ], -) -def test_endpoint_form_rejects_invalid_data( - app: Flask, - form_data: dict[str, str], - invalid_field: str, - expected_error: str | None, -) -> None: - with app.test_request_context("/endpoint", method="POST"): - form = EndpointForm(formdata=MultiDict(form_data), meta={"csrf": False}) - - assert not form.validate() - assert invalid_field in form.errors - - if expected_error is not None: - assert expected_error in form.errors[invalid_field] - - -@patch("webmentions_ssg.forms.validators.is_public_url", new=lambda url: True) -def test_endpoint_form_accepts_valid_data(app: Flask) -> None: - with app.test_request_context("/endpoint", method="POST"): - form = EndpointForm( - formdata=MultiDict({"source": VALID_SOURCE, "target": VALID_TARGET}), - meta={"csrf": False}, - ) - - assert form.validate() - assert form.errors == {} |
