File size: 1,280 Bytes
590e30d
c603a60
 
590e30d
 
 
 
d533730
 
590e30d
 
 
d533730
590e30d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d533730
590e30d
 
 
 
 
 
d533730
590e30d
 
e62960c
590e30d
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from fastapi.testclient import TestClient
from api.app import app, get_moderator
from api.content_moderator import ContentModerator


def mock_classifier(text):
    if text == "Hello":
        return [{"label": "SAFE", "score": 0.99}]
    return [{"label": "UNSAFE", "score": 0.99}]


def get_mock_moderator():
    return ContentModerator(mock_classifier)


app.dependency_overrides[get_moderator] = get_mock_moderator
client = TestClient(app)


def test_health():
    response = client.get("/health")
    assert response.status_code == 200
    assert response.json() == {"status": "ok"}


def test_predict_valid_text():
    response = client.post("/predict", json={"text": "Hello"})
    assert response.status_code == 200
    data = response.json()
    assert data["label"] == "SAFE"
    assert data["score"] == 0.99


def test_predict_normalization():
    response = client.post("/predict", json={"text": "Hello"})
    assert response.status_code == 200
    assert response.json()["label"] == "SAFE"


def test_predict_empty_text():
    response = client.post("/predict", json={"text": ""})
    assert response.status_code == 422


def test_predict_whitespace_only():
    response = client.post("/predict", json={"text": "   "})
    assert response.status_code == 422