fix(settings): persist sessionRetentionAction through the settings sanitizer

This commit is contained in:
Gautam0507
2026-08-15 00:39:36 +05:30
parent 72cd861eb8
commit b15b20fe08
2 changed files with 38 additions and 0 deletions
@@ -375,6 +375,9 @@ export const createSettingsHelpers = (dependencies) => {
const normalizedDays = Math.max(1, Math.min(365, Math.round(candidate.autoDeleteAfterDays)));
result.autoDeleteAfterDays = normalizedDays;
}
if (candidate.sessionRetentionAction === 'archive' || candidate.sessionRetentionAction === 'delete') {
result.sessionRetentionAction = candidate.sessionRetentionAction;
}
if (candidate.tunnelBootstrapTtlMs === null) {
result.tunnelBootstrapTtlMs = null;
} else if (typeof candidate.tunnelBootstrapTtlMs === 'number' && Number.isFinite(candidate.tunnelBootstrapTtlMs)) {
@@ -466,4 +466,39 @@ describe('settings helpers', () => {
expect(sanitized.recentModels).toEqual(payload.recentModels);
});
});
describe('session retention settings persistence', () => {
it('round-trips sessionRetentionAction archive and delete through the sanitizer', () => {
const helpers = createTestHelpersWithRealSanitizers();
expect(helpers.sanitizeSettingsUpdate({ sessionRetentionAction: 'archive' })).toEqual({
sessionRetentionAction: 'archive',
});
expect(helpers.sanitizeSettingsUpdate({ sessionRetentionAction: 'delete' })).toEqual({
sessionRetentionAction: 'delete',
});
});
it('rejects invalid sessionRetentionAction values', () => {
const helpers = createTestHelpersWithRealSanitizers();
expect(helpers.sanitizeSettingsUpdate({ sessionRetentionAction: 'remove' })).toEqual({});
expect(helpers.sanitizeSettingsUpdate({ sessionRetentionAction: true })).toEqual({});
});
it('survives a full settings payload containing sessionRetentionAction (regression)', () => {
const helpers = createTestHelpersWithRealSanitizers();
const payload = {
autoDeleteEnabled: true,
autoDeleteAfterDays: 60,
sessionRetentionAction: 'delete',
};
const sanitized = helpers.sanitizeSettingsUpdate(payload);
expect(sanitized.autoDeleteEnabled).toBe(true);
expect(sanitized.autoDeleteAfterDays).toBe(60);
expect(sanitized.sessionRetentionAction).toBe('delete');
});
});
});