|
|
|
@@ -0,0 +1,65 @@
|
|
|
|
|
import pytest
|
|
|
|
|
from django.urls import reverse
|
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
|
from django.test import Client
|
|
|
|
|
|
|
|
|
|
SAFE_STATUS_CODES = {200, 301, 302, 303, 400, 403, 404, 405}
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def candidate_client(db):
|
|
|
|
|
user = User.objects.create_user(username="candidate", password="password", email="candidate@test.com")
|
|
|
|
|
client = Client()
|
|
|
|
|
client.force_login(user)
|
|
|
|
|
return client
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def superuser_client(db):
|
|
|
|
|
user = User.objects.create_superuser(username="superuser", password="password", email="superuser@test.com")
|
|
|
|
|
client = Client()
|
|
|
|
|
client.force_login(user)
|
|
|
|
|
return client
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def anonymous_client(db):
|
|
|
|
|
return Client()
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def smoke_data(db):
|
|
|
|
|
from rota.models import UserRotaDetail
|
|
|
|
|
user = User.objects.create_user(username="smoke_user", password="password", email="smoke@test.com")
|
|
|
|
|
detail = UserRotaDetail.objects.create(user=user)
|
|
|
|
|
return {
|
|
|
|
|
"user": user,
|
|
|
|
|
"detail": detail,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
URL_SPECS = [
|
|
|
|
|
("rota:user_details_update", lambda d: {"pk": d["detail"].pk}),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
|
@pytest.mark.parametrize("url_name, kwargs_lambda", URL_SPECS)
|
|
|
|
|
def test_url_smoke_anonymous(anonymous_client, smoke_data, url_name, kwargs_lambda):
|
|
|
|
|
kwargs = kwargs_lambda(smoke_data) if kwargs_lambda else None
|
|
|
|
|
url = reverse(url_name, kwargs=kwargs)
|
|
|
|
|
response = anonymous_client.get(url, follow=False)
|
|
|
|
|
assert response.status_code != 500, f"500 Server Error on {url_name} ({url}) for Anonymous"
|
|
|
|
|
assert response.status_code in {200, 302, 400, 403, 404, 405}, f"Unexpected status code {response.status_code} on {url_name} for Anonymous"
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
|
@pytest.mark.parametrize("url_name, kwargs_lambda", URL_SPECS)
|
|
|
|
|
def test_url_smoke_candidate(candidate_client, smoke_data, url_name, kwargs_lambda):
|
|
|
|
|
kwargs = kwargs_lambda(smoke_data) if kwargs_lambda else None
|
|
|
|
|
url = reverse(url_name, kwargs=kwargs)
|
|
|
|
|
response = candidate_client.get(url, follow=False)
|
|
|
|
|
assert response.status_code != 500, f"500 Server Error on {url_name} ({url}) for Candidate"
|
|
|
|
|
assert response.status_code in SAFE_STATUS_CODES, f"Unexpected status code {response.status_code} on {url_name} for Candidate"
|
|
|
|
|
|
|
|
|
|
@pytest.mark.django_db
|
|
|
|
|
@pytest.mark.parametrize("url_name, kwargs_lambda", URL_SPECS)
|
|
|
|
|
def test_url_smoke_superuser(superuser_client, smoke_data, url_name, kwargs_lambda):
|
|
|
|
|
kwargs = kwargs_lambda(smoke_data) if kwargs_lambda else None
|
|
|
|
|
url = reverse(url_name, kwargs=kwargs)
|
|
|
|
|
response = superuser_client.get(url, follow=False)
|
|
|
|
|
assert response.status_code != 500, f"500 Server Error on {url_name} ({url}) for Superuser"
|
|
|
|
|
assert response.status_code in SAFE_STATUS_CODES, f"Unexpected status code {response.status_code} on {url_name} for Superuser"
|