test: share signal archive extraction assertion

This commit is contained in:
Peter Steinberger
2026-04-20 17:13:13 +01:00
parent 6ed67fc873
commit 9e125184ed

View File

@@ -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);
});
});
});