Organize uploader storage and restore transfer readiness
This commit is contained in:
@@ -2,6 +2,41 @@ import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { fixture } from './helpers.js';
|
||||
import { Limiter, ApiError } from '../src/security.js';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { once } from 'node:events';
|
||||
|
||||
test('a known reconnecting peer returns a transient code without creating a request or charging quotas', async () => {
|
||||
const f = await fixture(true);
|
||||
try {
|
||||
f.cfg.offlineGraceMs = 1000;
|
||||
f.cfg.pairRate = 1;
|
||||
const a = await f.create('8.8.8.8'),
|
||||
b = await f.create('8.8.8.8');
|
||||
const disconnected = once(f.service.io.sockets.sockets.get(b.socket.id), 'disconnect');
|
||||
b.socket.disconnect();
|
||||
await disconnected;
|
||||
const key = randomUUID();
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const response = await f.request(a, b, 'test', 'url', 1, key);
|
||||
assert.equal(response.statusCode, 409);
|
||||
assert.equal(response.json().code, 'TARGET_RECONNECTING');
|
||||
assert.equal((await f.call(a, '/transfer-requests')).json().requests.length, 0);
|
||||
}
|
||||
await f.call(b, '/device/me', 'PATCH', { discoverable: false });
|
||||
assert.equal((await f.request(a, b, 'test', 'url', 1, key)).json().code, 'TARGET_UNAVAILABLE');
|
||||
await f.call(b, '/device/me', 'PATCH', { discoverable: true });
|
||||
await f.connect(b);
|
||||
const response = await f.request(a, b, 'test', 'url', 1, key);
|
||||
assert.equal(response.statusCode, 200);
|
||||
assert.equal(
|
||||
(await f.request(a, b, 'test', 'url', 1, key)).json().requestId,
|
||||
response.json().requestId,
|
||||
);
|
||||
assert.equal((await f.call(a, '/transfer-requests')).json().requests.length, 1);
|
||||
} finally {
|
||||
await f.close();
|
||||
}
|
||||
});
|
||||
|
||||
test('rate windows report their deadline; denied retries do not charge other quotas', (t) => {
|
||||
let now = 1000;
|
||||
|
||||
Reference in New Issue
Block a user