fixed team chats

This commit is contained in:
Iyeoluwa Akinrinola
2025-05-16 18:03:15 +01:00
parent 463923278a
commit 730009ae87
21 changed files with 1655 additions and 63 deletions
+243
View File
@@ -0,0 +1,243 @@
#!/usr/bin/env python3
"""
Test script for team chats functionality.
This script tests the team chat features of the AI service, including:
- Creating team chats
- Adding members to team chats
- Sending messages to team chats
- Verifying integration with OpenWebUI channels
"""
import requests
import json
import argparse
import time
import sys
from typing import Dict, Any, List, Tuple, Optional
def test_health(api_url: str) -> bool:
"""Test the health endpoint."""
print(f"Testing health endpoint at: {api_url}/health")
try:
response = requests.get(f"{api_url}/health", timeout=30)
response.raise_for_status()
print("✅ Health check successful!")
print(f"Response: {response.json()}")
return True
except Exception as e:
print(f"❌ ERROR: Health check failed: {str(e)}")
return False
def test_create_team_chat(api_url: str, user_id: str, title: str, model_id: str) -> Tuple[bool, Optional[str]]:
"""
Test creating a team chat.
Args:
api_url: API URL
user_id: User ID
title: Chat title
model_id: Model ID
Returns:
Tuple of (success, chat_id)
"""
print(f"Creating team chat with title: {title}")
try:
response = requests.post(
f"{api_url}/chats",
headers={"Content-Type": "application/json"},
json={
"user_id": user_id,
"title": title,
"model_id": model_id,
"is_team_chat": True
},
timeout=60
)
response.raise_for_status()
chat = response.json()
chat_id = chat.get("id")
print(f"✅ Team chat created successfully with ID: {chat_id}")
print(f"OpenWebUI Channel ID: {chat.get('openwebui_channel_id', 'Not available')}")
print(f"Team Members: {chat.get('team_members', [])}")
return True, chat_id
except Exception as e:
print(f"❌ ERROR: Failed to create team chat: {str(e)}")
return False, None
def test_add_team_member(api_url: str, chat_id: str, user_id: str) -> bool:
"""
Test adding a member to a team chat.
Args:
api_url: API URL
chat_id: Chat ID
user_id: User ID to add
Returns:
Success status
"""
print(f"Adding user {user_id} to team chat {chat_id}")
try:
response = requests.post(
f"{api_url}/chats/{chat_id}/members/{user_id}",
timeout=30
)
response.raise_for_status()
print(f"✅ User {user_id} added to team chat successfully")
return True
except Exception as e:
print(f"❌ ERROR: Failed to add user to team chat: {str(e)}")
return False
def test_send_team_message(api_url: str, chat_id: str, user_id: str, message: str) -> bool:
"""
Test sending a message to a team chat.
Args:
api_url: API URL
chat_id: Chat ID
user_id: User ID
message: Message content
Returns:
Success status
"""
print(f"Sending message to team chat {chat_id}: {message}")
try:
response = requests.post(
f"{api_url}/chats/{chat_id}/messages",
headers={"Content-Type": "application/json"},
json={
"message": message,
"user_id": user_id,
"temperature": 0.7,
"max_tokens": 500
},
timeout=120
)
response.raise_for_status()
result = response.json()
print(f"✅ Message sent successfully")
print(f"AI Response: {result.get('content', 'No content in response')[:100]}...")
return True
except Exception as e:
print(f"❌ ERROR: Failed to send message to team chat: {str(e)}")
return False
def test_get_user_chats(api_url: str, user_id: str) -> Tuple[bool, List[Dict[str, Any]]]:
"""
Test getting all chats for a user.
Args:
api_url: API URL
user_id: User ID
Returns:
Tuple of (success, chats)
"""
print(f"Getting chats for user {user_id}")
try:
response = requests.get(
f"{api_url}/chats/user/{user_id}",
timeout=30
)
response.raise_for_status()
chats = response.json()
team_chats = [chat for chat in chats if chat.get("is_team_chat", False)]
print(f"✅ Found {len(chats)} chats for user {user_id}, {len(team_chats)} are team chats")
return True, chats
except Exception as e:
print(f"❌ ERROR: Failed to get user chats: {str(e)}")
return False, []
def main():
"""Main function."""
parser = argparse.ArgumentParser(description='Test team chats functionality')
parser.add_argument('--api-url', type=str, default='http://localhost:5252', help='AI service API URL')
parser.add_argument('--model', type=str, default='llama3.1', help='Model to use for testing')
parser.add_argument('--user-id', type=str, default='test_user', help='User ID for testing')
parser.add_argument('--second-user-id', type=str, default='test_user2', help='Second user ID for testing team membership')
parser.add_argument('--message', type=str, default='Hello team! Can you help me with a project?', help='Message to send to the team chat')
args = parser.parse_args()
print("=== Team Chats Functionality Test ===")
print(f"API URL: {args.api_url}")
print(f"Model: {args.model}")
print(f"User ID: {args.user_id}")
print()
# Test health endpoint
print("=== Testing Health Endpoint ===")
health_success = test_health(args.api_url)
print()
if not health_success:
print("❌ Health check failed. Aborting tests.")
sys.exit(1)
# Test creating a team chat
print("=== Creating Team Chat ===")
chat_success, chat_id = test_create_team_chat(
args.api_url,
args.user_id,
f"Team Chat Test {time.strftime('%Y-%m-%d %H:%M:%S')}",
args.model
)
print()
if not chat_success or not chat_id:
print("❌ Failed to create team chat. Aborting tests.")
sys.exit(1)
# Test adding a team member
print("=== Adding Team Member ===")
member_success = test_add_team_member(args.api_url, chat_id, args.second_user_id)
print()
# Test sending a message to the team chat
print("=== Sending Message to Team Chat ===")
message_success = test_send_team_message(args.api_url, chat_id, args.user_id, args.message)
print()
# Test getting user chats
print("=== Getting User Chats ===")
chats_success, chats = test_get_user_chats(args.api_url, args.user_id)
print()
# Print summary
print("=== Test Summary ===")
print(f"Health Endpoint: {'✅ SUCCESS' if health_success else '❌ FAILED'}")
print(f"Create Team Chat: {'✅ SUCCESS' if chat_success else '❌ FAILED'}")
print(f"Add Team Member: {'✅ SUCCESS' if member_success else '❌ FAILED'}")
print(f"Send Team Message: {'✅ SUCCESS' if message_success else '❌ FAILED'}")
print(f"Get User Chats: {'✅ SUCCESS' if chats_success else '❌ FAILED'}")
if chat_success and chat_id:
print(f"\nCreated team chat ID: {chat_id}")
print("You can now check the OpenWebUI interface to see if the channel was created")
print("and if the message was sent to the channel.")
print(f"OpenWebUI URL: http://104.225.217.215:8080/")
if __name__ == "__main__":
main()