Files
n3wt-school/Back-End/test_all_endpoints.py
2025-06-05 17:20:59 +02:00

40 lines
1.4 KiB
Python

"""
Starter de tests automatiques pour valider tous les endpoints définis dans les fichiers urls.py du projet Django N3WT-SCHOOL.
Chaque endpoint est testé pour la réponse HTTP attendue (200, 401, 403, 404, etc.).
"""
import pytest
from django.urls import reverse, resolve
from rest_framework.test import APIClient
from django.conf import settings
from django.urls import get_resolver
@pytest.mark.django_db
class TestAllEndpoints:
@pytest.fixture(autouse=True)
def setup(self):
self.client = APIClient()
def get_all_url_patterns(self):
resolver = get_resolver()
patterns = resolver.url_patterns
urls = []
def extract(patterns, prefix=""):
for p in patterns:
if hasattr(p, 'url_patterns'):
extract(p.url_patterns, prefix + str(p.pattern))
else:
urls.append(prefix + str(p.pattern))
extract(patterns)
return urls
def test_all_endpoints_anonymous(self):
urls = self.get_all_url_patterns()
for url in urls:
if '<' in url: # skip dynamic urls for starter
continue
try:
response = self.client.get(url)
assert response.status_code in [200, 401, 403, 404]
except Exception as e:
print(f"Erreur sur {url}: {e}")