Make admin quotas editable and simplify uploader storage

This commit is contained in:
2026-10-15 12:51:42 +09:00
parent 4d527f74e6
commit 328fad2e36
26 changed files with 1101 additions and 205 deletions

View File

@@ -89,7 +89,7 @@ test('signed-in uploads use the account folder; download retains the key, origin
b = await f.create(),
userId = await login(f, a);
const value = await file(f, a, b);
assert.match(value.row.storageKey, new RegExp(`^user-${userId}/[a-f0-9-]{36}\\.jpg$`));
assert.match(value.row.storageKey, new RegExp(`^${userId}/[a-f0-9-]{36}\\.jpg$`));
assert.equal((await f.call(a, '/vault')).json().items.length, 0);
const expiry = f.service.db
.select()
@@ -119,7 +119,7 @@ test('anonymous upload uses its guest folder even when a signed-in recipient add
b = await f.create();
await login(f, b);
const value = await file(f, a, b, 'received.mp4');
assert.equal(value.row.storageKey.split('/')[0], `guest-${value.row.ownerGuestId}`);
assert.equal(value.row.storageKey.split('/')[0], value.row.ownerGuestId);
assert.match(value.row.storageKey, /\.mp4$/);
assert.equal((await f.call(b, '/inbox')).json().items.length, 1);
assert.equal((await f.call(b, `/access/${value.item.accessId}/download`)).statusCode, 200);
@@ -149,8 +149,8 @@ test('the same account on different devices shares one upload folder with unique
c.cookie += '; ' + String(loginResponse.headers['set-cookie']).split(';')[0];
const one = await file(f, a, b),
two = await file(f, c, d);
assert.equal(one.row.storageKey.split('/')[0], `user-${id}`);
assert.equal(two.row.storageKey.split('/')[0], `user-${id}`);
assert.equal(one.row.storageKey.split('/')[0], id);
assert.equal(two.row.storageKey.split('/')[0], id);
assert.notEqual(one.row.storageKey, two.row.storageKey);
assert.deepEqual(readFileSync(f.service.storage.layout.path(one.row)), one.bytes);
assert.deepEqual(readFileSync(f.service.storage.layout.path(two.row)), two.bytes);
@@ -176,7 +176,7 @@ test('old flat originals and completed files migrate to their recorded upload ow
.run();
f.service.storage.layout.prepare();
const stored = current(f, value.row);
assert.equal(stored.storageKey, `guest-${value.row.ownerGuestId}/${legacy}.png`);
assert.equal(stored.storageKey, `${value.row.ownerGuestId}/${legacy}.png`);
assert.equal(stored.id, value.row.id);
assert.equal(stored.checksum, value.row.checksum);
assert.equal(stored.updatedAt, value.row.updatedAt);
@@ -218,7 +218,7 @@ test('migration waits for all active readers before moving a legacy file', async
await once(second.stream, 'close');
assert.deepEqual(Buffer.concat(chunks), value.bytes);
f.service.storage.layout.prepare();
assert.equal(current(f, value.row).storageKey, `guest-${value.row.ownerGuestId}/${key}.jpg`);
assert.equal(current(f, value.row).storageKey, `${value.row.ownerGuestId}/${key}.jpg`);
} finally {
await f.close();
}