Skip to main content
Glama
test_specific_user.py8.85 kB
#!/usr/bin/env python3 """ Comprehensive test script for all operations on a specific user in Zep Cloud """ import os import sys import time import json import argparse from pathlib import Path from dotenv import load_dotenv # Configure the specific user ID to test USER_ID = "16263830569_aprilx" # Try loading from both .env and .env.new env_path = Path('.env.new') if env_path.exists(): load_dotenv(dotenv_path=env_path) print(f"Loaded environment from .env.new") else: load_dotenv() # Fallback to default .env print(f"Loaded environment from .env") # Import the Zep Cloud client try: from zep_cloud_client import ZepCloudClient print("Successfully imported ZepCloudClient") except ImportError: print("Failed to import ZepCloudClient. Make sure zep_cloud_client.py is in the current directory.") sys.exit(1) def check_user_exists(client, user_id, verbose=True): """Check if a user exists in Zep Cloud""" if verbose: print(f"\n=== Checking if user exists: {user_id} ===\n") try: user = client.get_user(user_id) if user: if verbose: print(f"✅ User exists: {user['user_id']}") print(f"Metadata: {json.dumps(user['metadata'], indent=2)}") return user else: if verbose: print(f"❌ User {user_id} does not exist") return None except Exception as e: if verbose: print(f"❌ Error checking user: {str(e)}") return None def create_user(client, user_id, metadata=None): """Create a user in Zep Cloud""" print(f"\n=== Creating user: {user_id} ===\n") # Default metadata if metadata is None: metadata = { "created_at": time.time(), "description": "Test user created for production use", "source": "direct_api_call", "organization": "zep_cloud_test" } print(f"Attempting to create user with metadata:") print(json.dumps(metadata, indent=2)) try: user = client.create_user(user_id, metadata) if user: print(f"\n✅ SUCCESS: Created user: {user['user_id']}") print(f"Metadata: {json.dumps(user['metadata'], indent=2)}") return user else: print(f"\n❌ ERROR: Failed to create user {user_id}") return None except Exception as e: print(f"\n❌ ERROR: Exception while creating user: {str(e)}") return None def update_user(client, user_id, metadata): """Update a user in Zep Cloud""" print(f"\n=== Updating user: {user_id} ===\n") print(f"Attempting to update user with metadata:") print(json.dumps(metadata, indent=2)) try: user = client.update_user(user_id, metadata) if user: print(f"\n✅ SUCCESS: Updated user: {user['user_id']}") print(f"Metadata: {json.dumps(user['metadata'], indent=2)}") return user else: print(f"\n❌ ERROR: Failed to update user {user_id}") return None except Exception as e: print(f"\n❌ ERROR: Exception while updating user: {str(e)}") return None def delete_user(client, user_id): """Delete a user from Zep Cloud""" print(f"\n=== Deleting user: {user_id} ===\n") try: result = client.delete_user(user_id) if result: print(f"\n✅ SUCCESS: Deleted user: {user_id}") return True else: print(f"\n❌ ERROR: Failed to delete user {user_id}") return False except Exception as e: print(f"\n❌ ERROR: Exception while deleting user: {str(e)}") return False def restore_user(client, user_id, metadata=None): """Restore a user if it was deleted""" # Default metadata if metadata is None: metadata = { "created_at": time.time(), "description": "Restored user", "source": "restore_operation", "organization": "zep_cloud_test" } return create_user(client, user_id, metadata) def run_test_with_metadata(metadata=None): """Run a test with the specified metadata""" # Create client try: client = ZepCloudClient() print(f"Successfully initialized ZepCloudClient") except Exception as e: print(f"Error initializing client: {str(e)}") return False # Check if user exists original_user = check_user_exists(client, USER_ID) had_user_initially = original_user is not None if had_user_initially: print(f"\nUser {USER_ID} already exists. Will create, update, and preserve it.") else: print(f"\nUser {USER_ID} does not exist. Will create, update, and then delete it.") # Create the user if it doesn't exist if not had_user_initially: created_user = create_user(client, USER_ID, metadata) if not created_user: print("Failed to create user. Aborting test.") return False # Update the user with new metadata update_metadata = { "updated_at": time.time(), "description": "Updated test user", "test_operation": "update", "organization": "zep_cloud_test" } updated_user = update_user(client, USER_ID, update_metadata) if not updated_user: print("Failed to update user.") if not had_user_initially: print("Cleaning up by deleting the user we created.") delete_user(client, USER_ID) return False # Verify the user exists with updated metadata verified_user = check_user_exists(client, USER_ID) if not verified_user: print("Failed to verify user after update.") if not had_user_initially: print("Cleaning up by deleting the user we created.") delete_user(client, USER_ID) return False # Delete the user if we created it if not had_user_initially: deleted = delete_user(client, USER_ID) if not deleted: print("Failed to delete user.") return False # Verify the user is gone deleted_check = check_user_exists(client, USER_ID) if deleted_check: print("User still exists after deletion attempt.") return False else: # Restore the original user if original_user and "metadata" in original_user: restore_user(client, USER_ID, original_user["metadata"]) else: # If we had a user but couldn't get its metadata, create with default metadata restore_user(client, USER_ID) print("\n✅ All operations completed successfully!") return True def run_test_with_null_metadata(): """Run a test with null metadata""" print("\n=== Testing with NULL metadata ===") return run_test_with_metadata(None) def run_test_with_empty_metadata(): """Run a test with empty dict metadata""" print("\n=== Testing with EMPTY DICT metadata ===") return run_test_with_metadata({}) def run_test_with_actual_metadata(): """Run a test with actual metadata""" print("\n=== Testing with ACTUAL metadata ===") metadata = { "created_at": time.time(), "description": "Test user with actual metadata", "source": "direct_api_call", "test_case": "actual_metadata", "organization": "zep_cloud_test" } return run_test_with_metadata(metadata) def main(): print(f"\n=== Comprehensive Test for Zep Cloud User: {USER_ID} ===\n") parser = argparse.ArgumentParser(description='Test Zep Cloud user operations') parser.add_argument('--test-case', type=str, choices=['null', 'empty', 'actual', 'all'], default='all', help='Test case to run (default: all)') args = parser.parse_args() if args.test_case == 'null' or args.test_case == 'all': test_null = run_test_with_null_metadata() if not test_null and args.test_case != 'all': return False if args.test_case == 'empty' or args.test_case == 'all': test_empty = run_test_with_empty_metadata() if not test_empty and args.test_case != 'all': return False if args.test_case == 'actual' or args.test_case == 'all': test_actual = run_test_with_actual_metadata() if not test_actual and args.test_case != 'all': return False print("\n=== Test Summary ===") if args.test_case == 'all': print("All test cases completed.") else: print(f"Test case '{args.test_case}' completed.") return True if __name__ == "__main__": success = main() sys.exit(0 if success else 1)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fshamim/mcp-server-zep-cloud'

If you have feedback or need assistance with the MCP directory API, please join our Discord server