Upload via GUI (335 Dateien)
This commit is contained in:
@@ -272,6 +272,38 @@ $c2 = plugin_catalog_cached();
|
||||
$check($c1['ok'] && $c2['ok'] && $fetches === 1, 'Katalog wird eine Stunde zwischengespeichert (ein Abruf für zwei Aufrufe)');
|
||||
plugin_catalog_cached(true);
|
||||
$check($fetches === 2, 'Aktualisieren erzwingt einen neuen Abruf');
|
||||
// Zwischenspeicher ist kurz (5 Minuten), die Plugin-Seite verlangt höchstens eine Minute Alter, Serverausfall zeigt den letzten Stand
|
||||
$setAge = function (int $seconds): void {
|
||||
$c = json_decode((string) get_setting('plugin_catalog_cache', ''), true);
|
||||
$c['at'] = time() - $seconds;
|
||||
set_setting('plugin_catalog_cache', json_encode($c));
|
||||
};
|
||||
$fetches0 = $fetches;
|
||||
$setAge(200);
|
||||
plugin_catalog_cached();
|
||||
$check($fetches === $fetches0, 'Katalog ist nach 3 Minuten noch frisch genug (kein Abruf)');
|
||||
plugin_catalog_cached(false, 60);
|
||||
$check($fetches === $fetches0 + 1, 'die Plugin-Seite verlangt höchstens eine Minute Alter: neuer Abruf beim Öffnen');
|
||||
$setAge(400);
|
||||
plugin_catalog_cached();
|
||||
$check($fetches === $fetches0 + 2, 'nach über 5 Minuten wird der Katalog von selbst neu geladen (kein Klick auf „Katalog aktualisieren“ nötig)');
|
||||
$setAge(400);
|
||||
$GLOBALS['deskhub_http_get'] = function (string $url, int $max) use (&$fetches): array { $fetches++; return [0, null, 'Verbindung fehlgeschlagen']; };
|
||||
$stale = plugin_catalog_cached();
|
||||
$check($stale['ok'] && !empty($stale['stale']) && count($stale['plugins']) === 2 && $fetches === $fetches0 + 3, 'Server nicht erreichbar: die Seite zeigt den letzten Stand (stale)');
|
||||
plugin_catalog_cached();
|
||||
plugin_catalog_cached(false, 60);
|
||||
$check($fetches === $fetches0 + 3, 'danach wird zwei Minuten lang nicht erneut gefragt (die Seite wartet nicht bei jedem Aufruf)');
|
||||
$btn = plugin_catalog_cached(true);
|
||||
$check(!$btn['ok'] && $fetches === $fetches0 + 4, 'der Knopf „Katalog aktualisieren“ fragt trotzdem und meldet den Fehler');
|
||||
$GLOBALS['deskhub_http_get'] = function (string $url, int $max) use (&$offServed, $offPkg, &$fetches): array {
|
||||
if (str_contains($url, 'catalog.php')) { $fetches++; return [200, json_encode($offServed), null]; }
|
||||
return [200, file_get_contents($offPkg), null];
|
||||
};
|
||||
$setAge(400);
|
||||
set_setting('plugin_catalog_fail_at', '0');
|
||||
$ok = plugin_catalog_cached();
|
||||
$check($ok['ok'] && empty($ok['stale']), 'nach der Erholung des Servers wieder ein frischer Katalog');
|
||||
$r = plugin_catalog_install($pdo, 'offiziell');
|
||||
$check($r['ok'] && $r['signed'], 'Installation aus dem offiziellen Katalog gelingt: ' . json_encode($r));
|
||||
plugin_uninstall($pdo, 'offiziell');
|
||||
|
||||
Reference in New Issue
Block a user