Files
flowdeck/tests/test_app.py
T
bruno 2b83c658f6
CI / test (push) Failing after 4s
CI / lint (push) Failing after 4s
fix: :memory: db handling + tests (7/7 pass, +csrf +auth tests)
- config: handle sqlite:///:memory: properly in db_path
- db: skip mkdir for :memory: path
- tests: use temp file instead of :memory: (avoids per-connection DB isolation)
- tests: added test_csrf_rejected (403) and test_auth_user
2026-07-08 09:25:52 -04:00

69 lines
1.6 KiB
Python

"""FlowDeck — Basic tests."""
import os
import tempfile
import pytest
from fastapi.testclient import TestClient
@pytest.fixture
def client():
db_file = tempfile.NamedTemporaryFile(suffix=".db", delete=False)
db_path = db_file.name
db_file.close()
os.environ["GITEA_URL"] = "https://git.dracodev.net"
os.environ["GITEA_TOKEN"] = "test"
os.environ["DATABASE_URL"] = f"sqlite:///{db_path}"
from app.main import app
from app.db import init_db
init_db()
yield TestClient(app)
os.unlink(db_path)
def test_health(client):
resp = client.get("/api/health")
assert resp.status_code == 200
data = resp.json()
assert "status" in data
assert data["db"] is True
def test_dashboard(client):
resp = client.get("/")
assert resp.status_code == 200
assert "FlowDeck" in resp.text or "Projets" in resp.text
def test_stats(client):
resp = client.get("/api/stats")
assert resp.status_code == 200
data = resp.json()
assert "boards" in data
def test_projects(client):
resp = client.get("/api/projects")
assert resp.status_code == 200
def test_board_404(client):
resp = client.get("/board/test/test")
assert resp.status_code in (200, 500)
def test_csrf_rejected(client):
"""POST without CSRF token should return 403."""
resp = client.post("/api/move?owner=x&repo=y&issue_id=1&column=Test")
assert resp.status_code == 403
def test_auth_user(client):
resp = client.get("/auth/user")
assert resp.status_code == 200
data = resp.json()
assert "authenticated" in data