/ tests / test_middleware.py
test_middleware.py
 1  from unittest.mock import Mock
 2  
 3  import pytest
 4  
 5  from django.urls import reverse
 6  from django.http import HttpResponse
 7  
 8  from webmention.middleware import WebMentionMiddleware
 9  
10  
11  @pytest.fixture
12  def middleware():
13      return WebMentionMiddleware(get_response=Mock())
14  
15  
16  def test_process_request_creates_link_header(middleware):
17      request = Mock()
18      request.scheme = "http"
19      request.META = {"HTTP_HOST": "example.com"}
20  
21      response = HttpResponse()
22      response = middleware.process_response(request, response)
23  
24      expected_link_header = '<{scheme}://{host}{path}>; rel="webmention"'.format(
25          scheme=request.scheme, host=request.META.get("HTTP_HOST"), path=reverse("webmention:receive")
26      )
27  
28      assert "Link" in response
29      assert response["Link"] == expected_link_header
30  
31  
32  def test_process_request_appends_link_header(middleware):
33      request = Mock()
34      request.scheme = "http"
35      request.META = {"HTTP_HOST": "example.com"}
36  
37      response = HttpResponse()
38      original_link_header = '<meta.rdf>; rel="meta"'
39      response["Link"] = original_link_header
40      response = middleware.process_response(request, response)
41  
42      new_link_header = '<{scheme}://{host}{path}>; rel="webmention"'.format(
43          scheme=request.scheme, host=request.META.get("HTTP_HOST"), path=reverse("webmention:receive")
44      )
45  
46      expected_link_header = ", ".join((original_link_header, new_link_header))
47  
48      assert "Link" in response
49      assert response["Link"] == expected_link_header