refactor: Jitsi/Matrix/Voice von Core übernommen, Camunda/BPMN gelöscht, Kommunikation-Nav
Some checks failed
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 25s
CI / test-go-edu-search (push) Successful in 26s
CI / test-python-klausur (push) Failing after 1m55s
CI / test-python-agent-core (push) Successful in 16s
CI / test-nodejs-website (push) Successful in 18s
Some checks failed
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 25s
CI / test-go-edu-search (push) Successful in 26s
CI / test-python-klausur (push) Failing after 1m55s
CI / test-python-agent-core (push) Successful in 16s
CI / test-nodejs-website (push) Successful in 18s
- Voice-Service von Core nach Lehrer verschoben (bp-lehrer-voice-service) - 4 Jitsi-Services + 2 Synapse-Services in docker-compose.yml aufgenommen - Camunda komplett gelöscht: workflow pages, workflow-config.ts, bpmn-js deps - CAMUNDA_URL aus backend-lehrer environment entfernt - Sidebar: Kategorie "Compliance SDK" + "Katalogverwaltung" entfernt - Sidebar: Neue Kategorie "Kommunikation" mit Video & Chat, Voice Service, Alerts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
94
voice-service/tests/test_sessions.py
Normal file
94
voice-service/tests/test_sessions.py
Normal file
@@ -0,0 +1,94 @@
|
||||
"""
|
||||
Tests for Session API
|
||||
"""
|
||||
import pytest
|
||||
|
||||
|
||||
class TestSessionAPI:
|
||||
"""Tests for session management."""
|
||||
|
||||
def test_health_check(self, client):
|
||||
"""Test health endpoint returns healthy status."""
|
||||
response = client.get("/health")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["status"] == "healthy"
|
||||
assert data["service"] == "voice-service"
|
||||
assert data["dsgvo_compliance"]["audio_persistence"] is False
|
||||
|
||||
def test_root_endpoint(self, client):
|
||||
"""Test root endpoint returns service info."""
|
||||
response = client.get("/")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["service"] == "Breakpilot Voice Service"
|
||||
assert "endpoints" in data
|
||||
assert data["privacy"]["audio_stored"] is False
|
||||
|
||||
def test_create_session(self, client):
|
||||
"""Test session creation."""
|
||||
response = client.post(
|
||||
"/api/v1/sessions",
|
||||
json={
|
||||
"namespace_id": "test-ns-12345678",
|
||||
"key_hash": "sha256:eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=", # 32 bytes base64
|
||||
"device_type": "pwa",
|
||||
"client_version": "1.0.0",
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "id" in data
|
||||
assert data["namespace_id"] == "test-ns-12345678"
|
||||
assert data["status"] == "created"
|
||||
assert "websocket_url" in data
|
||||
|
||||
def test_create_session_invalid_key_hash(self, client):
|
||||
"""Test session creation with invalid key hash."""
|
||||
response = client.post(
|
||||
"/api/v1/sessions",
|
||||
json={
|
||||
"namespace_id": "test-ns-12345678",
|
||||
"key_hash": "invalid",
|
||||
"device_type": "pwa",
|
||||
},
|
||||
)
|
||||
assert response.status_code == 401
|
||||
assert "Invalid encryption key hash" in response.json()["detail"]
|
||||
|
||||
def test_get_session_not_found(self, client):
|
||||
"""Test getting non-existent session."""
|
||||
response = client.get("/api/v1/sessions/nonexistent-session")
|
||||
assert response.status_code == 404
|
||||
|
||||
def test_session_lifecycle(self, client):
|
||||
"""Test full session lifecycle."""
|
||||
# Create session
|
||||
create_response = client.post(
|
||||
"/api/v1/sessions",
|
||||
json={
|
||||
"namespace_id": "test-ns-lifecycle",
|
||||
"key_hash": "sha256:eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=",
|
||||
},
|
||||
)
|
||||
assert create_response.status_code == 200
|
||||
session_id = create_response.json()["id"]
|
||||
|
||||
# Get session
|
||||
get_response = client.get(f"/api/v1/sessions/{session_id}")
|
||||
assert get_response.status_code == 200
|
||||
assert get_response.json()["id"] == session_id
|
||||
|
||||
# Get session stats
|
||||
stats_response = client.get(f"/api/v1/sessions/{session_id}/stats")
|
||||
assert stats_response.status_code == 200
|
||||
assert "message_count" in stats_response.json()
|
||||
|
||||
# Delete session
|
||||
delete_response = client.delete(f"/api/v1/sessions/{session_id}")
|
||||
assert delete_response.status_code == 200
|
||||
assert delete_response.json()["status"] == "closed"
|
||||
|
||||
# Verify session is gone
|
||||
get_again = client.get(f"/api/v1/sessions/{session_id}")
|
||||
assert get_again.status_code == 404
|
||||
Reference in New Issue
Block a user