Files
global-autoresponder/tests/backend_runtime_config_test.php
T
2026-06-02 19:55:07 +02:00

22 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
require_once PLUGIN_ROOT . '/exec/lib/Settings.php';
require_once PLUGIN_ROOT . '/exec/lib/BackendRuntimeConfig.php';
test('backend runtime sync invokes backend script when setting changes', function (): void {
$settingsPath = TEST_TMP . '/backend-runtime.conf';
test_write($settingsPath, "GLOBAL_AUTORESPONDER_BACKEND=exim\n");
$settings = Settings::load($settingsPath);
$script = TEST_TMP . '/backend.sh';
test_write($script, "#!/bin/sh\necho \"$1\" >> " . escapeshellarg(TEST_TMP . '/called.log') . "\nmkdir -p " . escapeshellarg(TEST_TMP . '/config') . "\nprintf '{\"active_backend\":\"%s\"}\\n' \"$1\" > " . escapeshellarg(TEST_TMP . '/config/backend-state.json') . "\n");
chmod($script, 0700);
BackendRuntimeConfig::sync($settings, $script, TEST_TMP . '/config/backend-state.json');
assert_same("exim\n", file_get_contents(TEST_TMP . '/called.log'));
BackendRuntimeConfig::sync($settings, $script, TEST_TMP . '/config/backend-state.json');
assert_same("exim\n", file_get_contents(TEST_TMP . '/called.log'), 'Script should not run again when backend is already active');
});