@@ -0,0 +1,51 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user