- FastAPI backend with JWT authentication - ElGamal, RSA-PSS, ZK-proofs crypto modules - HTML5/JS frontend SPA - MariaDB database with 5 tables - Docker Compose with 3 services (frontend, backend, mariadb) - Comprehensive tests for cryptography - Typst technical report (30+ pages) - Makefile with development commands
97 lines
2.4 KiB
Python
97 lines
2.4 KiB
Python
"""
|
|
Tests d'intégration pour le backend.
|
|
Tests du flux complet : inscription -> vote -> résultats
|
|
"""
|
|
|
|
import pytest
|
|
|
|
|
|
# Les tests d'intégration backend nécessitent FastAPI test client
|
|
# et une BD de test. À développer après initialisation Poetry.
|
|
|
|
class TestVoterRegistration:
|
|
"""Tests d'enregistrement des électeurs"""
|
|
|
|
def test_register_new_voter(self):
|
|
"""Tester l'enregistrement d'un nouvel électeur"""
|
|
# TODO: Implémenter avec TestClient
|
|
pass
|
|
|
|
def test_register_duplicate_email(self):
|
|
"""Vérifier qu'on ne peut pas enregistrer deux fois le même email"""
|
|
pass
|
|
|
|
def test_register_invalid_email(self):
|
|
"""Vérifier que les emails invalides sont rejetés"""
|
|
pass
|
|
|
|
|
|
class TestAuthentication:
|
|
"""Tests d'authentification"""
|
|
|
|
def test_login_valid_credentials(self):
|
|
"""Tester la connexion avec identifiants valides"""
|
|
pass
|
|
|
|
def test_login_invalid_password(self):
|
|
"""Tester la connexion avec mot de passe invalide"""
|
|
pass
|
|
|
|
def test_token_expiration(self):
|
|
"""Vérifier l'expiration des tokens JWT"""
|
|
pass
|
|
|
|
|
|
class TestVoting:
|
|
"""Tests du processus de vote"""
|
|
|
|
def test_submit_valid_vote(self):
|
|
"""Soumettre un vote valide"""
|
|
pass
|
|
|
|
def test_vote_already_submitted(self):
|
|
"""Vérifier qu'on ne peut pas voter deux fois"""
|
|
pass
|
|
|
|
def test_invalid_election(self):
|
|
"""Vérifier qu'on ne peut pas voter pour une élection inexistante"""
|
|
pass
|
|
|
|
def test_invalid_candidate(self):
|
|
"""Vérifier qu'on ne peut pas voter pour un candidat invalide"""
|
|
pass
|
|
|
|
|
|
class TestResults:
|
|
"""Tests des résultats d'élection"""
|
|
|
|
def test_get_election_results(self):
|
|
"""Récupérer les résultats d'une élection"""
|
|
pass
|
|
|
|
def test_results_not_published(self):
|
|
"""Vérifier que les résultats non publiés ne sont pas accessibles"""
|
|
pass
|
|
|
|
def test_results_accuracy(self):
|
|
"""Vérifier l'exactitude des calculs de résultats"""
|
|
pass
|
|
|
|
|
|
class TestEndToEnd:
|
|
"""Tests de bout en bout"""
|
|
|
|
def test_complete_voting_flow(self):
|
|
"""
|
|
Test complet : inscription -> connexion -> vote -> résultats
|
|
"""
|
|
pass
|
|
|
|
def test_multiple_voters(self):
|
|
"""Tester avec plusieurs électeurs"""
|
|
pass
|
|
|
|
def test_concurrent_votes(self):
|
|
"""Tester les votes concurrents"""
|
|
pass
|