Improve remote Matrix token refresh

This commit is contained in:
jjbrunton committed 2026-08-08 14:30:40 +01:00
1 parent b9df8459e3
commit bffda95251
6 files changed
+226 -14

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
import { describe, expect, it, vi } from 'vitest';
import type { BrowserContext, Frame } from 'playwright';
import { createMockLogger } from './mockLogger.js';
import {
extractMatrixCredentials,
MatrixBrowserLoginRequiredError,
} from '../src/services/chat/matrix/token-extractor.js';
describe('extractMatrixCredentials', () => {
it('fails as soon as Reddit redirects the chat page to login', async () => {
const handlers = new Map<string, (value: never) => void>();
const frame = { url: () => 'https://www.reddit.com/login/?dest=https://www.reddit.com/chat/' } as Frame;
const page = {
on: vi.fn((event: string, handler: (value: never) => void) => {
handlers.set(event, handler);
}),
mainFrame: vi.fn(() => frame),
goto: vi.fn(async () => {
handlers.get('framenavigated')?.(frame as never);
return null;
}),
url: vi.fn(() => frame.url()),
screenshot: vi.fn(async () => undefined),
close: vi.fn(async () => undefined),
};
const context = { newPage: vi.fn(async () => page) } as unknown as BrowserContext;
await expect(
extractMatrixCredentials(context, createMockLogger(), { timeoutMs: 5_000 }),
).rejects.toBeInstanceOf(MatrixBrowserLoginRequiredError);
expect(page.screenshot).not.toHaveBeenCalled();
});
});