- JWT middleware для FastAPI - Генерація/перевірка JWT токенів - Скрипти для генерації Qdrant API keys - Скрипти для генерації NATS operator JWT - План реалізації Auth TODO: Додати JWT до endpoints, NATS nkeys config, Qdrant API key config
119 lines
3.7 KiB
Python
Executable File
119 lines
3.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
"""
|
||
Тестовий скрипт для Matrix Gateway
|
||
Перевірка базової функціональності без реального Matrix connection
|
||
"""
|
||
|
||
import asyncio
|
||
import json
|
||
from gateway.job_creator import JobCreator
|
||
from gateway.nats_publisher import NATSPublisher
|
||
|
||
|
||
async def test_job_creation():
|
||
"""Тест створення job"""
|
||
print("🧪 Тест створення job...")
|
||
|
||
# Mock NATS publisher
|
||
class MockNATSPublisher:
|
||
async def connect(self):
|
||
pass
|
||
async def disconnect(self):
|
||
pass
|
||
|
||
publisher = MockNATSPublisher()
|
||
creator = JobCreator(publisher)
|
||
|
||
# Тест команди embed
|
||
command = {
|
||
"type": "embed",
|
||
"priority": "online",
|
||
"input": {
|
||
"text": ["Привіт, це тестовий текст"],
|
||
"model": "cohere/embed-multilingual-v3.0",
|
||
"dims": 1024
|
||
}
|
||
}
|
||
|
||
job = await creator.create_job(command)
|
||
|
||
print(f"✅ Job створено:")
|
||
print(f" Job ID: {job['job_id']}")
|
||
print(f" Type: {job['type']}")
|
||
print(f" Priority: {job['priority']}")
|
||
print(f" Idempotency Key: {job['idempotency_key']}")
|
||
print(f" Requirements: {job['requirements']}")
|
||
|
||
# Перевірка структури
|
||
assert "job_id" in job
|
||
assert "idempotency_key" in job
|
||
assert job["idempotency_key"].startswith("sha256:")
|
||
assert job["type"] == "embed"
|
||
assert job["priority"] == "online"
|
||
|
||
print("✅ Всі перевірки пройдено!")
|
||
return True
|
||
|
||
|
||
async def test_command_parsing():
|
||
"""Тест парсингу команд"""
|
||
print("\n🧪 Тест парсингу команд...")
|
||
|
||
from gateway.main import MatrixGateway
|
||
|
||
gateway = MatrixGateway()
|
||
|
||
# Тест !embed
|
||
command = gateway._parse_command("!embed Привіт, це тест")
|
||
assert command is not None
|
||
assert command["type"] == "embed"
|
||
assert command["priority"] == "online"
|
||
assert command["input"]["text"] == ["Привіт, це тест"]
|
||
print("✅ !embed команда парситься правильно")
|
||
|
||
# Тест !retrieve
|
||
command = gateway._parse_command("!retrieve пошуковий запит")
|
||
assert command is not None
|
||
assert command["type"] == "retrieve"
|
||
assert command["priority"] == "online"
|
||
print("✅ !retrieve команда парситься правильно")
|
||
|
||
# Тест !summarize
|
||
command = gateway._parse_command("!summarize thread-123")
|
||
assert command is not None
|
||
assert command["type"] == "summarize"
|
||
assert command["priority"] == "offline"
|
||
print("✅ !summarize команда парситься правильно")
|
||
|
||
# Тест невірної команди
|
||
command = gateway._parse_command("!unknown команда")
|
||
assert command is None
|
||
print("✅ Невірна команда правильно відхиляється")
|
||
|
||
print("✅ Всі перевірки парсингу пройдено!")
|
||
return True
|
||
|
||
|
||
async def main():
|
||
"""Головна функція тестування"""
|
||
print("🚀 Тестування Matrix Gateway\n")
|
||
|
||
try:
|
||
await test_job_creation()
|
||
await test_command_parsing()
|
||
|
||
print("\n✅ Всі тести пройдено успішно!")
|
||
return 0
|
||
except AssertionError as e:
|
||
print(f"\n❌ Тест не пройдено: {e}")
|
||
return 1
|
||
except Exception as e:
|
||
print(f"\n❌ Помилка: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return 1
|
||
|
||
|
||
if __name__ == "__main__":
|
||
exit(asyncio.run(main()))
|