Maybe working testing of the new redirect functionality

This commit is contained in:
Trenton H 2024-02-15 16:07:27 -08:00
parent e24bde7917
commit f51e000af0

View File

@ -1,11 +1,12 @@
from contextvars import ContextVar
from unittest import mock from unittest import mock
from allauth.account.adapter import get_adapter from allauth.account.adapter import get_adapter
from allauth.core import context
from allauth.socialaccount.adapter import get_adapter as get_social_adapter from allauth.socialaccount.adapter import get_adapter as get_social_adapter
from django.conf import settings from django.conf import settings
from django.http import HttpRequest from django.http import HttpRequest
from django.test import TestCase from django.test import TestCase
from django.test import override_settings
from django.urls import reverse from django.urls import reverse
@ -21,31 +22,30 @@ class TestCustomAccountAdapter(TestCase):
settings.ACCOUNT_ALLOW_SIGNUPS = False settings.ACCOUNT_ALLOW_SIGNUPS = False
self.assertFalse(adapter.is_open_for_signup(None)) self.assertFalse(adapter.is_open_for_signup(None))
@mock.patch("allauth.core.context._request_var") def test_is_safe_url(self):
def test_is_safe_url(self, mock_request_var):
request = HttpRequest() request = HttpRequest()
request.get_host = mock.Mock(return_value="example.com") request.get_host = mock.Mock(return_value="example.com")
mock_request_var.return_value = ContextVar("request", default=request) with context.request_context(request):
adapter = get_adapter() adapter = get_adapter()
with override_settings(ALLOWED_HOSTS=["*"]):
settings.ALLOWED_HOSTS = ["*"] # True because request host is same
# True because request host is same url = "https://example.com"
url = "https://example.com" self.assertTrue(adapter.is_safe_url(url))
self.assertTrue(adapter.is_safe_url(url))
url = "https://evil.com" url = "https://evil.com"
# False despite wildcard because request host is different # False despite wildcard because request host is different
self.assertFalse(adapter.is_safe_url(url)) self.assertFalse(adapter.is_safe_url(url))
settings.ALLOWED_HOSTS = ["example.com"] settings.ALLOWED_HOSTS = ["example.com"]
url = "https://example.com" url = "https://example.com"
# True because request host is same # True because request host is same
self.assertTrue(adapter.is_safe_url(url)) self.assertTrue(adapter.is_safe_url(url))
settings.ALLOWED_HOSTS = ["*", "example.com"] settings.ALLOWED_HOSTS = ["*", "example.com"]
url = "//evil.com" url = "//evil.com"
# False because request host is not in allowed hosts # False because request host is not in allowed hosts
self.assertFalse(adapter.is_safe_url(url)) self.assertFalse(adapter.is_safe_url(url))
class TestCustomSocialAccountAdapter(TestCase): class TestCustomSocialAccountAdapter(TestCase):