Harden terminal upload finalization recovery

This commit is contained in:
Sucukdeluxe
2026-08-14 00:07:13 +02:00
parent e681338631
commit 28094414a8
7 changed files with 476 additions and 94 deletions
+41
View File
@@ -178,6 +178,47 @@ test('markCompleted keeps successful hosters provisional for the current round',
}
});
test('removeRequirement never relaxes requirements for started or interrupted jobs', () => {
for (const candidate of [
{ status: 'queued' },
{ status: 'getting-server' },
{ status: 'uploading' },
{ status: 'retrying' },
{ status: 'preview', interrupted: true }
]) {
const queueJobs = [
{
id: 'job-complete',
file: 'C:\\Uploads\\Protected.mkv',
hoster: 'doodstream.com',
status: 'done',
sourceCleanupMetadataVersion: 2,
sourceCleanupToken: 'cleanup-protected',
sourceCleanupRequiredHosters: ['doodstream.com', 'voe.sx'],
sourceCleanupConfirmedHosters: ['doodstream.com']
},
{
id: 'job-candidate',
file: 'C:\\Uploads\\Protected.mkv',
hoster: 'voe.sx',
sourceCleanupMetadataVersion: 2,
sourceCleanupToken: 'cleanup-protected',
sourceCleanupRequiredHosters: ['doodstream.com', 'voe.sx'],
sourceCleanupConfirmedHosters: ['doodstream.com'],
...candidate
}
];
const touchedJobs = policy.removeRequirement(queueJobs, queueJobs[1], 'win32');
assert.deepEqual(touchedJobs, []);
assert.deepEqual(queueJobs.map(job => job.sourceCleanupRequiredHosters), [
['doodstream.com', 'voe.sx'],
['doodstream.com', 'voe.sx']
]);
}
});
test('applyFingerprints attaches Main fingerprints by token and includes them in payloads', () => {
const queueJobs = queueFixture();
policy.prepareGroups(queueJobs, queueJobs, () => 'cleanup-1', 'win32');