smoke test the rest of the apps
This commit is contained in:
@@ -0,0 +1 @@
|
||||
# RCR tests package
|
||||
@@ -21,9 +21,9 @@ def create_cid_manager(db, django_user_model):
|
||||
|
||||
@pytest.fixture
|
||||
def create_groups(db):
|
||||
Group.objects.create(name="rcr_radiology_assessor")
|
||||
Group.objects.create(name="rcr_oncology_assessor")
|
||||
Group.objects.create(name="rcr_assessor")
|
||||
Group.objects.get_or_create(name="rcr_radiology_assessor")
|
||||
Group.objects.get_or_create(name="rcr_oncology_assessor")
|
||||
Group.objects.get_or_create(name="rcr_assessor")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from django.contrib.auth.models import Group, 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 assessor_client(db):
|
||||
user = User.objects.create_user(username="assessor", password="password", email="assessor@test.com")
|
||||
for group_name in ["rcr_radiology_assessor", "rcr_oncology_assessor", "rcr_assessor"]:
|
||||
g, _ = Group.objects.get_or_create(name=group_name)
|
||||
user.groups.add(g)
|
||||
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")
|
||||
for group_name in ["rcr_radiology_assessor", "rcr_oncology_assessor", "rcr_assessor", "cid_user_manager"]:
|
||||
g, _ = Group.objects.get_or_create(name=group_name)
|
||||
user.groups.add(g)
|
||||
client = Client()
|
||||
client.force_login(user)
|
||||
return client
|
||||
|
||||
@pytest.fixture
|
||||
def anonymous_client(db):
|
||||
return Client()
|
||||
|
||||
@pytest.fixture
|
||||
def smoke_data(db, create_item, create_radiology_user):
|
||||
return {
|
||||
"item": create_item,
|
||||
"user": create_radiology_user,
|
||||
}
|
||||
|
||||
URL_SPECS = [
|
||||
("rcr:radiology_index_view", None),
|
||||
("rcr:radiology_index_all_view", None),
|
||||
("rcr:radiology_gap", None),
|
||||
("rcr:radiology_results", None),
|
||||
("rcr:radiology_review_view", None),
|
||||
("rcr:radiology_index_completed_view", None),
|
||||
("rcr:radiology_assessors_view", None),
|
||||
("rcr:radiology_assigned_user_view", lambda d: {"user_pk": d["user"].pk}),
|
||||
("rcr:radiology_assessor_assignment_view", lambda d: {"assessor_pk": d["user"].pk}),
|
||||
("rcr:radiology_index_completed_by_user_view", lambda d: {"user_pk": d["user"].pk}),
|
||||
("rcr:radiology_detail_view", lambda d: {"pk": d["item"].pk}),
|
||||
("rcr:radiology_update_next_view", None),
|
||||
("rcr:radiology_update_next_skip_view", lambda d: {"skip": 0}),
|
||||
("rcr:radiology_update_view", lambda d: {"pk": d["item"].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_assessor(assessor_client, smoke_data, url_name, kwargs_lambda):
|
||||
kwargs = kwargs_lambda(smoke_data) if kwargs_lambda else None
|
||||
url = reverse(url_name, kwargs=kwargs)
|
||||
response = assessor_client.get(url, follow=False)
|
||||
assert response.status_code != 500, f"500 Server Error on {url_name} ({url}) for Assessor"
|
||||
assert response.status_code in SAFE_STATUS_CODES, f"Unexpected status code {response.status_code} on {url_name} for Assessor"
|
||||
|
||||
@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"
|
||||
Reference in New Issue
Block a user