introducing junction table extension
This commit is contained in:
89
custom/scripts/junctiontabletests/test_api_params.py
Normal file
89
custom/scripts/junctiontabletests/test_api_params.py
Normal file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Teste verschiedene Query-Parameter um additionalColumns aus API zu bekommen
|
||||
"""
|
||||
|
||||
import requests
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
|
||||
BASE_URL = "https://crm.bitbylaw.com"
|
||||
API_KEY = "e53def10eea27b92a6cd00f40a3e09a4"
|
||||
HEADERS = {
|
||||
"X-Api-Key": API_KEY,
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
doc_id = None
|
||||
collection_id = None
|
||||
test_sync_id = f"SYNC-{datetime.now().strftime('%Y%m%d-%H%M%S')}"
|
||||
|
||||
try:
|
||||
# Setup
|
||||
print("Setup...")
|
||||
doc = requests.post(f"{BASE_URL}/api/v1/CDokumente", headers=HEADERS, json={"name": "Test Doc"}).json()
|
||||
doc_id = doc['id']
|
||||
|
||||
collection = requests.post(f"{BASE_URL}/api/v1/CAICollections", headers=HEADERS, json={"name": "Test Col"}).json()
|
||||
collection_id = collection['id']
|
||||
|
||||
# Link und setze syncId in DB
|
||||
requests.post(f"{BASE_URL}/api/v1/CDokumente/{doc_id}/cAICollections", headers=HEADERS, json={"id": collection_id})
|
||||
subprocess.run([
|
||||
"docker", "exec", "espocrm-db", "mariadb",
|
||||
"-u", "espocrm", "-pdatabase_password", "espocrm",
|
||||
"-e", f"UPDATE c_a_i_collection_c_dokumente SET sync_id='{test_sync_id}' WHERE c_dokumente_id='{doc_id}';"
|
||||
], capture_output=True)
|
||||
|
||||
print(f"Doc: {doc_id}, Col: {collection_id}, syncId: {test_sync_id}\n")
|
||||
|
||||
# Teste verschiedene Query-Parameter
|
||||
params_to_test = [
|
||||
{},
|
||||
{"select": "id,name,syncId"},
|
||||
{"select": "id,name,sync_id"},
|
||||
{"additionalColumns": "true"},
|
||||
{"columns": "true"},
|
||||
{"includeColumns": "true"},
|
||||
{"expand": "columns"},
|
||||
{"maxSize": 10, "select": "syncId"},
|
||||
{"loadAdditionalFields": "true"},
|
||||
]
|
||||
|
||||
print("="*80)
|
||||
print("Teste Query-Parameter:")
|
||||
print("="*80 + "\n")
|
||||
|
||||
for i, params in enumerate(params_to_test, 1):
|
||||
param_str = ", ".join([f"{k}={v}" for k, v in params.items()]) if params else "keine"
|
||||
print(f"{i}. Parameter: {param_str}")
|
||||
|
||||
response = requests.get(
|
||||
f"{BASE_URL}/api/v1/CDokumente/{doc_id}/cAICollections",
|
||||
headers=HEADERS,
|
||||
params=params
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
if 'list' in data and len(data['list']) > 0:
|
||||
first = data['list'][0]
|
||||
if 'syncId' in first or 'sync_id' in first:
|
||||
print(f" ✅ additionalColumn gefunden!")
|
||||
print(f" syncId: {first.get('syncId', first.get('sync_id'))}")
|
||||
else:
|
||||
print(f" ❌ Keine additionalColumn (Felder: {len(first)})")
|
||||
else:
|
||||
print(f" ⚠️ Leere Liste")
|
||||
else:
|
||||
print(f" ❌ Status: {response.status_code}")
|
||||
print()
|
||||
|
||||
finally:
|
||||
print("Cleanup...")
|
||||
if doc_id:
|
||||
requests.delete(f"{BASE_URL}/api/v1/CDokumente/{doc_id}", headers=HEADERS)
|
||||
if collection_id:
|
||||
requests.delete(f"{BASE_URL}/api/v1/CAICollections/{collection_id}", headers=HEADERS)
|
||||
|
||||
print("="*80)
|
||||
Reference in New Issue
Block a user