Files
billing-MCP/not_used/test_billing_tools.py

80 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""
Test Billing Tools
"""
import sys
import os
from dotenv import load_dotenv
# Add src to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
# Set dummy environment variables for testing
os.environ['BILLING_DB_1_HOST'] = 'localhost'
os.environ['BILLING_DB_1_USER'] = 'test'
os.environ['BILLING_DB_1_PASS'] = 'test'
os.environ['BILLING_DB_1_NAME'] = 'testdb'
# Also test legacy format
os.environ['BILLING_DB_HOST'] = 'legacyhost'
os.environ['BILLING_DB_USER'] = 'legacyuser'
os.environ['BILLING_DB_PASS'] = 'legacypass'
os.environ['BILLING_DB_NAME'] = 'legacydb'
from src.vultr_mcp.billing import BillingDatabase
def test_billing_module():
print("Testing BillingDatabase module...")
try:
# Create instance
billing = BillingDatabase()
# Test server loading
servers = billing.list_servers()
print(f"Loaded servers: {len(servers)}")
for server in servers:
print(f" Server {server['server_id']}: {server['host']} ({server['database']})")
# Test get_server_config
config1 = billing.get_server_config('1')
print(f"\nServer 1 config: {config1['host'] if config1 else 'None'}")
# Test server 2 (should not exist)
config2 = billing.get_server_config('2')
print(f"Server 2 config: {'Exists' if config2 else 'None'}")
# Test check_connection (will fail but should handle gracefully)
print("\nTesting connection check (will fail due to dummy credentials):")
result = billing.check_connection('1')
print(f"Success: {result.get('success', False)}")
if not result.get('success'):
print(f"Error: {result.get('error', 'Unknown')}")
if result.get('hint'):
print(f"Hint: {result['hint']}")
# Test search customers (should fail gracefully)
print("\nTesting search customers (will fail):")
search_result = billing.search_customers('test', '1', 5, 0)
print(f"Success: {search_result.get('success', False)}")
# Test normalize phone number
print("\nTesting phone normalization:")
test_numbers = ['62812345678', '0812345678', '62812345678@c.us']
for num in test_numbers:
normalized = billing._normalize_phone_number(num)
print(f" {num} -> {normalized}")
print("\n✅ Billing module tests completed (expected failures due to dummy credentials)")
return True
except Exception as e:
print(f"❌ Error testing billing module: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == '__main__':
success = test_billing_module()
sys.exit(0 if success else 1)