diff --git a/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.injectable.ts b/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.injectable.ts index 507c913971..d335ef4d3c 100644 --- a/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.injectable.ts +++ b/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.injectable.ts @@ -3,7 +3,6 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import assert from "assert"; import electronInjectable from "./electron.injectable"; const resolveProxyFromElectronInjectable = getInjectable({ @@ -17,7 +16,9 @@ const resolveProxyFromElectronInjectable = getInjectable({ .getAllWebContents() .find((x) => !x.isDestroyed()); - assert(webContent); + if (!webContent) { + throw new Error(`Tried to resolve proxy for "${url}", but no browser window was available`); + } return await webContent.session.resolveProxy(url); }; diff --git a/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.test.ts b/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.test.ts index 9eb62f1012..c5a6e88962 100644 --- a/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.test.ts +++ b/src/behaviours/proxy/resolve-proxy/main/resolve-proxy-from-electron.test.ts @@ -81,4 +81,46 @@ describe("technical: resolve-proxy-from-electron", () => { expect(await actualPromise).toBe("some-proxy"); }); }); + + describe("given there are only destroyed Lens windows, when called with URL, throws", () => { + let actualPromise: Promise; + + beforeEach(() => { + const di = getDiForUnitTesting(); + + di.override( + electronInjectable, + () => + ({ + webContents: { + getAllWebContents: () => [ + { + isDestroyed: () => true, + + session: { + resolveProxy: () => { + throw new Error("should never come here"); + }, + }, + }, + ], + }, + } as unknown as typeof electron), + ); + + resolveProxyMock = asyncFn(); + + const resolveProxyFromElectron = di.inject( + resolveProxyFromElectronInjectable, + ); + + actualPromise = resolveProxyFromElectron("some-url"); + }); + + it("rejects", () => { + return expect(actualPromise).rejects.toThrow( + 'Tried to resolve proxy for "some-url", but no browser window was available', + ); + }); + }); });