diff --git a/extensions/signal/src/install-signal-cli.test.ts b/extensions/signal/src/install-signal-cli.test.ts index ce1808e83a8..13bc21f0662 100644 --- a/extensions/signal/src/install-signal-cli.test.ts +++ b/extensions/signal/src/install-signal-cli.test.ts @@ -141,6 +141,13 @@ describe("extractSignalCliArchive", () => { } } + async function expectExtractedSignalCli(archivePath: string, extractDir: string) { + await extractSignalCliArchive(archivePath, extractDir, 5_000); + + const extracted = await fs.readFile(path.join(extractDir, "root", "signal-cli"), "utf-8"); + expect(extracted).toBe("bin"); + } + it("rejects zip slip path traversal", async () => { await withArchiveWorkspace(async (workDir) => { const archivePath = path.join(workDir, "bad.zip"); @@ -167,10 +174,7 @@ describe("extractSignalCliArchive", () => { zip.file("root/signal-cli", "bin"); await fs.writeFile(archivePath, await zip.generateAsync({ type: "nodebuffer" })); - await extractSignalCliArchive(archivePath, extractDir, 5_000); - - const extracted = await fs.readFile(path.join(extractDir, "root", "signal-cli"), "utf-8"); - expect(extracted).toBe("bin"); + await expectExtractedSignalCli(archivePath, extractDir); }); }); @@ -184,10 +188,7 @@ describe("extractSignalCliArchive", () => { await tar.c({ cwd: workDir, file: archivePath, gzip: true }, ["root"]); await fs.mkdir(extractDir, { recursive: true }); - await extractSignalCliArchive(archivePath, extractDir, 5_000); - - const extracted = await fs.readFile(path.join(extractDir, "root", "signal-cli"), "utf-8"); - expect(extracted).toBe("bin"); + await expectExtractedSignalCli(archivePath, extractDir); }); }); });