Files
BSN-Livesystem/tests/test_app.py
T

63 lines
1.9 KiB
Python

"""Tests für die Flask-App-Factory mit fakeredis."""
from __future__ import annotations
import fakeredis
from flask import Flask
from flask.testing import FlaskClient
from src.app import create_app
from src.queue.handler import QueueHandler
def test_create_app_returns_flask_app() -> None:
"""create_app() liefert eine Flask-App-Instanz zurück."""
app = create_app()
assert isinstance(app, Flask)
def test_health_returns_status_ok() -> None:
"""GET /health liefert 200 und JSON mit status=ok."""
app = create_app()
# QueueHandler mit fakeredis ersetzen
fake_redis = fakeredis.FakeRedis(decode_responses=True)
qh = QueueHandler.__new__(QueueHandler)
qh.redis = fake_redis
qh.stream_key = "bsn:submissions"
qh.processed_set = "bsn:processed"
qh.stream_ids_hash = "bsn:stream_ids"
qh.group_name = "bsn-workers"
qh._ensure_consumer_group()
app.queue_handler = qh # type: ignore[attr-defined]
client: FlaskClient = app.test_client()
response = client.get("/health")
assert response.status_code == 200
data = response.get_json()
assert data is not None
assert data["status"] == "ok"
def test_health_queue_size_is_integer() -> None:
"""GET /health liefert queue_size als Integer."""
app = create_app()
# QueueHandler mit fakeredis ersetzen
fake_redis = fakeredis.FakeRedis(decode_responses=True)
qh = QueueHandler.__new__(QueueHandler)
qh.redis = fake_redis
qh.stream_key = "bsn:submissions"
qh.processed_set = "bsn:processed"
qh.stream_ids_hash = "bsn:stream_ids"
qh.group_name = "bsn-workers"
qh._ensure_consumer_group()
app.queue_handler = qh # type: ignore[attr-defined]
client = app.test_client()
response = client.get("/health")
assert response.status_code == 200
data = response.get_json()
assert data is not None
assert isinstance(data["queue_size"], int)