feat(FN-2952): validate unavailableNodePolicy in PUT /settings
Adds server-side validation for the `unavailableNodePolicy` field on the PUT /api/settings route. Accepts only `block` or `fallback-local`; rejects unknown strings and non-string values with 400. - packages/dashboard/src/routes/register-settings-memory-routes.ts: call `validateUnavailableNodePolicy` and throw `badRequest` on invalid input - packages/dashboard/src/__tests__/routes.test.ts: cover accept, invalid-value, and non-string cases Fusion-Task-Id: FN-2952
This commit is contained in:
@@ -35,6 +35,7 @@ import {
|
||||
validateBackupRetention,
|
||||
validateBackupSchedule,
|
||||
validateImportData,
|
||||
validateUnavailableNodePolicy,
|
||||
writeInsightsMemory,
|
||||
writeMemory,
|
||||
writeProjectMemoryFile,
|
||||
@@ -334,6 +335,13 @@ export function registerSettingsMemoryRoutes(ctx: ApiRoutesContext, deps: Settin
|
||||
) {
|
||||
throw badRequest("archiveAgentLogMode must be one of: none, compact, full");
|
||||
}
|
||||
if (clientSettings.unavailableNodePolicy !== undefined) {
|
||||
const validatedUnavailableNodePolicy = validateUnavailableNodePolicy(clientSettings.unavailableNodePolicy);
|
||||
if (validatedUnavailableNodePolicy === undefined) {
|
||||
throw badRequest("unavailableNodePolicy must be one of: block, fallback-local");
|
||||
}
|
||||
clientSettings.unavailableNodePolicy = validatedUnavailableNodePolicy;
|
||||
}
|
||||
|
||||
// Validate memoryBackendType if provided - must be string or null (for explicit clear)
|
||||
// Unknown backend IDs are accepted and persisted verbatim (for custom backend compatibility)
|
||||
|
||||
Reference in New Issue
Block a user