Files
michaelschiemer/tests/debug/test-vapid-key-generator.php
Michael Schiemer fc3d7e6357 feat(Production): Complete production deployment infrastructure
- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
2025-10-25 19:18:37 +02:00

87 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Framework\WebPush\Services\VapidKeyGenerator;
echo "=== VAPID Key Generator Test ===\n\n";
// Test 1: OpenSSL Extension Check
echo "Test 1: OpenSSL Extension Check\n";
if (! extension_loaded('openssl')) {
echo " ❌ OpenSSL extension not loaded\n";
exit(1);
}
echo " ✅ OpenSSL extension loaded\n\n";
// Test 2: Generate VAPID Key Pair
echo "Test 2: Generate VAPID Key Pair\n";
try {
$generator = new VapidKeyGenerator();
$keyPair = $generator->generate();
echo " ✅ Key pair generated successfully\n";
echo " Public Key Length: " . strlen($keyPair->publicKey) . " chars\n";
echo " Private Key Length: " . strlen($keyPair->privateKey) . " chars\n\n";
} catch (\Exception $e) {
echo " ❌ Failed: {$e->getMessage()}\n";
exit(1);
}
// Test 3: Validate Key Format
echo "Test 3: Validate Key Format\n";
$publicKeyValid = preg_match('/^[A-Za-z0-9_-]+$/', $keyPair->publicKey);
$privateKeyValid = preg_match('/^[A-Za-z0-9_-]+$/', $keyPair->privateKey);
if ($publicKeyValid && $privateKeyValid) {
echo " ✅ Keys are valid Base64 URL-safe encoded\n\n";
} else {
echo " ❌ Invalid key format\n";
exit(1);
}
// Test 4: Display Keys in Different Formats
echo "Test 4: Display Keys\n\n";
echo "--- .env Format ---\n";
echo $keyPair->toEnvFormat();
echo "\n";
echo "--- JSON Format ---\n";
echo $keyPair->toJson();
echo "\n\n";
echo "--- Table Format ---\n";
echo "Public Key: {$keyPair->publicKey}\n";
echo "Private Key: {$keyPair->privateKey}\n\n";
// Test 5: Generate Multiple Key Pairs (ensure uniqueness)
echo "Test 5: Generate Multiple Key Pairs (Uniqueness Check)\n";
$keyPair2 = $generator->generate();
$keyPair3 = $generator->generate();
if ($keyPair->publicKey !== $keyPair2->publicKey &&
$keyPair2->publicKey !== $keyPair3->publicKey &&
$keyPair->publicKey !== $keyPair3->publicKey) {
echo " ✅ Each generated key pair is unique\n\n";
} else {
echo " ❌ Generated keys are not unique\n";
exit(1);
}
// Test 6: toArray() Method
echo "Test 6: toArray() Method\n";
$array = $keyPair->toArray();
if (isset($array['public_key']) && isset($array['private_key'])) {
echo " ✅ toArray() returns correct structure\n";
echo " Keys: " . implode(', ', array_keys($array)) . "\n\n";
} else {
echo " ❌ toArray() failed\n";
exit(1);
}
echo "=== All Tests Passed! ✅ ===\n";