| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- "use strict";
- import expect from "unexpected";
- import unzip from "../src";
- import temp from "temp";
- import path from "path";
- import fs from "fs";
- import mockfs from "mock-fs";
- describe("unzip-crx", () => {
- let tempDir;
- before(() => {
- temp.track();
- });
- beforeEach(() => {
- tempDir = temp.mkdirSync("unzip-crx-test-files");
- });
- it("should unpack the given crx file", (done) => {
- const unzipPath = path.resolve(tempDir, "ext");
- const readmeFile = path.resolve(tempDir, "ext/README.md");
- unzip("./test/fixtures/extension.crx", unzipPath)
- .then(() => {
- const file = fs.readFileSync(readmeFile, "utf8");
- expect(file, "to equal", "# Crazy Readme File");
- done();
- })
- .catch((err) => done(err));
- });
- it("should unpack the given regular zip file", (done) => {
- const expectBinary = fs.readFileSync(
- path.join(__dirname, "./fixtures/extension/test.bin")
- );
- const unzipPath = path.resolve(tempDir, "ext");
- const readmeFile = path.resolve(tempDir, "ext/README.md");
- const binaryFile = path.resolve(tempDir, "ext/test.bin");
- unzip("./test/fixtures/extension-zipped.crx", unzipPath)
- .then(() => {
- const file = fs.readFileSync(readmeFile, "utf8");
- const binaryContent = fs.readFileSync(binaryFile);
- expect(file, "to equal", "# Crazy Readme File");
- expect(binaryContent, "to equal", expectBinary);
- done();
- })
- .catch((err) => done(err));
- });
- it("should throw if crx file header malformed", () => {
- const unzipPath = path.resolve(tempDir, "ext");
- return expect(
- unzip("./test/fixtures/extension-malformed.crx", unzipPath),
- "to be rejected with",
- new Error("Invalid header: Does not start with Cr24")
- );
- });
- it("should throw if crx version number is malformed", () => {
- const unzipPath = path.resolve(tempDir, "ext");
- return expect(
- unzip("./test/fixtures/extension-malformed-v.crx", unzipPath),
- "to be rejected with",
- new Error("Unexpected crx format version number.")
- );
- });
- describe("- ext dir is not writable", () => {
- it("should throw if directory is not writable", () => {
- const unzipPath = path.resolve(tempDir);
- fs.chmodSync(unzipPath, "644");
- return expect(
- unzip("./test/fixtures/extension.crx", unzipPath),
- "to be rejected with",
- /EACCES: permission denied/
- );
- });
- });
- afterEach(() => {
- temp.cleanupSync();
- });
- });
|