heroagent/scripts/test_auto_cert_webdav.sh
2025-04-23 04:18:28 +02:00

109 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# Test script for WebDAV server with auto-certificate generation
# This script demonstrates how the WebDAV server automatically generates certificates when needed
# Create test directory for WebDAV files
TEST_DIR="/tmp/heroagent_test"
CERT_DIR="/tmp/certificates"
# Clean up any existing test directories
if [ -d "$TEST_DIR" ]; then
echo "Removing existing test directory to start fresh..."
rm -rf "$TEST_DIR"
fi
# Clean up any existing certificates
if [ -d "$CERT_DIR" ]; then
echo "Removing existing certificates to test auto-generation..."
rm -rf "$CERT_DIR"
fi
# Create test directory and add a test file
mkdir -p "$TEST_DIR"
echo "Test content" > "$TEST_DIR/test.txt"
# Function to display section headers
section() {
echo ""
echo "====================================="
echo " $1"
echo "====================================="
}
# Function to run a test case
run_test() {
local name="$1"
local cmd="$2"
local connect_cmd="$3"
section "TEST: $name"
echo "Running command: $cmd"
# Run the WebDAV server in the background
eval "$cmd" &
SERVER_PID=$!
# Wait for server to start
sleep 2
# Display connection command
if [ -n "$connect_cmd" ]; then
echo ""
echo "To connect to this server, run:"
echo "$connect_cmd"
echo ""
echo "Press Enter to continue to the next test..."
read
else
echo "Server is running. Press Enter to continue to the next test..."
read
fi
# Kill the server
kill $SERVER_PID
wait $SERVER_PID 2>/dev/null
echo "Server stopped."
}
# Test 1: WebDAV with HTTPS and auto-generated certificates
run_test "WebDAV Server with Auto-Generated Certificates" \
"./bin/webdavserver -fs $TEST_DIR -debug -https" \
"./scripts/open_webdav_osx.sh -s"
# Test 2: Check if certificates were generated
section "Checking Generated Certificates"
if [ -f "$CERT_DIR/webdav.crt" ] && [ -f "$CERT_DIR/webdav.key" ]; then
echo "✅ Certificates were successfully auto-generated:"
echo " - $CERT_DIR/webdav.crt"
echo " - $CERT_DIR/webdav.key"
# Display certificate information
echo ""
echo "Certificate information:"
openssl x509 -in "$CERT_DIR/webdav.crt" -text -noout | grep -E "Subject:|Issuer:|Not Before:|Not After :|DNS:"
else
echo "❌ Certificates were not generated properly"
fi
# Test 3: WebDAV with HTTPS using the generated certificates
run_test "WebDAV Server with Previously Generated Certificates" \
"./bin/webdavserver -fs $TEST_DIR -debug -https -cert $CERT_DIR/webdav.crt -key $CERT_DIR/webdav.key" \
"./scripts/open_webdav_osx.sh -s"
# Test 4: WebDAV with HTTPS, authentication and custom certificate settings
run_test "WebDAV Server with Custom Certificate Settings" \
"./bin/webdavserver -fs $TEST_DIR -debug -https -auth -username testuser -password testpass -cert-validity 30 -cert-org \"Test Organization\"" \
"./scripts/open_webdav_osx.sh -s -u testuser -pw testpass"
section "All tests completed"
echo "The WebDAV server has been tested with auto-certificate generation:"
echo "- Basic auto-generation"
echo "- Reusing generated certificates"
echo "- Custom certificate settings"
echo ""
echo "For production use, consider:"
echo "1. Using properly signed certificates instead of self-signed ones"
echo "2. Setting a longer validity period (default is 365 days)"
echo "3. Always enabling authentication with strong credentials"