const assert = require("assert"); const { calcEntropy, isSupported } = require("../src"); describe("entropy", () => { it("calc entropy without crypto use default options and crypto", () => { const profile = { site: "example.org", login: "contact@example.org", }; const masterPassword = "password"; return calcEntropy(profile, masterPassword).then((entropy) => { assert.equal( "dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e", entropy ); }); }); it("calc entropy pbkdf2 with default params (100000 iterations, 32 bytes length, sha256 digest)", () => { const profile = { site: "example.org", login: "contact@example.org", options: { counter: 1, }, crypto: { method: "pbkdf2", iterations: 100000, keylen: 32, digest: "sha256", }, }; const masterPassword = "password"; return calcEntropy(profile, masterPassword).then((entropy) => { assert.equal( "dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e", entropy ); }); }); it("calc entropy pbkdf2 with unicode char", () => { const profile = { site: "example.org", login: "❤", options: { counter: 1, }, crypto: { method: "pbkdf2", iterations: 100000, keylen: 32, digest: "sha256", }, }; const masterPassword = "I ❤ LessPass"; return calcEntropy(profile, masterPassword).then((entropy) => { assert.equal( "4e66cab40690c01af55efd595f5963cc953d7e10273c01827881ebf8990c627f", entropy ); }); }); it("calc entropy with different options (8192 iterations, 16 bytes length, sha512 digest)", () => { const profile = { site: "example.org", login: "contact@example.org", options: { counter: 1, }, crypto: { method: "pbkdf2", iterations: 8192, keylen: 16, digest: "sha512", }, }; const masterPassword = "password"; return calcEntropy(profile, masterPassword).then((entropy) => { assert.equal("fff211c16a4e776b3574c6a5c91fd252", entropy); }); }); it("calc entropy different if counter different 1", () => { const profile = { site: "example.org", login: "contact@example.org", options: { counter: 1, }, crypto: { method: "pbkdf2", iterations: 100000, keylen: 32, digest: "sha256", }, }; const profile2 = { site: "example.org", login: "contact@example.org", options: { counter: 2, }, crypto: { method: "pbkdf2", iterations: 100000, keylen: 32, digest: "sha256", }, }; const promises = [ calcEntropy(profile, "password"), calcEntropy(profile2, "password"), ]; Promise.all(promises).then((values) => { assert.notEqual(values[0], values[1]); }); }); }); describe("isSupported", () => { it("isSupported", () => isSupported().then((supported) => { assert(supported); })); });