Merge pull request #2913 from Gautam0507/fix/2803-session-retention-persist
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)));
|
const normalizedDays = Math.max(1, Math.min(365, Math.round(candidate.autoDeleteAfterDays)));
|
||||||
result.autoDeleteAfterDays = normalizedDays;
|
result.autoDeleteAfterDays = normalizedDays;
|
||||||
}
|
}
|
||||||
|
if (candidate.sessionRetentionAction === 'archive' || candidate.sessionRetentionAction === 'delete') {
|
||||||
|
result.sessionRetentionAction = candidate.sessionRetentionAction;
|
||||||
|
}
|
||||||
if (candidate.tunnelBootstrapTtlMs === null) {
|
if (candidate.tunnelBootstrapTtlMs === null) {
|
||||||
result.tunnelBootstrapTtlMs = null;
|
result.tunnelBootstrapTtlMs = null;
|
||||||
} else if (typeof candidate.tunnelBootstrapTtlMs === 'number' && Number.isFinite(candidate.tunnelBootstrapTtlMs)) {
|
} else if (typeof candidate.tunnelBootstrapTtlMs === 'number' && Number.isFinite(candidate.tunnelBootstrapTtlMs)) {
|
||||||
|
|||||||
@@ -466,4 +466,39 @@ describe('settings helpers', () => {
|
|||||||
expect(sanitized.recentModels).toEqual(payload.recentModels);
|
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