#!/usr/bin/env python3
"""Connector integration test script."""
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()
# ========== Webhook tests ==========
print('=== POST /api/connectors/webhooks/angi ===')
r = s.post(f'{BASE}/api/connectors/webhooks/angi',
json={'lead_id': 'test123', 'data': {'name': 'Test'}},
headers={'Content-Type': 'application/json'})
print(f' Status: {r.status_code}')
print(f' Body: {r.text[:300]}')
print()
print('=== POST /api/connectors/webhooks/zapier ===')
r = s.post(f'{BASE}/api/connectors/webhooks/zapier',
json={'zap_id': 'test', 'data': {'field': 'value'}},
headers={'Content-Type': 'application/json'})
print(f' Status: {r.status_code}')
print(f' Body: {r.text[:300]}')
print()
print('=== POST /api/connectors/webhooks (generic) ===')
r = s.post(f'{BASE}/api/connectors/webhooks/google_ads',
json={'test': True},
headers={'Content-Type': 'application/json'})
print(f' Status: {r.status_code}')
print(f' Body: {r.text[:300]}')
print()
# ========== Connector creation tests ==========
print('=== POST /api/connectors (create various) ===')
payload = {
"service": "servicetitan",
"config": {"client_id": "test_id", "client_secret": "test_secret"},
"name": "Test ServiceTitan"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' servicetitan create: [{r.status_code}] {json.dumps(r.json())[:200]}')
print()
payload = {
"service": "facebook_ads",
"config": {"access_token": "EAABtest123"},
"name": "Test FB Ads"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' facebook_ads create: [{r.status_code}] {json.dumps(r.json())[:200]}')
print()
payload = {
"service": "jobnimbus",
"config": {"api_key": "test_api_key"},
"name": "Test JobNimbus"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' jobnimbus create: [{r.status_code}] {json.dumps(r.json())[:200]}')
print()
payload = {
"service": "generic_rest",
"config": {"base_url": "https://api.example.com", "auth_type": "bearer", "api_key": "test"},
"name": "Test Generic REST"
}
r = s.post(f'{BASE}/api/connectors', json=payload)
print(f' generic_rest create: [{r.status_code}] {json.dumps(r.json())[:200]}')
print()
# ========== List created connectors ==========
print('=== GET /api/connectors (list) ===')
r = s.get(f'{BASE}/api/connectors')
print(f' Status: {r.status_code}')
data = r.json()
items = data.get('connectors', []) if isinstance(data, dict) else data
print(f' Count: {len(items)}')
for c in items:
cid = c.get('id') or c.get('connector_id', '?')
print(f' id={cid[:12] if isinstance(cid, str) else cid} svc={c.get("service","?"):20s} name={c.get("name","?"):20s} status={c.get("status","?")}')
print()
# ========== Status & sync on created connectors ==========
if items:
cid = items[0].get('id') or items[0].get('connector_id')
print(f'=== Testing status/sync on connector {cid} ===')
r = s.get(f'{BASE}/api/connectors/{cid}/status')
print(f' Status endpoint: [{r.status_code}] {r.text[:250]}')
r = s.post(f'{BASE}/api/connectors/{cid}/sync')
print(f' Sync endpoint: [{r.status_code}] {r.text[:250]}')
r = s.post(f'{BASE}/api/connectors/{cid}/refresh')
print(f' Refresh endpoint: [{r.status_code}] {r.text[:250]}')
# ========== Error handling: invalid connector ID ==========
print()
print('=== Error handling: invalid connector ID ===')
r = s.get(f'{BASE}/api/connectors/nonexistent-id/status')
print(f' Status (bad ID): [{r.status_code}] {r.text[:200]}')
r = s.post(f'{BASE}/api/connectors/nonexistent-id/sync')
print(f' Sync (bad ID): [{r.status_code}] {r.text[:200]}')
r = s.post(f'{BASE}/api/connectors/nonexistent-id/refresh')
print(f' Refresh (bad ID): [{r.status_code}] {r.text[:200]}')
# ========== Error handling: unauthenticated requests ==========
print()
print('=== Error handling: unauthenticated requests ===')
s2 = http_req.Session()
r = s2.get(f'{BASE}/api/connectors')
print(f' GET /api/connectors (no auth): [{r.status_code}]')
r = s2.post(f'{BASE}/api/connectors', json={'service': 'test'})
print(f' POST /api/connectors (no auth): [{r.status_code}]')
print()
print('ALL TESTS COMPLETE')