frankenbot/test_features.py
Pjot 56d9bc2c76 feat: initial commit – Frankenbot Multi-Agent Orchestration System
- Flask Web-App mit Dashboard, Chat, Orchestrator, Tasks, Dateien, Emails, Agenten, Settings
- Email-Poller (IMAP) mit SQLite-Journal als Failsafe (kein Emailverlust bei Absturz)
- Failsafe-Fenster und Poll-Intervall zur Laufzeit via /settings konfigurierbar
- TaskWorker: IMAP Seen-Flag erst nach erfolgreichem Task-Abschluss
- Whitelist-Filter: eric.fischer, p.dyderski, georg.tschare (gmail + signtime.media), *@diversityball.at
- 9 Agenten: researcher, tax_advisor, document_editor, location_manager, program_manager,
  catering_manager, musik_rechte_advisor, zusammenfasser, orchestration_ui
- Diversity Ball Wien 2026 – Wissensdatenbank, Sponsoringverträge, Email-Vorlagen
2026-02-20 17:31:16 +01:00

146 lines
4.1 KiB
Python

#!/usr/bin/env python3
"""
Test Script für neue Features
- Streaming UI (SSE)
- Email Integration (IMAP/SMTP)
"""
import json
import sys
def test_imports():
"""Teste dass alle notwendigen Importe funktionieren"""
print("✓ Testing Imports...")
try:
import imaplib
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from flask import Flask, Response
print(" ✓ All imports successful")
return True
except ImportError as e:
print(f" ✗ Import Error: {e}")
return False
def test_app_syntax():
"""Teste dass app.py syntaktisch korrekt ist"""
print("\n✓ Testing app.py syntax...")
try:
import app
print(" ✓ app.py loads successfully")
# Check if new routes exist
routes = [str(rule) for rule in app.app.url_map.iter_rules()]
if '/api/agent-stream' in routes:
print(" ✓ /api/agent-stream route exists")
else:
print(" ✗ /api/agent-stream route NOT found")
if '/emails' in routes:
print(" ✓ /emails route exists")
else:
print(" ✗ /emails route NOT found")
return True
except Exception as e:
print(f" ✗ Error: {e}")
return False
def test_email_config():
"""Teste Email-Konfiguration"""
print("\n✓ Testing Email Configuration...")
import os
config = {
'IMAP_SERVER': os.getenv('IMAP_SERVER', 'imap.gmail.com'),
'SMTP_SERVER': os.getenv('SMTP_SERVER', 'smtp.gmail.com'),
'EMAIL_ADDRESS': os.getenv('EMAIL_ADDRESS', ''),
'EMAIL_PASSWORD': os.getenv('EMAIL_PASSWORD', ''),
}
configured = bool(config['EMAIL_ADDRESS'] and config['EMAIL_PASSWORD'])
status = "✓ Configured" if configured else "⚠ Not Configured"
print(f" {status}")
print(f" - IMAP: {config['IMAP_SERVER']}")
print(f" - SMTP: {config['SMTP_SERVER']}")
print(f" - Email: {config['EMAIL_ADDRESS'][:20] if config['EMAIL_ADDRESS'] else 'Not set'}...")
if not configured:
print(" Note: Set environment variables to enable email features")
return True
def test_templates():
"""Teste dass neue Templates existieren"""
print("\n✓ Testing Templates...")
import os
templates = {
'emails.html': os.path.exists('templates/emails.html'),
'orchestrator.html': os.path.exists('templates/orchestrator.html'),
}
for template, exists in templates.items():
status = "" if exists else ""
print(f" {status} {template}")
return all(templates.values())
def test_sse_response():
"""Teste SSE Response Header"""
print("\n✓ Testing SSE Support...")
try:
from flask import Flask, Response
app = Flask(__name__)
@app.route('/test-sse')
def test_sse():
def generate():
yield f"data: {json.dumps({'type': 'test'})}\n\n"
return Response(generate(), mimetype='text/event-stream')
print(" ✓ SSE Response configured")
return True
except Exception as e:
print(f" ✗ Error: {e}")
return False
def main():
print("=" * 60)
print("🧪 Testing New Features")
print("=" * 60)
results = [
("Imports", test_imports()),
("App Syntax", test_app_syntax()),
("Email Config", test_email_config()),
("Templates", test_templates()),
("SSE Support", test_sse_response()),
]
print("\n" + "=" * 60)
print("📊 Test Summary")
print("=" * 60)
for name, result in results:
status = "✓ PASS" if result else "✗ FAIL"
print(f"{status}: {name}")
passed = sum(1 for _, r in results if r)
total = len(results)
print(f"\nTotal: {passed}/{total} passed")
if passed == total:
print("\n✨ All tests passed!")
return 0
else:
print("\n⚠️ Some tests failed")
return 1
if __name__ == '__main__':
sys.exit(main())