66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
from __future__ import absolute_import
|
|
|
|
from django.contrib.auth import get_user_model
|
|
from django.core import validators
|
|
from django.test.client import Client
|
|
from django.test.utils import override_settings
|
|
from django.urls import reverse
|
|
|
|
from allauth.account import app_settings
|
|
from allauth.account.signals import user_logged_out
|
|
from allauth.tests import Mock, TestCase
|
|
|
|
|
|
test_username_validators = [
|
|
validators.RegexValidator(regex=r"^[a-c]+$", message="not abc", flags=0)
|
|
]
|
|
|
|
|
|
@override_settings(
|
|
ACCOUNT_DEFAULT_HTTP_PROTOCOL="https",
|
|
ACCOUNT_EMAIL_VERIFICATION=app_settings.EmailVerificationMethod.MANDATORY,
|
|
ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod.USERNAME,
|
|
ACCOUNT_SIGNUP_FORM_CLASS=None,
|
|
ACCOUNT_EMAIL_SUBJECT_PREFIX=None,
|
|
LOGIN_REDIRECT_URL="/accounts/profile/",
|
|
ACCOUNT_SIGNUP_REDIRECT_URL="/accounts/welcome/",
|
|
ACCOUNT_ADAPTER="allauth.account.adapter.DefaultAccountAdapter",
|
|
ACCOUNT_USERNAME_REQUIRED=True,
|
|
)
|
|
class LogoutTests(TestCase):
|
|
@override_settings(ACCOUNT_LOGOUT_ON_GET=True)
|
|
def test_logout_view_on_get(self):
|
|
c, resp = self._logout_view("get")
|
|
self.assertTemplateUsed(resp, "account/messages/logged_out.txt")
|
|
|
|
@override_settings(ACCOUNT_LOGOUT_ON_GET=False)
|
|
def test_logout_view_on_post(self):
|
|
c, resp = self._logout_view("get")
|
|
self.assertTemplateUsed(
|
|
resp, "account/logout.%s" % app_settings.TEMPLATE_EXTENSION
|
|
)
|
|
|
|
receiver_mock = Mock()
|
|
user_logged_out.connect(receiver_mock)
|
|
|
|
resp = c.post(reverse("account_logout"))
|
|
|
|
self.assertTemplateUsed(resp, "account/messages/logged_out.txt")
|
|
receiver_mock.assert_called_once_with(
|
|
sender=get_user_model(),
|
|
request=resp.wsgi_request,
|
|
user=get_user_model().objects.get(username="john"),
|
|
signal=user_logged_out,
|
|
)
|
|
|
|
user_logged_out.disconnect(receiver_mock)
|
|
|
|
def _logout_view(self, method):
|
|
c = Client()
|
|
user = get_user_model().objects.create(username="john", is_active=True)
|
|
user.set_password("doe")
|
|
user.save()
|
|
c = Client()
|
|
c.login(username="john", password="doe")
|
|
return c, getattr(c, method)(reverse("account_logout"))
|