import pytest from django.contrib.auth.models import User from django.urls import reverse @pytest.mark.django_db def test_signup_creates_user(client): payload = { "username": "scout1", "email": "scout1@example.com", "password1": "StrongPass12345", "password2": "StrongPass12345", } response = client.post(reverse("users:signup"), data=payload) assert response.status_code == 302 assert User.objects.filter(username="scout1").exists() @pytest.mark.django_db def test_dashboard_requires_authentication(client): response = client.get(reverse("core:dashboard")) assert response.status_code == 302 assert reverse("users:login") in response.url @pytest.mark.django_db def test_login_logout_flow(client): User.objects.create_user(username="login-user", email="login@example.com", password="StrongPass12345") login_response = client.post( reverse("users:login"), data={"username": "login-user", "password": "StrongPass12345"}, follow=True, ) assert login_response.status_code == 200 assert login_response.wsgi_request.user.is_authenticated logout_response = client.post(reverse("users:logout"), follow=True) assert logout_response.status_code == 200 assert not logout_response.wsgi_request.user.is_authenticated