From 31eef4663020132a4d23cfdd3f9a3d92604dca63 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 1 Dec 2022 11:00:29 -0500 Subject: [PATCH] Add missing safety checks in unit tests for structured clone issues Signed-off-by: Sebastian Malton --- .../override-messaging-from-window-to-main.ts | 7 +++++++ .../override-requesting-from-window-to-main.ts | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/test-utils/channel-fakes/override-messaging-from-window-to-main.ts b/src/test-utils/channel-fakes/override-messaging-from-window-to-main.ts index f00f4e626c..c39731ac8e 100644 --- a/src/test-utils/channel-fakes/override-messaging-from-window-to-main.ts +++ b/src/test-utils/channel-fakes/override-messaging-from-window-to-main.ts @@ -3,6 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { DiContainer } from "@ogre-tools/injectable"; +import { deserialize, serialize } from "v8"; import type { MessageChannel, MessageChannelListener } from "../../common/utils/channel/message-channel-listener-injection-token"; import enlistMessageChannelListenerInjectableInMain from "../../main/utils/channel/channel-listeners/enlist-message-channel-listener.injectable"; import { getOrInsertSet } from "../../renderer/utils"; @@ -40,6 +41,12 @@ export const overrideMessagingFromWindowToMain = (mainDi: DiContainer) => { ); } + try { + message = deserialize(serialize(message)); + } catch (error) { + throw new Error(`Tried to send a message to channel "${channelId}" that is not compatible with StructuredClone: ${error}`); + } + listeners.forEach((listener) => listener.handler(message)); }); }; diff --git a/src/test-utils/channel-fakes/override-requesting-from-window-to-main.ts b/src/test-utils/channel-fakes/override-requesting-from-window-to-main.ts index ddf758f5b6..70526bd84c 100644 --- a/src/test-utils/channel-fakes/override-requesting-from-window-to-main.ts +++ b/src/test-utils/channel-fakes/override-requesting-from-window-to-main.ts @@ -3,6 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { DiContainer } from "@ogre-tools/injectable"; +import { deserialize, serialize } from "v8"; import type { RequestChannel } from "../../common/utils/channel/request-channel-listener-injection-token"; import type { RequestFromChannel } from "../../common/utils/channel/request-from-channel-injection-token"; import enlistRequestChannelListenerInjectableInMain from "../../main/utils/channel/channel-listeners/enlist-request-channel-listener.injectable"; @@ -46,6 +47,12 @@ export const overrideRequestingFromWindowToMain = (mainDi: DiContainer) => { ); } + try { + request = deserialize(serialize(request)); + } catch (error) { + throw new Error(`Tried to request from channel "${channel.id}" with data that is not compatible with StructuredClone: ${error}`); + } + return requestListener.handler(request); }) as RequestFromChannel, );