"""Tests pour les fonctions de validation."""
from __future__ import annotations
import pytest
# Import après le mock pour éviter les erreurs de connexion
import sys
from unittest.mock import patch, MagicMock
# Mock les variables d'environnement avant l'import
with patch.dict("os.environ", {
"ODOO_URL": "https://test.odoo.com",
"ODOO_DB": "test_db",
"ODOO_USERNAME": "test_user",
"ODOO_API_KEY": "test_key",
}):
from server import validate_date, validate_config
class TestValidateDate:
"""Tests pour la fonction validate_date."""
def test_valid_date_format(self):
"""Test avec une date valide."""
assert validate_date("2024-01-15") is True
assert validate_date("2024-12-31") is True
assert validate_date("2023-02-28") is True
def test_invalid_date_format(self):
"""Test avec des formats de date invalides."""
assert validate_date("15-01-2024") is False
assert validate_date("2024/01/15") is False
assert validate_date("01-15-2024") is False
assert validate_date("2024-1-15") is False
assert validate_date("not-a-date") is False
def test_invalid_date_values(self):
"""Test avec des valeurs de date impossibles."""
assert validate_date("2024-13-01") is False # Mois 13
assert validate_date("2024-02-30") is False # 30 février
assert validate_date("2024-00-15") is False # Mois 0
def test_edge_cases(self):
"""Test des cas limites."""
assert validate_date("") is False
assert validate_date("2024") is False
assert validate_date("2024-01") is False
class TestValidateConfig:
"""Tests pour la fonction validate_config."""
def test_valid_config(self):
"""Test avec une configuration valide."""
with patch.dict("os.environ", {
"ODOO_URL": "https://test.odoo.com",
"ODOO_DB": "test_db",
"ODOO_USERNAME": "test_user",
"ODOO_API_KEY": "test_key",
}):
# Recharger le module pour prendre en compte les nouvelles variables
with patch("server.ODOO_URL", "https://test.odoo.com"), \
patch("server.ODOO_DB", "test_db"), \
patch("server.ODOO_USERNAME", "test_user"), \
patch("server.ODOO_API_KEY", "test_key"):
# Ne devrait pas lever d'exception
try:
validate_config()
except SystemExit:
pytest.fail("validate_config ne devrait pas quitter avec une config valide")
def test_missing_url(self):
"""Test avec URL manquante."""
with patch("server.ODOO_URL", ""), \
patch("server.ODOO_DB", "test_db"), \
patch("server.ODOO_USERNAME", "test_user"), \
patch("server.ODOO_API_KEY", "test_key"), \
patch("server.logger"):
with pytest.raises(SystemExit):
validate_config()
def test_missing_all(self):
"""Test avec toutes les variables manquantes."""
with patch("server.ODOO_URL", ""), \
patch("server.ODOO_DB", ""), \
patch("server.ODOO_USERNAME", ""), \
patch("server.ODOO_API_KEY", ""), \
patch("server.logger"):
with pytest.raises(SystemExit):
validate_config()