from django.contrib.auth import get_user_model
from django.test.utils import override_settings
from django.urls import reverse

from allauth.tests import TestCase


@override_settings(
    CACHES={
        "default": {
            "BACKEND": "django.core.cache.backends.locmem.LocMemCache",
        },
    },
    ACCOUNT_RATE_LIMITS={"reset_password_email": "1/m"},
)
class RateLimitTests(TestCase):
    def test_case_insensitive_password_reset(self):
        get_user_model().objects.create(email="a@b.com")
        resp = self.client.post(
            reverse("account_reset_password"), data={"email": "a@b.com"}
        )
        assert resp.status_code == 302
        resp = self.client.post(
            reverse("account_reset_password"), data={"email": "A@B.COM"}
        )
        assert resp.status_code == 429
