@@ -34,13 +34,15 @@ def test_get__no_email(self, client):
3434
3535class TestEmailClickView :
3636 @pytest .mark .django_db
37- def test_get__no_redirect_url (self , client ):
37+ def test_get__no_redirect_url (self , client , caplog ):
3838 msg = baker .make ("emark.Send" )
3939 response = client .get (reverse ("emark:email-click" , kwargs = {"pk" : msg .pk }))
4040 assert response .status_code == 400
41+ assert response .content == b"Missing url parameter"
42+ assert "Missing url parameter" in caplog .text
4143
4244 @pytest .mark .django_db
43- def test_get__unsafe_redirect_url (self , client , live_server ):
45+ def test_get__unsafe_redirect_url (self , client , live_server , caplog ):
4446 msg = baker .make ("emark.Send" )
4547 redirect_url = "http://external-domain.com/?utm_source=foo"
4648
@@ -49,6 +51,8 @@ def test_get__unsafe_redirect_url(self, client, live_server):
4951 url = f"{ url } ?{ urlencode ({'url' : redirect_url })} "
5052 response = client .get (url )
5153 assert response .status_code == 400
54+ assert response .content == b"Malformed url parameter"
55+ assert "Malformed URL parameter" in caplog .text
5256
5357 @pytest .mark .django_db
5458 def test_get__different_schema_redirect_url (self , client , live_server ):
@@ -73,6 +77,18 @@ def test_get__subdomain_redirect_url(self, client, live_server, settings):
7377 response = client .get (url )
7478 assert response .status_code == 302
7579
80+ @pytest .mark .django_db
81+ def test_get__absolute_path (self , client , live_server , settings ):
82+ settings .ALLOWED_HOSTS = ["testserver" , ".testserver" ]
83+ msg = baker .make ("emark.Send" )
84+ redirect_url = "/some/path?utm_source=foo"
85+
86+ url = reverse ("emark:email-click" , kwargs = {"pk" : msg .pk })
87+
88+ url = f"{ url } ?{ urlencode ({'url' : redirect_url })} "
89+ response = client .get (url )
90+ assert response .status_code == 302
91+
7692 @pytest .mark .django_db
7793 def test_get__subdomain_debug (self , client , live_server , settings ):
7894 settings .DEBUG = True
0 commit comments