Commits (3)
......@@ -10,11 +10,14 @@ RUN apt-get update && apt-get install -y docker.io
# Copier les fichiers nécessaires
COPY requirements.txt .
# Installer les dépendances
# Installer les dépendances et ajouter pytest
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir pytest
# Copier le reste du code
COPY . .
# Copier le reste du code (y compris les tests)
COPY . /app
RUN ls -l /app
# Exposer le port sur lequel Flask écoute
EXPOSE 5000
......
import pytest
import json
from unittest.mock import patch, MagicMock
from app import app
@pytest.fixture
def client():
app.config["TESTING"] = True
with app.test_client() as client:
yield client
def test_health(client):
response = client.get("/health")
assert response.status_code == 200
assert response.json == {"status": "ok"}
@patch("app.redis_client.get")
def test_get_request_count(mock_redis_get, client):
mock_redis_get.return_value = "5"
response = client.get("/request_count")
assert response.status_code == 200
assert response.json == {"status": "success", "data": {"request_received_count": 5}, "errors": None}
@patch("app.redis_client.exists")
@patch("app.redis_client.get")
def test_bruteforce_cached(mock_redis_get, mock_redis_exists, client):
mock_redis_exists.return_value = True
mock_redis_get.return_value = "password123"
data = json.dumps({"hash": "5f4dcc3b5aa765d61d8327deb882cf99"})
response = client.post("/bruteforce", data=data, content_type="application/json")
assert response.status_code == 200
assert response.json == {
"status": "success",
"data": {"hash": "5f4dcc3b5aa765d61d8327deb882cf99", "original": "password123"},
"errors": None
}
@patch("app.redis_client.keys")
@patch("app.redis_client.get")
def test_get_resolved_hashes(mock_redis_get, mock_redis_keys, client):
mock_redis_keys.return_value = ["hash1", "hash2"]
mock_redis_get.side_effect = lambda key: f"original_{key}"
response = client.get("/resolved")
assert response.status_code == 200
assert response.json == {
"status": "success",
"data": {"hash1": "original_hash1", "hash2": "original_hash2"},
"errors": None
}
@patch("app.redis_client.exists")
@patch("app.redis_client.get")
def test_get_resolved_hash(mock_redis_get, mock_redis_exists, client):
mock_redis_exists.return_value = True
mock_redis_get.return_value = "password123"
response = client.get("/resolved/5f4dcc3b5aa765d61d8327deb882cf99")
assert response.status_code == 200
assert response.json == {
"status": "success",
"data": {"hash": "5f4dcc3b5aa765d61d8327deb882cf99", "original": "password123"},
"errors": None
}
@patch("app.redis_client.exists")
def test_get_resolved_hash_not_found(mock_redis_exists, client):
mock_redis_exists.return_value = False
response = client.get("/resolved/nonexistent_hash")
assert response.status_code == 404
assert response.json == {
"status": "fail",
"data": None,
"errors": {"message": "No resolved entry found for hash: nonexistent_hash"}
}