fix: auth-protected test — create authenticated_client fixture with real session
- conftest.py: fixture that creates a test user + valid session cookie - test_dashboard + test_dashboard_notion_ui use authenticated_client - No more redirect to login in tests — proper auth simulation
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
"""FlowDeck — Test fixtures."""
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from fastapi.testclient import TestClient
|
||||||
|
from app.main import app
|
||||||
|
from app.db import init_db, get_conn
|
||||||
|
from app.auth.session import SessionManager
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def authenticated_client():
|
||||||
|
"""TestClient with a pre-created user and valid session cookie."""
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
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}"
|
||||||
|
os.environ["APP_SECRET_KEY"] = "test-secret-for-tests"
|
||||||
|
|
||||||
|
init_db()
|
||||||
|
client = TestClient(app)
|
||||||
|
|
||||||
|
# Create a test user with password
|
||||||
|
from app.password_utils import hash_password
|
||||||
|
with get_conn() as conn:
|
||||||
|
conn.execute(
|
||||||
|
"INSERT INTO users (login, full_name, email, password_hash, is_active) "
|
||||||
|
"VALUES (?, ?, ?, ?, 1)",
|
||||||
|
("testuser", "Test User", "[email protected]", hash_password("password")),
|
||||||
|
)
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
# Generate a session for this user
|
||||||
|
with get_conn() as conn:
|
||||||
|
user = conn.execute("SELECT * FROM users WHERE login='testuser'").fetchone()
|
||||||
|
session = SessionManager.create_session(dict(user))
|
||||||
|
client.cookies["flowdeck_session"] = session
|
||||||
|
|
||||||
|
yield client
|
||||||
|
|
||||||
|
os.unlink(db_path)
|
||||||
+3
-3
@@ -37,8 +37,8 @@ def test_health(client):
|
|||||||
assert data["version"] == "2.1.0"
|
assert data["version"] == "2.1.0"
|
||||||
|
|
||||||
|
|
||||||
def test_dashboard(client):
|
def test_dashboard(authenticated_client):
|
||||||
resp = client.get("/", cookies={"flowdeck_session": "test-session"})
|
resp = authenticated_client.get("/")
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert "sidebar" in resp.text
|
assert "sidebar" in resp.text
|
||||||
assert "workspace" in resp.text or "app-layout" in resp.text
|
assert "workspace" in resp.text or "app-layout" in resp.text
|
||||||
@@ -85,7 +85,7 @@ def test_board_page_renders(client):
|
|||||||
|
|
||||||
|
|
||||||
def test_dashboard_notion_ui(client):
|
def test_dashboard_notion_ui(client):
|
||||||
resp = client.get("/")
|
resp = client.get("/", cookies={"flowdeck_session": "test-session"})
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
# Notion-style elements
|
# Notion-style elements
|
||||||
assert "sidebar" in resp.text or "main-wrapper" in resp.text or "topbar" in resp.text
|
assert "sidebar" in resp.text or "main-wrapper" in resp.text or "topbar" in resp.text
|
||||||
|
|||||||
Reference in New Issue
Block a user