complete project restructure
This commit is contained in:
1 parent
a560273c3f
commit
a51c19ea53
11 files changed
+995
-1026
No files matched your search
@@ -0,0 +1,102 @@
|
||||
"""
|
||||
Test script for webhook endpoint
|
||||
Sends the Square inventory.count.updated webhook payload
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import json
|
||||
import ssl
|
||||
import sys
|
||||
|
||||
|
||||
async def test_webhook(verify_ssl=True):
|
||||
url = "https://studspider.sh:8443/hook"
|
||||
|
||||
# Your Square webhook payload
|
||||
payload = {
|
||||
"merchant_id": "6SSW7HV8K2ST5",
|
||||
"type": "inventory.count.updated",
|
||||
"event_id": "df5f3813-a913-45a1-94e9-fdc3f7d5e3b6",
|
||||
"created_at": "2019-10-29T18:38:45.455006797Z",
|
||||
"data": {
|
||||
"type": "inventory_counts",
|
||||
"id": "84e4ac73-d605-4dbd-a9e5-ffff794ddb9d",
|
||||
"object": {
|
||||
"inventory_counts": [
|
||||
{
|
||||
"calculated_at": "2019-10-29T18:38:45.10296Z",
|
||||
"catalog_object_id": "FGQ5JJWT2PYTHF35CKZ2DSKP",
|
||||
"catalog_object_type": "ITEM_VARIATION",
|
||||
"location_id": "YYQR03DGCTXA4",
|
||||
"quantity": "10",
|
||||
"state": "IN_STOCK",
|
||||
}
|
||||
]
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
print("Sending webhook test payload...")
|
||||
print(f"URL: {url}")
|
||||
print(
|
||||
f"SSL Verification: {'Enabled' if verify_ssl else 'Disabled (accepting self-signed certs)'}"
|
||||
)
|
||||
print(json.dumps(payload, indent=2))
|
||||
print("\n" + "=" * 60 + "\n")
|
||||
|
||||
# Create SSL context that allows self-signed certificates if verify_ssl is False
|
||||
ssl_context = None
|
||||
if not verify_ssl:
|
||||
ssl_context = ssl.create_default_context()
|
||||
ssl_context.check_hostname = False
|
||||
ssl_context.verify_mode = ssl.CERT_NONE
|
||||
|
||||
try:
|
||||
connector = aiohttp.TCPConnector(ssl=ssl_context)
|
||||
async with aiohttp.ClientSession(connector=connector) as session:
|
||||
async with session.post(url, json=payload) as resp:
|
||||
print(f"Status: {resp.status}")
|
||||
print(f"Response headers: {dict(resp.headers)}")
|
||||
|
||||
response_text = await resp.text()
|
||||
print(f"\nResponse body:")
|
||||
|
||||
try:
|
||||
response_json = json.loads(response_text)
|
||||
print(json.dumps(response_json, indent=2))
|
||||
except json.JSONDecodeError:
|
||||
print(response_text)
|
||||
|
||||
except aiohttp.ClientConnectorError as e:
|
||||
print(f"Connection error: {e}")
|
||||
print("\nTroubleshooting:")
|
||||
print("1. Make sure the server is running")
|
||||
print("2. Check if the hostname and port are correct")
|
||||
print("3. For self-signed certificates, the script now accepts them by default")
|
||||
print("\nServer start command:")
|
||||
print(
|
||||
" python src/test_server.py --ssl-cert cert.pem --ssl-key key.pem --hook-port 8443 --hook-ssl-only"
|
||||
)
|
||||
except aiohttp.ServerTimeoutError as e:
|
||||
print(f"Timeout error: {e}")
|
||||
print("The server took too long to respond")
|
||||
except Exception as e:
|
||||
print(f"Error: {type(e).__name__}: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Check command line arguments
|
||||
verify_ssl = True
|
||||
if len(sys.argv) > 1 and sys.argv[1] in ["--no-verify", "--insecure", "-k"]:
|
||||
verify_ssl = False
|
||||
print("⚠️ SSL verification disabled - accepting self-signed certificates\n")
|
||||
elif len(sys.argv) > 1:
|
||||
print("Usage: python src/test_webhook.py [--no-verify]")
|
||||
print(
|
||||
" --no-verify: Disable SSL certificate verification (for self-signed certs)"
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
# Default to no verification since we're likely using self-signed certs
|
||||
asyncio.run(test_webhook(verify_ssl=False))
|
||||
Reference in new issue
Block a user