"use strict"; const expect = require("chai").expect; const Helper = require("../../src/helper"); describe("Client passwords", function() { this.slow(1500); const inputPassword = "my$Super@Cool Password"; it("hashed password should match", function() { // Generated with third party tool to test implementation const comparedPassword = Helper.password.compare(inputPassword, "$2a$11$zrPPcfZ091WNfs6QrRHtQeUitlgrJcecfZhxOFiQs0FWw7TN3Q1oS"); return comparedPassword.then((result) => { expect(result).to.be.true; }); }); it("wrong hashed password should not match", function() { // Compare against a fake hash const comparedPassword = Helper.password.compare(inputPassword, "$2a$11$zrPPcfZ091WRONGPASSWORDitlgrJcecfZhxOFiQs0FWw7TN3Q1oS"); return comparedPassword.then((result) => { expect(result).to.be.false; }); }); it("freshly hashed password should match", function() { const hashedPassword = Helper.password.hash(inputPassword); const comparedPassword = Helper.password.compare(inputPassword, hashedPassword); return comparedPassword.then((result) => { expect(result).to.be.true; }); }); it("shout passwords should be marked as old", function() { expect(Helper.password.requiresUpdate("$2a$08$K4l.hteJcCP9D1G5PANzYuBGvdqhUSUDOLQLU.xeRxTbvtp01KINm")).to.be.true; expect(Helper.password.requiresUpdate("$2a$11$zrPPcfZ091WNfs6QrRHtQeUitlgrJcecfZhxOFiQs0FWw7TN3Q1oS")).to.be.false; }); });