aboutsummaryrefslogtreecommitdiff
path: root/tests/test_views.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/test_views.py72
1 files changed, 31 insertions, 41 deletions
diff --git a/tests/test_views.py b/tests/test_views.py
index 70ed732..06e546c 100644
--- a/tests/test_views.py
+++ b/tests/test_views.py
@@ -1,7 +1,6 @@
import uuid
-from types import ModuleType
+from unittest.mock import Mock, call, patch
-import pytest
import sqlalchemy as sa
from flask import Flask
from flask.testing import FlaskClient
@@ -18,6 +17,10 @@ def test_endpoint_only_accepts_post(
assert response.status_code == 405
+@patch(
+ "webmentions_ssg.forms.validators.ensure_public_url",
+ new=lambda url: None,
+)
def test_endpoint_returns_form_errors(
client: FlaskClient,
) -> None:
@@ -37,21 +40,16 @@ def test_endpoint_returns_form_errors(
assert "target" in errors
+@patch(
+ "webmentions_ssg.forms.validators.ensure_public_url",
+ new=lambda url: None,
+)
+@patch("webmentions_ssg.views.verify_webmention")
def test_endpoint_creates_webmention(
+ verify_webmention: Mock,
app: Flask,
client: FlaskClient,
- views_module: ModuleType,
- monkeypatch: pytest.MonkeyPatch,
- public_dns: None,
) -> None:
- queued: list[uuid.UUID] = []
-
- monkeypatch.setattr(
- views_module,
- "verify_webmention",
- queued.append,
- )
-
source = "https://source.example/post"
target = "https://dennisfink.me/blog/example/"
@@ -77,28 +75,22 @@ def test_endpoint_creates_webmention(
identifier = webmention.uuid
assert response.headers["Location"].endswith(str(identifier))
-
- assert queued == [identifier]
+ verify_webmention.assert_called_once_with(identifier)
+@patch(
+ "webmentions_ssg.forms.validators.ensure_public_url",
+ new=lambda url: None,
+)
+@patch("webmentions_ssg.views.verify_webmention")
def test_endpoint_is_idempotent(
+ verify_webmention: Mock,
app: Flask,
client: FlaskClient,
- views_module: ModuleType,
- monkeypatch: pytest.MonkeyPatch,
- public_dns: None,
) -> None:
- queued: list[uuid.UUID] = []
-
- monkeypatch.setattr(
- views_module,
- "verify_webmention",
- queued.append,
- )
-
data = {
- "source": ("https://source.example/post"),
- "target": ("https://dennisfink.me/blog/example/"),
+ "source": "https://source.example/post",
+ "target": "https://dennisfink.me/blog/example/",
}
first_response = client.post(
@@ -112,7 +104,6 @@ def test_endpoint_is_idempotent(
assert first_response.status_code == 201
assert second_response.status_code == 201
-
assert first_response.headers["Location"] == second_response.headers["Location"]
with app.app_context():
@@ -129,25 +120,22 @@ def test_endpoint_is_idempotent(
identifier = webmention.uuid
- assert queued == [
- identifier,
- identifier,
+ assert verify_webmention.call_args_list == [
+ call(identifier),
+ call(identifier),
]
+@patch(
+ "webmentions_ssg.forms.validators.ensure_public_url",
+ new=lambda url: None,
+)
+@patch("webmentions_ssg.views.verify_webmention")
def test_resending_resets_failure_state(
+ verify_webmention: Mock,
app: Flask,
client: FlaskClient,
- views_module: ModuleType,
- monkeypatch: pytest.MonkeyPatch,
- public_dns: None,
) -> None:
- monkeypatch.setattr(
- views_module,
- "verify_webmention",
- lambda identifier: None,
- )
-
source = "https://source.example/post"
target = "https://dennisfink.me/blog/example/"
@@ -184,3 +172,5 @@ def test_resending_resets_failure_state(
assert webmention is not None
assert webmention.status == "received"
assert webmention.failure_reason is None
+
+ verify_webmention.assert_called_once_with(identifier)