41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
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
|