feat: complete jobcard client management foundation

This commit is contained in:
Marco0300
2026-09-01 20:43:24 +02:00
parent 168c15c6ae
commit de2bf277c4
34 changed files with 2072 additions and 74 deletions
+43
View File
@@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
require_once __DIR__ . '/../bin/healthcheck.php';
function deployment_test_assert(bool $condition, string $message): void
{
if (!$condition) {
throw new RuntimeException($message);
}
}
$checks = 0;
$extensions = deployment_check_extensions(
['present_ext', 'missing_ext'],
static fn(string $extension): bool => $extension === 'present_ext',
);
deployment_test_assert($extensions === ['present_ext' => true, 'missing_ext' => false], 'Extension checks must preserve names and availability.');
$checks++;
$environment = deployment_check_environment(
['DB_HOST', 'DB_PASSWORD', 'EMPTY_VALUE'],
static fn(string $name): ?string => ['DB_HOST' => 'localhost', 'DB_PASSWORD' => 'secret', 'EMPTY_VALUE' => ' '][$name] ?? null,
);
deployment_test_assert($environment === ['DB_HOST' => true, 'DB_PASSWORD' => true, 'EMPTY_VALUE' => false], 'Environment checks must only report presence, never values.');
$checks++;
$directories = deployment_check_directories(
['/srv/jobcard/runtime', '/srv/jobcard/uploads'],
static fn(string $directory): bool => $directory === '/srv/jobcard/runtime',
);
deployment_test_assert($directories === ['/srv/jobcard/runtime' => true, '/srv/jobcard/uploads' => false], 'Directory checks must report writability without changing directories.');
$checks++;
$report = deployment_format_check_report([
'DB_PASSWORD' => true,
'DB_HOST' => false,
]);
deployment_test_assert($report === ['DB_PASSWORD' => 'OK', 'DB_HOST' => 'FAIL'], 'Reports must contain statuses only.');
$checks++;
printf("Deployment checks tests: %d passed\n", $checks);