test_app.py 2,64 ko
Newer Older
aa243527's avatar
aa243527 a validé
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"}
    }