Files
v2-Docker/v2_testing/test_audit_json.py
Claude Project Manager 0d7d888502 Initial commit
2025-07-05 17:51:16 +02:00

125 Zeilen
4.6 KiB
Python

#!/usr/bin/env python3
import requests
import urllib3
import subprocess
import json
# Disable SSL warnings
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
base_url = "https://localhost:443"
admin_user = {"username": "rac00n", "password": "1248163264"}
def login(session):
"""Login to admin panel"""
login_data = {
"username": admin_user["username"],
"password": admin_user["password"]
}
response = session.post(f"{base_url}/login", data=login_data, verify=False, allow_redirects=False)
return response.status_code == 302
def test_json_logging():
"""Test JSON value logging in audit log"""
session = requests.Session()
login(session)
print("Testing JSON Value Storage in Audit Log")
print("=" * 50)
# 1. Create a license (should log new_values as JSON)
print("\n1. Creating license to test JSON logging...")
license_data = {
"customer_name": "JSON Test GmbH",
"email": "json@test.de",
"license_key": "JSON-TEST-KEY",
"license_type": "full",
"valid_from": "2025-01-01",
"valid_until": "2025-12-31"
}
response = session.post(f"{base_url}/create", data=license_data, verify=False, allow_redirects=False)
print("✓ License created")
# 2. Get the license ID
result = subprocess.run([
"docker", "exec", "db", "psql", "-U", "adminuser", "-d", "meinedatenbank", "-t",
"-c", "SELECT id FROM licenses WHERE license_key = 'JSON-TEST-KEY';"
], capture_output=True, text=True)
license_id = result.stdout.strip()
if license_id:
# 3. Edit the license (should log both old_values and new_values)
print("\n2. Editing license to test old/new JSON values...")
# First get the edit page to ensure we have the right form
response = session.get(f"{base_url}/license/edit/{license_id}", verify=False)
# Now update
updated_data = {
"license_key": "JSON-TEST-UPDATED",
"license_type": "test",
"valid_from": "2025-01-01",
"valid_until": "2025-06-30",
"is_active": "on"
}
response = session.post(f"{base_url}/license/edit/{license_id}",
data=updated_data,
verify=False,
allow_redirects=False)
print("✓ License updated")
# 4. Check the audit log for JSON values
print("\n3. Checking audit log for JSON values...")
result = subprocess.run([
"docker", "exec", "db", "psql", "-U", "adminuser", "-d", "meinedatenbank",
"-c", """SELECT action, entity_type,
CASE WHEN old_values IS NULL THEN 'NULL'
ELSE jsonb_pretty(old_values) END as old_vals,
CASE WHEN new_values IS NULL THEN 'NULL'
ELSE jsonb_pretty(new_values) END as new_vals
FROM audit_log
WHERE entity_type IN ('license', 'customer')
AND (old_values IS NOT NULL OR new_values IS NOT NULL)
ORDER BY timestamp DESC
LIMIT 5;"""
], capture_output=True, text=True)
print(result.stdout)
# 5. Test specific JSON queries
print("\n4. Testing JSON queries...")
# Query for specific license key in new_values
result = subprocess.run([
"docker", "exec", "db", "psql", "-U", "adminuser", "-d", "meinedatenbank", "-t",
"-c", """SELECT COUNT(*)
FROM audit_log
WHERE new_values->>'license_key' LIKE 'JSON%';"""
], capture_output=True, text=True)
count = int(result.stdout.strip())
if count > 0:
print(f"✓ Found {count} entries with JSON license keys")
# Query for updates (where both old and new values exist)
result = subprocess.run([
"docker", "exec", "db", "psql", "-U", "adminuser", "-d", "meinedatenbank", "-t",
"-c", """SELECT COUNT(*)
FROM audit_log
WHERE old_values IS NOT NULL
AND new_values IS NOT NULL;"""
], capture_output=True, text=True)
update_count = int(result.stdout.strip())
print(f"✓ Found {update_count} UPDATE entries with both old and new values")
# 6. Clean up test data
print("\n5. Cleaning up test data...")
subprocess.run([
"docker", "exec", "db", "psql", "-U", "adminuser", "-d", "meinedatenbank",
"-c", "DELETE FROM licenses WHERE license_key LIKE 'JSON%';"
], capture_output=True)
print("✓ Test data cleaned up")
# Run the test
test_json_logging()