fix(settings): persist sessionRetentionAction through the settings sanitizer
This commit is contained in:
@@ -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');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user