403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/arni-solutions.de/web/plate-ai-api/tests/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/arni-solutions.de/web/plate-ai-api/tests/conftest.py
"""Pytest-Setup: SQLite-Test-DB, Demo-Client + API-Key, TestClient.

Wichtig: Umgebungsvariablen werden VOR dem App-Import gesetzt, damit die
gecachte Settings-Instanz die Test-Konfiguration nutzt.
"""
import io
import os

os.environ.setdefault("DATABASE_URL", "sqlite+pysqlite:///:memory:")
os.environ.setdefault("SECRET_KEY", "test-secret")
os.environ.setdefault("ADMIN_TOKEN", "test-admin")
os.environ.setdefault("REDIS_URL", "")
os.environ.setdefault("MAX_UPLOAD_MB", "1")
os.environ.setdefault("STORE_RESULTS", "false")  # DB-Schreiben in Tests aussparen

import pytest  # noqa: E402
from fastapi.testclient import TestClient  # noqa: E402
from PIL import Image  # noqa: E402
from sqlalchemy import create_engine  # noqa: E402
from sqlalchemy.orm import sessionmaker  # noqa: E402
from sqlalchemy.pool import StaticPool  # noqa: E402

from app.database import base as db_base  # noqa: E402
from app.database.models import ApiClient, ApiKey  # noqa: E402
from app.core.security import hash_api_key  # noqa: E402

# EINE gemeinsame In-Memory-DB fuer den ganzen Testlauf
_engine = create_engine(
    "sqlite+pysqlite:///:memory:",
    connect_args={"check_same_thread": False},
    poolclass=StaticPool,
)
_TestSession = sessionmaker(bind=_engine, autoflush=False, autocommit=False)

# App-Engine/Session auf Test-DB umbiegen
db_base.engine = _engine
db_base.SessionLocal = _TestSession

from app.main import app  # noqa: E402
from app.database.base import get_db  # noqa: E402

TEST_KEY = "pk_live_testkey123"


def _override_get_db():
    db = _TestSession()
    try:
        yield db
    finally:
        db.close()


app.dependency_overrides[get_db] = _override_get_db


@pytest.fixture(scope="session", autouse=True)
def _setup_db():
    db_base.Base.metadata.create_all(bind=_engine)
    db = _TestSession()
    client = ApiClient(name="Test", plan="dev", monthly_limit=100000,
                       rate_limit_per_minute=1000, active=True)
    db.add(client)
    db.commit()
    db.refresh(client)
    db.add(ApiKey(client_id=client.id, key_hash=hash_api_key(TEST_KEY),
                  key_prefix="pk_live_test", label="test", active=True))
    db.commit()
    db.close()
    yield


@pytest.fixture
def client():
    return TestClient(app)


@pytest.fixture
def auth_headers():
    return {"X-API-Key": TEST_KEY}


def make_png(width=120, height=90, color=(40, 90, 160)) -> bytes:
    buf = io.BytesIO()
    Image.new("RGB", (width, height), color).save(buf, format="PNG")
    return buf.getvalue()

Youez - 2016 - github.com/yon3zu
LinuXploit