import { resolve } from "path"; import { describe, it, beforeEach } from "mocha"; import { expect } from "chai"; // import { fs, vol } from "memfs" import type { Vault } from "../src/index"; import { OnePassword } from "../src/index"; // import adapter from "../src/adapters/node"; describe("OnePassword", () => { const freddy = resolve(__dirname, "../freddy-2013-12-04.opvault"); describe("getProfileNames", () => { it("freddy", async () => { const instance = new OnePassword({ path: freddy }); expect(await instance.getProfileNames()).to.deep.equal(["default"]); }); it.skip("ignores faulty folders", async () => {}); }); describe("unlock", () => { let vault: Vault; beforeEach(async () => { vault = await new OnePassword({ path: freddy }).getProfile("default"); }); it("accepts correct password", async () => { await expect(vault.unlock("freddy")).to.be.fulfilled; expect(vault.isLocked).to.be.false; }); it("rejects wrong password", () => { ["Freddy", "_freddy", ""].forEach(async (password) => { await expect(vault.unlock(password)).to.be.rejectedWith( "Invalid password" ); expect(vault.isLocked).to.be.true; }); }); }); describe("content", () => { let vault: Vault; beforeEach(async () => { vault = await new OnePassword({ path: freddy }).getProfile("default"); await vault.unlock("freddy"); }); it("reads overviews", () => { const overviews = vault.overviews.values(); expect(overviews).to.have.lengthOf(29); }); }); describe("lock", () => { it("locks", async () => { const instance = new OnePassword({ path: freddy }); const vault = await instance.getProfile("default"); await vault.unlock("freddy"); expect(vault.isLocked).to.be.false; vault.lock(); expect(vault.isLocked).to.be.true; expect(() => vault.overviews.values()).to.throw(); }); }); });