fix: rafraîchir les manifests du dashboard après déploiement
All checks were successful
Validation Dashboard / Tests backend et build frontend (push) Successful in 40s
All checks were successful
Validation Dashboard / Tests backend et build frontend (push) Successful in 40s
This commit is contained in:
@@ -7,7 +7,7 @@ const fs = require('node:fs');
|
||||
const os = require('node:os');
|
||||
const path = require('node:path');
|
||||
|
||||
const { discoverApps, refreshApps } = require('../src/app-registry');
|
||||
const { discoverApps, refreshApps, refreshAppsIfStale } = require('../src/app-registry');
|
||||
|
||||
function writeManifest(basePath, directory, manifest) {
|
||||
const appPath = path.join(basePath, directory);
|
||||
@@ -113,6 +113,33 @@ try {
|
||||
'app.json doit prévaloir sur toute définition statique'
|
||||
);
|
||||
|
||||
// Un déploiement met à jour app.json : le dashboard doit le détecter sans
|
||||
// redémarrage, mais sans relire les manifests à chaque requête.
|
||||
refreshApps(config, console, 1_000);
|
||||
writeManifest(sandbox, 'contacts', {
|
||||
id: 'itinova-contacts',
|
||||
name: 'Itinova Contacts mis à jour',
|
||||
category: 'ITINOVA',
|
||||
urls: {
|
||||
recette: 'https://contacts-itinova.recette.santinova-soft.org',
|
||||
prod: 'https://contacts-itinova.santinova-soft.org',
|
||||
},
|
||||
});
|
||||
const cachedRefresh = refreshAppsIfStale(config, { now: 1_999, maxAgeMs: 1_000 });
|
||||
assert.equal(cachedRefresh.refreshed, false, 'le cache reste utilisable avant son expiration');
|
||||
assert.equal(
|
||||
config.apps.find((candidate) => candidate.id === 'itinova-contacts').name,
|
||||
'Itinova Contacts',
|
||||
'le cache ne doit pas relire les manifests avant son expiration'
|
||||
);
|
||||
const expiredRefresh = refreshAppsIfStale(config, { now: 2_000, maxAgeMs: 1_000 });
|
||||
assert.equal(expiredRefresh.refreshed, true, 'le manifeste est relu lorsque le cache expire');
|
||||
assert.equal(
|
||||
config.apps.find((candidate) => candidate.id === 'itinova-contacts').name,
|
||||
'Itinova Contacts mis à jour',
|
||||
'la modification de manifeste doit apparaître sans redémarrage du dashboard'
|
||||
);
|
||||
|
||||
console.log('OK app-registry');
|
||||
} finally {
|
||||
fs.rmSync(sandbox, { recursive: true, force: true });
|
||||
|
||||
Reference in New Issue
Block a user