transfer from private server/git server
This commit is contained in:
56
web/tests/test_unit_fichier_service.py
Normal file
56
web/tests/test_unit_fichier_service.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""Tests unitaires du module Fichiers — UT-06 à UT-08 (décomposition en 8 étapes)."""
|
||||
|
||||
import io
|
||||
|
||||
import pytest
|
||||
from werkzeug.datastructures import FileStorage
|
||||
|
||||
from services import fichier_service
|
||||
|
||||
|
||||
def _file_storage(content=b"contenu de test", filename="rapport.pdf", mimetype="application/pdf"):
|
||||
return FileStorage(stream=io.BytesIO(content), filename=filename, content_type=mimetype)
|
||||
|
||||
|
||||
def test_ut06_fichier_trop_grand():
|
||||
fs = _file_storage(content=b"x" * 100)
|
||||
with pytest.raises(fichier_service.FileValidationError):
|
||||
fichier_service.step2_check_size(fs, max_size=50)
|
||||
|
||||
|
||||
def test_ut06b_fichier_vide():
|
||||
fs = _file_storage(content=b"")
|
||||
with pytest.raises(fichier_service.FileValidationError):
|
||||
fichier_service.step2_check_size(fs)
|
||||
|
||||
|
||||
def test_ut07_extension_interdite():
|
||||
with pytest.raises(fichier_service.FileValidationError):
|
||||
fichier_service.step4_check_extension("script.exe")
|
||||
|
||||
|
||||
def test_ut07b_extension_autorisee():
|
||||
ext = fichier_service.step4_check_extension("rapport.pdf")
|
||||
assert ext == "pdf"
|
||||
|
||||
|
||||
def test_ut08_nom_genere_est_unique():
|
||||
name1 = fichier_service.step5_generate_safe_name("pdf")
|
||||
name2 = fichier_service.step5_generate_safe_name("pdf")
|
||||
assert name1 != name2
|
||||
assert name1.endswith(".pdf")
|
||||
|
||||
|
||||
def test_ut08b_presence_fichier_absent():
|
||||
with pytest.raises(fichier_service.FileValidationError):
|
||||
fichier_service.step1_check_presence(None)
|
||||
|
||||
|
||||
def test_upload_complet_end_to_end(db, tmp_path, monkeypatch):
|
||||
"""Vérifie l'enchaînement complet des 8 étapes avec un fichier valide."""
|
||||
from config import Config
|
||||
|
||||
monkeypatch.setattr(Config, "UPLOAD_DIR", str(tmp_path))
|
||||
fs = _file_storage(content=b"%PDF-1.4 contenu factice", filename="doc.pdf", mimetype="application/pdf")
|
||||
fichier_id = fichier_service.handle_upload(db, fs, "sub-1", ip="127.0.0.1")
|
||||
assert fichier_id is not None
|
||||
Reference in New Issue
Block a user