Initial commit
Dieser Commit ist enthalten in:
125
v2_testing/test_audit_json.py
Normale Datei
125
v2_testing/test_audit_json.py
Normale Datei
@ -0,0 +1,125 @@
|
||||
#!/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()
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren