teach tests about the new way we fail websockets

This commit is contained in:
dakkar 2025-09-19 13:33:22 +01:00
parent e111d8aa55
commit 77852b8cce
3 changed files with 11 additions and 2 deletions

View file

@ -237,8 +237,8 @@ describe('API', () => {
'homeTimeline',
() => { },
), (err: IncomingMessage) => {
assert.strictEqual(err.statusCode, 401);
assert.ok(err.headers['www-authenticate']?.startsWith('Bearer realm="Misskey", error="invalid_token", error_description'));
assert.strictEqual(err.statusCode, 4000);
assert.ok(err.reason?.startsWith('Failed to authenticate'));
return true;
});
});

View file

@ -734,6 +734,9 @@ describe('Streaming', () => {
const socket = new WebSocket(`ws://127.0.0.1:${port}/streaming?i=${application}`);
const established = await new Promise<boolean>((resolve, reject) => {
socket.on('error', () => resolve(false));
socket.on('close', (code, reason) => {
if (code === 4000) resolve(false);
});
socket.on('unexpected-response', () => resolve(false));
setTimeout(() => resolve(true), 3000);
});

View file

@ -377,6 +377,12 @@ export function connectStream<C extends keyof misskey.Channels>(user: UserToken,
const ws = new WebSocket(url, options);
ws.on('unexpected-response', (req, res) => rej(res));
ws.on('close', (code, reason) => {
rej({
statusCode: code,
reason: reason.toString('utf8'),
});
});
ws.on('open', () => {
ws.on('message', data => {
const msg = JSON.parse(data.toString());