Upload via GUI (452 Dateien)
This commit is contained in:
@@ -224,6 +224,38 @@ $check($r['ok'] && $r['signed'] && (int) $pdo->query("SELECT COUNT(*) FROM plugi
|
||||
$again = plugin_catalog_install($pdo, 'katalogplugin');
|
||||
$check(!$again['ok'] && str_contains($again['error'], 'bereits'), 'ein bereits installiertes Katalog-Plugin lässt sich nicht noch einmal installieren');
|
||||
$check(!plugin_catalog_install($pdo, 'gibtesnicht')['ok'], 'Plugin außerhalb des Katalogs kann nicht installiert werden');
|
||||
// Update aus dem Katalog mit einem Klick (ohne das Plugin erneut zu suchen): „Alle aktualisieren“ und das Update eines einzelnen Plugins
|
||||
$check(plugin_catalog_update_all($pdo) === ['updated' => [], 'failed' => []], 'Ohne neuere Version im Katalog gibt es nichts zu aktualisieren');
|
||||
$pkg11 = $makeZip(['plugin.json' => $manifest(['slug' => 'katalogplugin', 'name' => 'Aus dem Katalog', 'version' => '1.1.0', 'permissions' => ['ui.menu']]), 'plugin.php' => "<?php plugin_register_menu('Katalog', 'x');"]);
|
||||
$served11 = $served;
|
||||
$served11['plugins'][0] = array_merge($entry, ['version' => '1.1.0', 'downloadUrl' => 'https://plugins.example.de/dl/katalogplugin-1.1.0.zip', 'sha256' => hash_file('sha256', $pkg11), 'signature' => $sign($pkg11, 'katalogplugin', '1.1.0', $privKey)]);
|
||||
$GLOBALS['deskhub_http_get'] = function (string $url, int $max) use (&$served11, $pkg11): array {
|
||||
if (str_contains($url, 'catalog.php')) return [200, json_encode($served11), null];
|
||||
if (str_contains($url, 'katalogplugin-1.1.0.zip')) return [200, file_get_contents($pkg11), null];
|
||||
return [404, null, 'HTTP 404'];
|
||||
};
|
||||
plugin_catalog_cached(true);
|
||||
$ups = plugin_updates_available($pdo);
|
||||
$check(count($ups) === 1 && $ups[0]['slug'] === 'katalogplugin' && $ups[0]['installed'] === '1.0.0' && $ups[0]['available'] === '1.1.0', 'Update 1.0.0 → 1.1.0 wird erkannt');
|
||||
$res = plugin_catalog_update_all($pdo);
|
||||
$check($res['updated'] === ['Aus dem Katalog 1.1.0'] && $res['failed'] === [], 'Alle aktualisieren: Plugin wird mit einem Aufruf auf 1.1.0 gebracht');
|
||||
$check($pdo->query("SELECT version FROM plugins WHERE slug='katalogplugin'")->fetchColumn() === '1.1.0' && plugin_updates_available($pdo) === [], 'Die Version ist 1.1.0 und der Hinweis „Update verfügbar“ verschwindet');
|
||||
// Fehler bei einem Plugin stoppt nichts und wird gemeldet (manipulierte Prüfsumme)
|
||||
$served11['plugins'][0]['version'] = '1.2.0';
|
||||
$served11['plugins'][0]['sha256'] = str_repeat('b', 64);
|
||||
$served11['plugins'][0]['downloadUrl'] = 'https://plugins.example.de/dl/katalogplugin-1.1.0.zip';
|
||||
plugin_catalog_cached(true);
|
||||
$res = plugin_catalog_update_all($pdo);
|
||||
$check($res['updated'] === [] && isset($res['failed']['katalogplugin']) && $pdo->query("SELECT version FROM plugins WHERE slug='katalogplugin'")->fetchColumn() === '1.1.0', 'Fehlerhaftes Update wird gemeldet und lässt die installierte Version unverändert');
|
||||
unset($GLOBALS['deskhub_http_get']);
|
||||
$GLOBALS['deskhub_http_get'] = function (string $url, int $max) use (&$served, &$requests, $catalogPkg): array {
|
||||
$requests[] = $url;
|
||||
if (str_contains($url, 'catalog.php')) return [200, json_encode($served), null];
|
||||
if (str_contains($url, 'katalogplugin-1.0.0.zip')) return [200, file_get_contents($catalogPkg), null];
|
||||
return [404, null, 'HTTP 404'];
|
||||
};
|
||||
plugin_catalog_cached(true);
|
||||
$pdo->exec("UPDATE plugins SET version = '1.0.0' WHERE slug = 'katalogplugin'");
|
||||
plugin_uninstall($pdo, 'katalogplugin'); // für die folgenden Fehlerfall-Tests wieder frei machen
|
||||
$served['plugins'][0]['sha256'] = str_repeat('a', 64);
|
||||
$r = plugin_catalog_install($pdo, 'katalogplugin');
|
||||
|
||||
Reference in New Issue
Block a user