Files
claudetools/projects/gururmm-agent/scripts/test_gururmm_api.py
Mike Swanson 5cbd49ce24 Reorganize repo: compartmentalize scripts by client/project
Move 150+ scripts from root and scripts/ into client/project directories:
- clients/dataforth/scripts/ (110 files: AD2, sync, SSH, DB, DOS scripts)
- clients/bg-builders/scripts/ (14 files: Lesley mgmt, Exchange, termination)
- clients/internal-infrastructure/scripts/ (10 files: GDAP, Gitea, backups)
- projects/msp-tools/scripts/ (9 files: CIPP, MSP onboarding, Datto)
- projects/gururmm-agent/scripts/ (3 files: API test, JWT, record counts)
- clients/glaztech/scripts/ (1 file: CentraStage removal)

Also reorganized:
- VPN scripts → infrastructure/vpn-configs/
- Retrieved API/JS files → api/
- Forum posts → projects/community-forum/forum-posts/
- SSH docs → clients/internal-infrastructure/docs/
- NWTOC/CTONW docs → projects/wrightstown-smarthome/docs/
- ACG website files → projects/internal/acg-website-2025/
- Dataforth docs → clients/dataforth/docs/
- schema-retrieved.sql → docs/database/

Deleted 24 tmp_*.ps1 one-off debug scripts (preserved in git history).
Root reduced from 220+ files to 62 items (docs + directories only).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:15:07 -07:00

146 lines
4.0 KiB
Python

#!/usr/bin/env python3
"""
GuruRMM API Access Test Script
Tests the newly created admin user credentials and verifies API access.
"""
import requests
import json
from datetime import datetime
# Configuration
API_BASE_URL = "http://172.16.3.30:3001"
EMAIL = "claude-api@azcomputerguru.com"
PASSWORD = "ClaudeAPI2026!@#"
def print_header(title):
"""Print a formatted header."""
print("\n" + "=" * 60)
print(f" {title}")
print("=" * 60 + "\n")
def print_success(message):
"""Print success message."""
print(f"[OK] {message}")
def print_error(message):
"""Print error message."""
print(f"[ERROR] {message}")
def test_login():
"""Test login and retrieve JWT token."""
print_header("Test 1: Login and Authentication")
try:
response = requests.post(
f"{API_BASE_URL}/api/auth/login",
json={"email": EMAIL, "password": PASSWORD},
timeout=10
)
if response.status_code != 200:
print_error(f"Login failed with status {response.status_code}")
print(f"Response: {response.text}")
return None
data = response.json()
token = data.get("token")
user = data.get("user")
if not token:
print_error("No token in response")
return None
print_success("Login successful")
print(f" User ID: {user.get('id')}")
print(f" Email: {user.get('email')}")
print(f" Name: {user.get('name')}")
print(f" Role: {user.get('role')}")
print(f" Token: {token[:50]}...")
return token
except requests.exceptions.RequestException as e:
print_error(f"Request failed: {e}")
return None
def test_authenticated_request(token, endpoint, name):
"""Test an authenticated API request."""
print_header(f"Test: {name}")
try:
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(
f"{API_BASE_URL}{endpoint}",
headers=headers,
timeout=10
)
if response.status_code != 200:
print_error(f"Request failed with status {response.status_code}")
print(f"Response: {response.text}")
return False
data = response.json()
count = len(data) if isinstance(data, list) else 1
print_success(f"Retrieved {count} record(s)")
# Print first record as sample
if isinstance(data, list) and data:
print("\nSample record:")
print(json.dumps(data[0], indent=2))
elif isinstance(data, dict):
print("\nResponse:")
print(json.dumps(data, indent=2)[:500] + "...")
return True
except requests.exceptions.RequestException as e:
print_error(f"Request failed: {e}")
return False
def main():
"""Main test runner."""
print_header("GuruRMM API Access Test")
print(f"Date: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print(f"API Base URL: {API_BASE_URL}")
print(f"Test User: {EMAIL}")
# Test 1: Login
token = test_login()
if not token:
print_error("Login test failed. Aborting remaining tests.")
return 1
# Test 2: Sites endpoint
if not test_authenticated_request(token, "/api/sites", "List Sites"):
print_error("Sites test failed")
return 1
# Test 3: Agents endpoint
if not test_authenticated_request(token, "/api/agents", "List Agents"):
print_error("Agents test failed")
return 1
# Test 4: Clients endpoint
if not test_authenticated_request(token, "/api/clients", "List Clients"):
print_error("Clients test failed")
return 1
# Success summary
print_header("All Tests Passed!")
print("API Credentials:")
print(f" Email: {EMAIL}")
print(f" Password: {PASSWORD}")
print(f" Base URL: {API_BASE_URL}")
print(f" Production URL: https://rmm-api.azcomputerguru.com")
print("\nStatus: READY FOR INTEGRATION")
print()
return 0
if __name__ == "__main__":
exit(main())