import pytest from django.core.cache import cache from django.test import override_settings from django.urls import reverse @pytest.mark.integration @pytest.mark.django_db def test_today_requires_login(client): response = client.get(reverse("dashboard:today")) assert response.status_code == 302 assert reverse("login") in response.url @pytest.mark.integration @pytest.mark.django_db def test_today_loads_for_user(client, user, profile): client.force_login(user) response = client.get(reverse("dashboard:today")) assert response.status_code == 200 assert "Vandaag" in response.content.decode() @pytest.mark.integration @pytest.mark.django_db @override_settings( AUTH_LOGIN_RATE_LIMIT_MAX_ATTEMPTS=2, AUTH_LOGIN_RATE_LIMIT_WINDOW_SECONDS=120, AUTH_LOGIN_RATE_LIMIT_BLOCK_SECONDS=300, ) def test_login_view_rate_limits_failed_attempts(client, user): cache.clear() response = client.post( reverse("login"), {"username": user.username, "password": "wrong"}, ) assert response.status_code == 200 response = client.post( reverse("login"), {"username": user.username, "password": "wrong"}, ) body = response.content.decode("utf-8") assert "Te veel inlogpogingen" in body response = client.post( reverse("login"), {"username": user.username, "password": "wrong"}, ) assert "Te veel inlogpogingen" in response.content.decode("utf-8")