Initial commit
Dieser Commit ist enthalten in:
159
v2_testing/test_timezone.py
Normale Datei
159
v2_testing/test_timezone.py
Normale Datei
@ -0,0 +1,159 @@
|
||||
#!/usr/bin/env python3
|
||||
import requests
|
||||
import urllib3
|
||||
from datetime import datetime
|
||||
from zoneinfo import ZoneInfo
|
||||
import json
|
||||
import time
|
||||
|
||||
# Disable SSL warnings for self-signed certificate
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
||||
# Test configuration
|
||||
# Use external URL for testing
|
||||
base_url = "https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com"
|
||||
# Fallback to localhost if external URL is not accessible
|
||||
fallback_url = "https://localhost:443"
|
||||
admin_user = {"username": "rac00n", "password": "1248163264"}
|
||||
|
||||
def test_timezone_functionality():
|
||||
"""Test if timestamps are in German timezone (Europe/Berlin)"""
|
||||
session = requests.Session()
|
||||
|
||||
print("Testing Timezone Functionality (Europe/Berlin)")
|
||||
print("=" * 50)
|
||||
|
||||
# Test connection to external URL first
|
||||
global base_url
|
||||
try:
|
||||
test_response = session.get(base_url, verify=True, timeout=5)
|
||||
print(f"✓ Using external URL: {base_url}")
|
||||
except:
|
||||
base_url = fallback_url
|
||||
print(f"ℹ Using fallback URL: {base_url}")
|
||||
|
||||
# Get current time in UTC and Berlin
|
||||
utc_now = datetime.now(ZoneInfo("UTC"))
|
||||
berlin_now = datetime.now(ZoneInfo("Europe/Berlin"))
|
||||
|
||||
print(f"Current UTC time: {utc_now.strftime('%Y-%m-%d %H:%M:%S %Z')}")
|
||||
print(f"Current Berlin time: {berlin_now.strftime('%Y-%m-%d %H:%M:%S %Z')}")
|
||||
print(f"Time difference: {(berlin_now.hour - utc_now.hour) % 24} hours")
|
||||
print()
|
||||
|
||||
# Login
|
||||
verify_ssl = base_url != fallback_url # Verify SSL for external URL only
|
||||
response = session.get(f"{base_url}/login", verify=verify_ssl)
|
||||
if response.status_code != 200:
|
||||
print(f"✗ Failed to access login page: {response.status_code}")
|
||||
return
|
||||
|
||||
login_data = {
|
||||
"username": admin_user["username"],
|
||||
"password": admin_user["password"]
|
||||
}
|
||||
|
||||
response = session.post(f"{base_url}/login", data=login_data, verify=verify_ssl, allow_redirects=False)
|
||||
|
||||
if response.status_code != 302:
|
||||
print(f"✗ Login failed: {response.status_code}")
|
||||
return
|
||||
|
||||
print("✓ Login successful")
|
||||
print()
|
||||
|
||||
# Test 1: Create a test license to check created_at timestamp
|
||||
print("Test 1: Creating test license to check timestamps...")
|
||||
|
||||
# First, get a customer ID or create one
|
||||
license_data = {
|
||||
"customer_select": "new",
|
||||
"customer_name": f"Timezone Test Customer {int(time.time())}",
|
||||
"customer_email": f"timezone-test-{int(time.time())}@example.com",
|
||||
"license_key": f"AF-{berlin_now.strftime('%Y%m')}T-TEST-TIME-ZONE",
|
||||
"license_type": "test",
|
||||
"max_sessions": "1",
|
||||
"start_date": berlin_now.strftime("%Y-%m-%d"),
|
||||
"duration": "1",
|
||||
"duration_unit": "days"
|
||||
}
|
||||
|
||||
response = session.post(f"{base_url}/create", data=license_data, verify=verify_ssl)
|
||||
|
||||
if response.status_code == 200:
|
||||
print("✓ Test license created")
|
||||
else:
|
||||
print(f"✗ Failed to create license: {response.status_code}")
|
||||
|
||||
# Test 2: Check audit log for timezone
|
||||
print("\nTest 2: Checking audit log timestamps...")
|
||||
|
||||
response = session.get(f"{base_url}/audit", verify=verify_ssl)
|
||||
if response.status_code == 200:
|
||||
# Extract the most recent audit log entry timestamp from HTML
|
||||
if "CREATE" in response.text and license_data["license_key"] in response.text:
|
||||
print("✓ Audit log entry created")
|
||||
# Check if timestamps in audit log appear to be in German time
|
||||
# This is a simple check - in production you'd parse the HTML properly
|
||||
current_hour = berlin_now.strftime("%H:")
|
||||
if current_hour in response.text:
|
||||
print(f"✓ Audit log shows Berlin time (contains {current_hour})")
|
||||
else:
|
||||
print(f"⚠ Audit log might show UTC time (doesn't contain {current_hour})")
|
||||
else:
|
||||
print(f"✗ Failed to access audit log: {response.status_code}")
|
||||
|
||||
# Test 3: Check backup functionality for filename timezone
|
||||
print("\nTest 3: Testing backup filename timezone...")
|
||||
|
||||
response = session.post(f"{base_url}/backup/create", verify=verify_ssl)
|
||||
if response.status_code == 302: # Redirect after backup
|
||||
print("✓ Backup created")
|
||||
|
||||
# Check backup list
|
||||
response = session.get(f"{base_url}/backups", verify=verify_ssl)
|
||||
if response.status_code == 200:
|
||||
# Check if backup filename contains current Berlin hour
|
||||
berlin_hour = berlin_now.strftime("%H")
|
||||
if f"_{berlin_hour}" in response.text:
|
||||
print(f"✓ Backup filename uses Berlin time (contains hour {berlin_hour})")
|
||||
else:
|
||||
utc_hour = utc_now.strftime("%H")
|
||||
if f"_{utc_hour}" in response.text:
|
||||
print(f"✗ Backup filename might use UTC time (contains hour {utc_hour})")
|
||||
else:
|
||||
print("⚠ Could not determine timezone from backup filename")
|
||||
else:
|
||||
print(f"✗ Failed to create backup: {response.status_code}")
|
||||
|
||||
# Test 4: Check session timestamps
|
||||
print("\nTest 4: Checking session timestamps...")
|
||||
|
||||
response = session.get(f"{base_url}/sessions", verify=verify_ssl)
|
||||
if response.status_code == 200:
|
||||
print("✓ Accessed sessions page")
|
||||
# Active sessions should show current time
|
||||
if "Keine aktiven Sessions" not in response.text:
|
||||
print("✓ Session data available")
|
||||
else:
|
||||
print("ℹ No active sessions to check (this is normal)")
|
||||
else:
|
||||
print(f"✗ Failed to access sessions: {response.status_code}")
|
||||
|
||||
# Test 5: Database timezone check
|
||||
print("\nTest 5: Summary")
|
||||
print("-" * 30)
|
||||
|
||||
time_diff = (berlin_now.hour - utc_now.hour) % 24
|
||||
if time_diff == 1:
|
||||
print("✓ Timezone offset is +1 hour (CET - Central European Time)")
|
||||
elif time_diff == 2:
|
||||
print("✓ Timezone offset is +2 hours (CEST - Central European Summer Time)")
|
||||
else:
|
||||
print(f"⚠ Unexpected timezone offset: {time_diff} hours")
|
||||
|
||||
print("\nNote: All new timestamps should be in Europe/Berlin timezone")
|
||||
print("Existing data might still show UTC until updated")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_timezone_functionality()
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren