#!/usr/bin/env python3 """ Test mem0 integration with self-hosted Supabase """ import os import sys from dotenv import load_dotenv from mem0 import Memory from config import load_config, get_mem0_config import tempfile def test_supabase_mem0_integration(): """Test mem0 with Supabase vector store""" print("๐Ÿงช Testing mem0 with Supabase integration...") # Load configuration config = load_config() if not config.database.supabase_url or not config.database.supabase_key: print("โŒ Supabase configuration not found") return False try: # Get mem0 configuration for Supabase mem0_config = get_mem0_config(config, "openai") print(f"๐Ÿ“‹ Configuration: {mem0_config}") # Create memory instance m = Memory.from_config(mem0_config) # Test basic operations print("๐Ÿ’พ Testing memory addition...") messages = [ {"role": "user", "content": "I love programming in Python"}, {"role": "assistant", "content": "That's great! Python is an excellent language for development."} ] result = m.add(messages, user_id="test_user_supabase") print(f"โœ… Memory added: {result}") print("๐Ÿ” Testing memory search...") search_results = m.search(query="Python programming", user_id="test_user_supabase") print(f"โœ… Search results: {search_results}") print("๐Ÿ“œ Testing memory retrieval...") all_memories = m.get_all(user_id="test_user_supabase") print(f"โœ… Retrieved {len(all_memories)} memories") # Cleanup print("๐Ÿงน Cleaning up test data...") for memory in all_memories: if 'id' in memory: m.delete(memory_id=memory['id']) print("โœ… Supabase integration test successful!") return True except Exception as e: print(f"โŒ Supabase integration test failed: {e}") return False def test_supabase_direct_connection(): """Test direct Supabase connection""" print("๐Ÿ”— Testing direct Supabase connection...") try: import requests config = load_config() supabase_url = config.database.supabase_url supabase_key = config.database.supabase_key # Test REST API connection headers = { 'apikey': supabase_key, 'Authorization': f'Bearer {supabase_key}', 'Content-Type': 'application/json' } # Test health endpoint response = requests.get(f"{supabase_url}/rest/v1/", headers=headers, timeout=10) if response.status_code == 200: print("โœ… Supabase REST API is accessible") return True else: print(f"โŒ Supabase REST API returned status {response.status_code}") return False except Exception as e: print(f"โŒ Direct Supabase connection failed: {e}") return False def main(): """Main test function""" print("=" * 60) print("MEM0 + SUPABASE INTEGRATION TESTS") print("=" * 60) # Load environment load_dotenv() results = [] # Test 1: Direct Supabase connection results.append(("Supabase Connection", test_supabase_direct_connection())) # Test 2: mem0 + Supabase integration results.append(("mem0 + Supabase Integration", test_supabase_mem0_integration())) # Summary print("\n" + "=" * 60) print("TEST SUMMARY") print("=" * 60) passed = 0 for test_name, result in results: status = "โœ… PASS" if result else "โŒ FAIL" print(f"{status} {test_name}") if result: passed += 1 print(f"\nOverall: {passed}/{len(results)} tests passed") if passed == len(results): print("๐ŸŽ‰ All Supabase integration tests passed!") sys.exit(0) else: print("๐Ÿ’ฅ Some tests failed - check configuration") sys.exit(1) if __name__ == "__main__": main()