#!/usr/bin/env python3
"""Clean up old test connectors and re-test ServiceTitan."""
import requests as http_req
import json
BASE = 'http://127.0.0.1:5003'
def login():
s = http_req.Session()
s.post(f'{BASE}/api/auth/login',
json={'email': 'grepples15@gmail.com', 'password': 'temp_pw_2026'})
return s
s = login()
# Delete existing test connectors
print('=== Deleting old connectors ===')
r = s.get(f'{BASE}/api/connectors')
data = r.json()
items = data.get('connectors', []) if isinstance(data, dict) else data
for c in items:
cid = c.get('id') or c.get('connector_id')
if cid:
r = s.delete(f'{BASE}/api/connectors/{cid}')
print(f' DELETE {cid[:16]} ({c.get("service")}): {r.status_code} {r.text[:100]}')
print()
# Create ServiceTitan connector
print('=== Creating ServiceTitan connector ===')
payload = {
"service": "servicetitan",
"config": {
"client_id": "test_client_id",
"client_secret": "test_client_secret",
"access_token": "test_access_token",
},
"name": "Test ServiceTitan"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' Status: {r.status_code}')
result = r.json()
print(f' Response: {json.dumps(result, indent=2)[:400]}')
connector_id = result.get('connector', {}).get('id')
print()
if connector_id:
# Test connect
print(f'=== Testing ServiceTitan connect ===')
r = s.post(f'{BASE}/api/connectors/{connector_id}/connect')
print(f' Connect: [{r.status_code}] {r.text[:300]}')
print()
# Test status
print(f'=== Testing ServiceTitan status ===')
r = s.get(f'{BASE}/api/connectors/{connector_id}/status')
print(f' Status: [{r.status_code}] {json.dumps(r.json(), indent=2)[:400]}')
print()
# Test sync
print(f'=== Testing ServiceTitan sync ===')
r = s.post(f'{BASE}/api/connectors/{connector_id}/sync')
print(f' Sync: [{r.status_code}] {json.dumps(r.json(), indent=2)[:400]}')
print()
# Test disconnect
print(f'=== Testing ServiceTitan disconnect ===')
r = s.post(f'{BASE}/api/connectors/{connector_id}/disconnect')
print(f' Disconnect: [{r.status_code}] {r.text[:300]}')
print()
# Test delete
print(f'=== Testing ServiceTitan delete ===')
r = s.delete(f'{BASE}/api/connectors/{connector_id}')
print(f' Delete: [{r.status_code}] {r.text[:200]}')
# Test Facebook Ads creation
print()
print('=== Creating Facebook Ads connector ===')
payload = {
"service": "facebook_ads",
"config": {
"access_token": "EAABtest_fake_token",
"page_id": "12345",
},
"name": "Test Facebook Ads"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' Status: {r.status_code}')
result = r.json()
print(f' Response: {json.dumps(result, indent=2)[:400]}')
fb_id = result.get('connector', {}).get('id')
print()
if fb_id:
r = s.post(f'{BASE}/api/connectors/{fb_id}/sync')
print(f' Sync: [{r.status_code}] {r.text[:300]}')
r = s.delete(f'{BASE}/api/connectors/{fb_id}')
print(f' Delete: [{r.status_code}] {r.text[:100]}')
# Test JobNimbus creation
print()
print('=== Creating JobNimbus connector ===')
payload = {
"service": "jobnimbus",
"config": {
"api_key": "test_api_key",
"base_url": "https://test.jobnimbus.com/api/v2",
},
"name": "Test JobNimbus"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' Status: {r.status_code}')
result = r.json()
print(f' Response: {json.dumps(result, indent=2)[:400]}')
jn_id = result.get('connector', {}).get('id')
if jn_id:
r = s.delete(f'{BASE}/api/connectors/{jn_id}')
print(f' Delete: [{r.status_code}] {r.text[:100]}')
# Test Angi creation
print()
print('=== Creating Angi connector ===')
payload = {
"service": "angi",
"config": {
"api_key": "test_angi_key",
"webhook_secret": "test_secret",
},
"name": "Test Angi"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' Status: {r.status_code}')
result = r.json()
print(f' Response: {json.dumps(result, indent=2)[:400]}')
angi_id = result.get('connector', {}).get('id')
if angi_id:
# Now test the Angi webhook
print(' Testing Angi webhook...')
r = s.post(f'{BASE}/api/connectors/webhooks/angi',
json={'lead_id': 'test_lead_123', 'data': {'name': 'Test Lead'}},
headers={'Content-Type': 'application/json'})
print(f' Angi webhook: [{r.status_code}] {r.text[:200]}')
r = s.delete(f'{BASE}/api/connectors/{angi_id}')
print(f' Delete: [{r.status_code}] {r.text[:100]}')
# Test Zapier creation
print()
print('=== Creating Zapier connector ===')
payload = {
"service": "zapier",
"config": {
"api_key": "test_zapier_key",
"webhook_url": "https://hooks.zapier.com/test",
},
"name": "Test Zapier"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' Status: {r.status_code}')
result = r.json()
print(f' Response: {json.dumps(result, indent=2)[:400]}')
zap_id = result.get('connector', {}).get('id')
if zap_id:
print(' Testing Zapier webhook...')
r = s.post(f'{BASE}/api/connectors/webhooks/zapier',
json={'zap_id': 'test_zap', 'data': {'field': 'value'}},
headers={'Content-Type': 'application/json'})
print(f' Zapier webhook: [{r.status_code}] {r.text[:200]}')
r = s.delete(f'{BASE}/api/connectors/{zap_id}')
print(f' Delete: [{r.status_code}] {r.text[:100]}')
print()
print('ALL TESTS COMPLETE')