Use headers dict instead of HTTP_* kwargs or request.META
This commit is contained in:
parent
224fae7a87
commit
624115bf11
5 changed files with 47 additions and 19 deletions
|
@ -72,12 +72,12 @@ class Signature(TestCase):
|
||||||
urlsplit(self.rat.inbox).path,
|
urlsplit(self.rat.inbox).path,
|
||||||
data=data,
|
data=data,
|
||||||
content_type="application/json",
|
content_type="application/json",
|
||||||
**{
|
headers={
|
||||||
"HTTP_DATE": now,
|
"date": now,
|
||||||
"HTTP_SIGNATURE": signature,
|
"signature": signature,
|
||||||
"HTTP_DIGEST": digest,
|
"digest": digest,
|
||||||
"HTTP_CONTENT_TYPE": "application/activity+json; charset=utf-8",
|
"content-type": "application/activity+json; charset=utf-8",
|
||||||
"HTTP_HOST": NETLOC,
|
"host": NETLOC,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,10 @@ class Inbox(TestCase):
|
||||||
"""check for blocked servers"""
|
"""check for blocked servers"""
|
||||||
request = self.factory.post(
|
request = self.factory.post(
|
||||||
"",
|
"",
|
||||||
HTTP_USER_AGENT="http.rb/4.4.1 (Mastodon/3.3.0; +https://mastodon.social/)",
|
headers={
|
||||||
|
# pylint: disable-next=line-too-long
|
||||||
|
"user-agent": "http.rb/4.4.1 (Mastodon/3.3.0; +https://mastodon.social/)",
|
||||||
|
},
|
||||||
)
|
)
|
||||||
self.assertIsNone(views.inbox.raise_is_blocked_user_agent(request))
|
self.assertIsNone(views.inbox.raise_is_blocked_user_agent(request))
|
||||||
|
|
||||||
|
|
|
@ -113,11 +113,20 @@ class ViewsHelpers(TestCase): # pylint: disable=too-many-public-methods
|
||||||
request = self.factory.get(
|
request = self.factory.get(
|
||||||
"",
|
"",
|
||||||
{"q": "Test Book"},
|
{"q": "Test Book"},
|
||||||
HTTP_USER_AGENT="http.rb/4.4.1 (Mastodon/3.3.0; +https://mastodon.social/)",
|
headers={
|
||||||
|
# pylint: disable-next=line-too-long
|
||||||
|
"user-agent": "http.rb/4.4.1 (Mastodon/3.3.0; +https://mastodon.social/)",
|
||||||
|
},
|
||||||
)
|
)
|
||||||
self.assertFalse(views.helpers.is_bookwyrm_request(request))
|
self.assertFalse(views.helpers.is_bookwyrm_request(request))
|
||||||
|
|
||||||
request = self.factory.get("", {"q": "Test Book"}, HTTP_USER_AGENT=USER_AGENT)
|
request = self.factory.get(
|
||||||
|
"",
|
||||||
|
{"q": "Test Book"},
|
||||||
|
headers={
|
||||||
|
"user-agent": USER_AGENT,
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertTrue(views.helpers.is_bookwyrm_request(request))
|
self.assertTrue(views.helpers.is_bookwyrm_request(request))
|
||||||
|
|
||||||
def test_handle_remote_webfinger_invalid(self, *_):
|
def test_handle_remote_webfinger_invalid(self, *_):
|
||||||
|
@ -271,8 +280,12 @@ class ViewsHelpers(TestCase): # pylint: disable=too-many-public-methods
|
||||||
|
|
||||||
def test_redirect_to_referer_outside_domain(self, *_):
|
def test_redirect_to_referer_outside_domain(self, *_):
|
||||||
"""safely send people on their way"""
|
"""safely send people on their way"""
|
||||||
request = self.factory.get("/path")
|
request = self.factory.get(
|
||||||
request.META = {"HTTP_REFERER": "http://outside.domain/name"}
|
"/path",
|
||||||
|
headers={
|
||||||
|
"referer": "http://outside.domain/name",
|
||||||
|
},
|
||||||
|
)
|
||||||
result = views.helpers.redirect_to_referer(
|
result = views.helpers.redirect_to_referer(
|
||||||
request, "user-feed", self.local_user.localname
|
request, "user-feed", self.local_user.localname
|
||||||
)
|
)
|
||||||
|
@ -280,21 +293,33 @@ class ViewsHelpers(TestCase): # pylint: disable=too-many-public-methods
|
||||||
|
|
||||||
def test_redirect_to_referer_outside_domain_with_fallback(self, *_):
|
def test_redirect_to_referer_outside_domain_with_fallback(self, *_):
|
||||||
"""invalid domain with regular params for the redirect function"""
|
"""invalid domain with regular params for the redirect function"""
|
||||||
request = self.factory.get("/path")
|
request = self.factory.get(
|
||||||
request.META = {"HTTP_REFERER": "https://outside.domain/name"}
|
"/path",
|
||||||
|
headers={
|
||||||
|
"referer": "http://outside.domain/name",
|
||||||
|
},
|
||||||
|
)
|
||||||
result = views.helpers.redirect_to_referer(request)
|
result = views.helpers.redirect_to_referer(request)
|
||||||
self.assertEqual(result.url, "/")
|
self.assertEqual(result.url, "/")
|
||||||
|
|
||||||
def test_redirect_to_referer_valid_domain(self, *_):
|
def test_redirect_to_referer_valid_domain(self, *_):
|
||||||
"""redirect to within the app"""
|
"""redirect to within the app"""
|
||||||
request = self.factory.get("/path")
|
request = self.factory.get(
|
||||||
request.META = {"HTTP_REFERER": f"{BASE_URL}/and/a/path"}
|
"/path",
|
||||||
|
headers={
|
||||||
|
"referer": f"{BASE_URL}/and/a/path",
|
||||||
|
},
|
||||||
|
)
|
||||||
result = views.helpers.redirect_to_referer(request)
|
result = views.helpers.redirect_to_referer(request)
|
||||||
self.assertEqual(result.url, f"{BASE_URL}/and/a/path")
|
self.assertEqual(result.url, f"{BASE_URL}/and/a/path")
|
||||||
|
|
||||||
def test_redirect_to_referer_with_get_args(self, *_):
|
def test_redirect_to_referer_with_get_args(self, *_):
|
||||||
"""if the path has get params (like sort) they are preserved"""
|
"""if the path has get params (like sort) they are preserved"""
|
||||||
request = self.factory.get("/path")
|
request = self.factory.get(
|
||||||
request.META = {"HTTP_REFERER": f"{BASE_URL}/and/a/path?sort=hello"}
|
"/path",
|
||||||
|
headers={
|
||||||
|
"referer": f"{BASE_URL}/and/a/path?sort=hello",
|
||||||
|
},
|
||||||
|
)
|
||||||
result = views.helpers.redirect_to_referer(request)
|
result = views.helpers.redirect_to_referer(request)
|
||||||
self.assertEqual(result.url, f"{BASE_URL}/and/a/path?sort=hello")
|
self.assertEqual(result.url, f"{BASE_URL}/and/a/path?sort=hello")
|
||||||
|
|
|
@ -122,7 +122,7 @@ class OutboxView(TestCase):
|
||||||
privacy="public",
|
privacy="public",
|
||||||
)
|
)
|
||||||
|
|
||||||
request = self.factory.get("", {"page": 1}, HTTP_USER_AGENT=USER_AGENT)
|
request = self.factory.get("", {"page": 1}, headers={"user-agent": USER_AGENT})
|
||||||
result = views.Outbox.as_view()(request, "mouse")
|
result = views.Outbox.as_view()(request, "mouse")
|
||||||
|
|
||||||
data = json.loads(result.content)
|
data = json.loads(result.content)
|
||||||
|
|
|
@ -231,7 +231,7 @@ def maybe_redirect_local_path(request, model):
|
||||||
def redirect_to_referer(request, *args, **kwargs):
|
def redirect_to_referer(request, *args, **kwargs):
|
||||||
"""Redirect to the referrer, if it's in our domain, with get params"""
|
"""Redirect to the referrer, if it's in our domain, with get params"""
|
||||||
# make sure the refer is part of this instance
|
# make sure the refer is part of this instance
|
||||||
validated = validate_url_domain(request.META.get("HTTP_REFERER"))
|
validated = validate_url_domain(request.headers.get("referer", ""))
|
||||||
|
|
||||||
if validated:
|
if validated:
|
||||||
return redirect(validated)
|
return redirect(validated)
|
||||||
|
|
Loading…
Add table
Reference in a new issue