From d15bd9edabd3761cac95b0ab28928a602ca42288 Mon Sep 17 00:00:00 2001 From: ivk Date: Wed, 18 Dec 2024 10:57:59 +0100 Subject: [PATCH] WIP fix integration tests --- src/common/api/common/threading/Transport.ts | 2 +- src/common/api/main/EntropyCollector.ts | 2 +- src/common/api/main/WorkerClient.ts | 5 ++++- src/mail-app/mailLocator.ts | 3 ++- src/mail-app/workerUtils/worker/WorkerLocator.ts | 6 ++++-- test/tests/IntegrationTest.ts | 3 ++- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/common/api/common/threading/Transport.ts b/src/common/api/common/threading/Transport.ts index 410c8d0a761c..9805d77da088 100644 --- a/src/common/api/common/threading/Transport.ts +++ b/src/common/api/common/threading/Transport.ts @@ -10,7 +10,7 @@ export interface Transport { /** * Set the handler for messages coming from the other end of the transport */ - setMessageHandler(handler: (message: Message) => unknown): unknown + setMessageHandler(handler: (message: Message) => unknown): void } /** diff --git a/src/common/api/main/EntropyCollector.ts b/src/common/api/main/EntropyCollector.ts index a7cc5157d5a2..18cc90bbcf44 100644 --- a/src/common/api/main/EntropyCollector.ts +++ b/src/common/api/main/EntropyCollector.ts @@ -92,7 +92,7 @@ export class EntropyCollector { } private addPerformanceTimingValues() { - if (!this.window.performance) return + if (!this.window.performance?.getEntries) return const entries = this.window.performance.getEntries() let added: number[] = [] for (const entry of entries.map((e) => e.toJSON())) { diff --git a/src/common/api/main/WorkerClient.ts b/src/common/api/main/WorkerClient.ts index c686ba59d6ee..ae2fa7ecf15c 100644 --- a/src/common/api/main/WorkerClient.ts +++ b/src/common/api/main/WorkerClient.ts @@ -62,7 +62,7 @@ export class WorkerClient { const WorkerImpl = globalThis.testWorker const workerImpl = new WorkerImpl(this, true) await workerImpl.init(client.browserData()) - workerImpl._queue._transport = { + workerImpl._dispatcher.transport = { postMessage: (msg: any) => this._dispatcher.handleMessage(msg), } this._dispatcher = new MessageDispatcher( @@ -70,6 +70,9 @@ export class WorkerClient { postMessage: function (msg: any) { workerImpl._queue.handleMessage(msg) }, + setMessageHandler(handler: (message: any) => unknown): void { + return + }, } as Transport, this.queueCommands(locator), "main-worker", diff --git a/src/mail-app/mailLocator.ts b/src/mail-app/mailLocator.ts index a0b0a61d6149..3995d0df48f0 100644 --- a/src/mail-app/mailLocator.ts +++ b/src/mail-app/mailLocator.ts @@ -838,8 +838,9 @@ class MailLocator { } } if (this.webAuthn == null) { + const credentials: CredentialsContainer = isTest() ? ({} as CredentialsContainer) : navigator.credentials this.webAuthn = new WebauthnClient( - new BrowserWebauthn(navigator.credentials, this.domainConfigProvider().getCurrentDomainConfig()), + new BrowserWebauthn(credentials, this.domainConfigProvider().getCurrentDomainConfig()), this.domainConfigProvider(), isApp(), ) diff --git a/src/mail-app/workerUtils/worker/WorkerLocator.ts b/src/mail-app/workerUtils/worker/WorkerLocator.ts index e6e8ae9f6591..c56144a0a5ff 100644 --- a/src/mail-app/workerUtils/worker/WorkerLocator.ts +++ b/src/mail-app/workerUtils/worker/WorkerLocator.ts @@ -164,7 +164,9 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) const mainInterface = worker.getMainInterface() - const suspensionHandler = new SuspensionHandler(mainInterface.infoMessageHandler, self) + const contextObject = isTest() ? globalThis : self + + const suspensionHandler = new SuspensionHandler(mainInterface.infoMessageHandler, contextObject) locator.instanceMapper = new InstanceMapper() locator.rsa = await createRsaImplementation(worker) @@ -446,7 +448,7 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) nonCachingEntityClient, // without cache ) }) - const scheduler = new SchedulerImpl(dateProvider, self, self) + const scheduler = new SchedulerImpl(dateProvider, contextObject, contextObject) locator.configFacade = lazyMemoized(async () => { const { ConfigurationDatabase } = await import("../../../common/api/worker/facades/lazy/ConfigurationDatabase.js") diff --git a/test/tests/IntegrationTest.ts b/test/tests/IntegrationTest.ts index e2bcd974f2b0..f7fb480b9129 100644 --- a/test/tests/IntegrationTest.ts +++ b/test/tests/IntegrationTest.ts @@ -15,6 +15,7 @@ import { neverNull } from "@tutao/tutanota-utils" import { initLocator, locator } from "../../src/mail-app/workerUtils/worker/WorkerLocator.js" import { browserDataStub, createTestEntity } from "./TestUtils.js" import { SessionType } from "../../src/common/api/common/SessionType.js" +import { object } from "testdouble" function loadFolders(folderListId: Id): Promise { return locator.cachingEntityClient.loadAll(MailFolderTypeRef, folderListId) @@ -35,7 +36,7 @@ o.spec("integration test", function () { o("login, read mails, update contact", async function () { env.staticUrl = "http://localhost:9000" env.versionNumber - initLocator(null as any, browserDataStub) + initLocator(object(), browserDataStub) o.timeout(20000) await locator.login.createSession("map-free@tutanota.de", "map", "Linux node", SessionType.Temporary, null) const folders = await loadMailboxSystemFolders()