Files
GNX-mailEnterprise/venv/lib/python3.12/site-packages/allauth/account/tests/test_ajax.py
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

84 lines
2.9 KiB
Python

from __future__ import absolute_import
import json
from django.conf import settings
from django.contrib.auth import get_user_model
from django.core import mail
from django.test.utils import override_settings
from django.urls import reverse
from allauth.account import app_settings
from allauth.tests import TestCase
class AjaxTests(TestCase):
def _send_post_request(self, **kwargs):
return self.client.post(
reverse("account_signup"),
{
"username": "johndoe",
"email": "john@example.org",
"email2": "john@example.org",
"password1": "johndoe",
"password2": "johndoe",
},
**kwargs,
)
def test_no_ajax_header(self):
resp = self._send_post_request()
self.assertEqual(302, resp.status_code)
self.assertRedirects(
resp, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False
)
def test_ajax_header_x_requested_with(self):
resp = self._send_post_request(HTTP_X_REQUESTED_WITH="XMLHttpRequest")
self.assertEqual(200, resp.status_code)
self.assertEqual(settings.LOGIN_REDIRECT_URL, resp.json()["location"])
def test_ajax_header_http_accept(self):
resp = self._send_post_request(HTTP_ACCEPT="application/json")
self.assertEqual(200, resp.status_code)
self.assertEqual(settings.LOGIN_REDIRECT_URL, resp.json()["location"])
def test_ajax_password_reset(self):
get_user_model().objects.create(
username="john", email="john@example.org", is_active=True
)
resp = self.client.post(
reverse("account_reset_password"),
data={"email": "john@example.org"},
HTTP_X_REQUESTED_WITH="XMLHttpRequest",
)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(mail.outbox[0].to, ["john@example.org"])
self.assertEqual(resp["content-type"], "application/json")
def test_ajax_login_fail(self):
resp = self.client.post(
reverse("account_login"),
{},
HTTP_X_REQUESTED_WITH="XMLHttpRequest",
)
self.assertEqual(resp.status_code, 400)
json.loads(resp.content.decode("utf8"))
# TODO: Actually test something
@override_settings(
ACCOUNT_EMAIL_VERIFICATION=app_settings.EmailVerificationMethod.OPTIONAL
)
def test_ajax_login_success(self):
user = get_user_model().objects.create(username="john", is_active=True)
user.set_password("doe")
user.save()
resp = self.client.post(
reverse("account_login"),
{"login": "john", "password": "doe"},
HTTP_X_REQUESTED_WITH="XMLHttpRequest",
)
self.assertEqual(resp.status_code, 200)
data = json.loads(resp.content.decode("utf8"))
self.assertEqual(data["location"], "/accounts/profile/")