Add offline transfer history and tighten anonymous access
This commit is contained in:
@@ -3,6 +3,9 @@ import test from 'node:test';
|
||||
|
||||
import { buildTransferShareUrl } from '../lib/transfer-links';
|
||||
import {
|
||||
getAvailableTransferModes,
|
||||
getOfflineTransferSessionLabel,
|
||||
getOfflineTransferSessionSize,
|
||||
canArchiveTransferSelection,
|
||||
buildQrImageUrl,
|
||||
canSendTransferFiles,
|
||||
@@ -51,14 +54,19 @@ test('buildQrImageUrl encodes the share url as a QR image endpoint', () => {
|
||||
});
|
||||
|
||||
test('resolveInitialTransferTab prefers receive mode for public visitors and shared sessions', () => {
|
||||
assert.equal(resolveInitialTransferTab(false, null), 'receive');
|
||||
assert.equal(resolveInitialTransferTab(false, null), 'send');
|
||||
assert.equal(resolveInitialTransferTab(true, '849201'), 'receive');
|
||||
assert.equal(resolveInitialTransferTab(true, null), 'send');
|
||||
});
|
||||
|
||||
test('canSendTransferFiles requires an authenticated session', () => {
|
||||
test('canSendTransferFiles allows public online transfer entry', () => {
|
||||
assert.equal(canSendTransferFiles(true), true);
|
||||
assert.equal(canSendTransferFiles(false), false);
|
||||
assert.equal(canSendTransferFiles(false), true);
|
||||
});
|
||||
|
||||
test('getAvailableTransferModes keeps offline mode behind login', () => {
|
||||
assert.deepEqual(getAvailableTransferModes(false), ['ONLINE']);
|
||||
assert.deepEqual(getAvailableTransferModes(true), ['ONLINE', 'OFFLINE']);
|
||||
});
|
||||
|
||||
test('getTransferModeSummary describes the offline seven-day retention rule', () => {
|
||||
@@ -68,6 +76,31 @@ test('getTransferModeSummary describes the offline seven-day retention rule', ()
|
||||
});
|
||||
});
|
||||
|
||||
test('offline transfer history helpers summarize the session title and total size', () => {
|
||||
const singleFileSession = {
|
||||
sessionId: 'session-1',
|
||||
pickupCode: '723325',
|
||||
mode: 'OFFLINE' as const,
|
||||
expiresAt: '2026-04-09T08:00:00Z',
|
||||
files: [
|
||||
{name: 'cover.png', relativePath: '活动图/cover.png', size: 2048, contentType: 'image/png', uploaded: true},
|
||||
],
|
||||
};
|
||||
|
||||
const multiFileSession = {
|
||||
...singleFileSession,
|
||||
sessionId: 'session-2',
|
||||
files: [
|
||||
{name: 'cover.png', relativePath: '活动图/cover.png', size: 2048, contentType: 'image/png', uploaded: true},
|
||||
{name: 'notes.pdf', relativePath: '活动图/notes.pdf', size: 1024, contentType: 'application/pdf', uploaded: true},
|
||||
],
|
||||
};
|
||||
|
||||
assert.equal(getOfflineTransferSessionLabel(singleFileSession), 'cover.png');
|
||||
assert.equal(getOfflineTransferSessionLabel(multiFileSession), 'cover.png 等 2 项');
|
||||
assert.equal(getOfflineTransferSessionSize(multiFileSession), '3 KB');
|
||||
});
|
||||
|
||||
test('canArchiveTransferSelection is enabled for multi-file or folder downloads', () => {
|
||||
assert.equal(canArchiveTransferSelection([
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user