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