/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import { Router } from "../router"; jest.mock("electron", () => ({ app: { getVersion: () => "99.99.99", getName: () => "lens", setName: jest.fn(), setPath: jest.fn(), getPath: () => "tmp", getLocale: () => "en", setLoginItemSettings: jest.fn(), }, ipcMain: { on: jest.fn(), handle: jest.fn(), }, })); describe("Router", () => { it("blocks path traversal attacks", async () => { const response: any = { statusCode: 200, end: jest.fn(), }; await (Router as any).handleStaticFile({ params: { path: "../index.ts", }, response, raw: {}, }); expect(response.statusCode).toEqual(404); }); it("serves files under static root", async () => { const response: any = { statusCode: 200, write: jest.fn(), setHeader: jest.fn(), end: jest.fn(), }; const req: any = { url: "", }; await (Router as any).handleStaticFile({ params: { path: "router.test.ts", }, response, raw: { req }, }); expect(response.statusCode).toEqual(200); }); });