Zielserver-Entscheidung durch optionales Install-Script aufgelöst statt festgeschrieben: deploy/glitchtip-install.sh installiert GlitchTip per Docker Compose auf einem beliebigen, selbst gewählten Host - nichts automatisch/ungefragt. DSN wird zur Laufzeit über eine neue Admin-GUI-Seite ein-/ausschaltbar (Systemeinstellung-Singleton, GET/PATCH /einstellungen/sentry), statt nur per .env - kein Redeploy zum Umschalten nötig. Frontend lädt @sentry/react nur dynamisch nach, wenn tatsächlich aktiv. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import pytest
|
|
|
|
from tests.conftest import auth_header, login
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sentry_einstellung_default_inaktiv(client):
|
|
response = await client.get("/api/v1/einstellungen/sentry")
|
|
assert response.status_code == 200
|
|
assert response.json() == {"sentry_dsn": None, "aktiv": False}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sentry_einstellung_setzen_erfordert_admin(client, mitarbeiter_user):
|
|
token = await login(client, "mitarbeiter1")
|
|
response = await client.patch(
|
|
"/api/v1/einstellungen/sentry",
|
|
json={"sentry_dsn": "https://example@glitchtip.example.org/1"},
|
|
headers=auth_header(token),
|
|
)
|
|
assert response.status_code == 403
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_admin_kann_sentry_dsn_setzen_und_wieder_leeren(client, admin_user):
|
|
token = await login(client, "admin1")
|
|
|
|
gesetzt = await client.patch(
|
|
"/api/v1/einstellungen/sentry",
|
|
json={"sentry_dsn": "https://example@glitchtip.example.org/1"},
|
|
headers=auth_header(token),
|
|
)
|
|
assert gesetzt.status_code == 200
|
|
assert gesetzt.json()["aktiv"] is True
|
|
assert gesetzt.json()["sentry_dsn"] == "https://example@glitchtip.example.org/1"
|
|
|
|
geholt = await client.get("/api/v1/einstellungen/sentry")
|
|
assert geholt.json()["aktiv"] is True
|
|
|
|
geleert = await client.patch(
|
|
"/api/v1/einstellungen/sentry", json={"sentry_dsn": None}, headers=auth_header(token)
|
|
)
|
|
assert geleert.status_code == 200
|
|
assert geleert.json() == {"sentry_dsn": None, "aktiv": False}
|