20 lines
790 B
JavaScript
20 lines
790 B
JavaScript
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const vm = require("vm");
|
|
|
|
const filename = "utils/validation.js";
|
|
const source = `${fs.readFileSync(filename, "utf8")
|
|
.replace(/export const /g, "const ")}\nmodule.exports = { PASSWORD_POLICY_MESSAGE, validatePassword };`;
|
|
const sandbox = { module: { exports: {} } };
|
|
vm.runInNewContext(source, sandbox, { filename });
|
|
const { validatePassword } = sandbox.module.exports;
|
|
|
|
for (const value of ["", "abc1234", "abcdefgh", "12345678", "a".repeat(33) + "1"]) {
|
|
assert.equal(validatePassword(value).valid, false, `${value || "empty"} must fail`);
|
|
}
|
|
for (const value of ["abc12345", "Family2026!"]) {
|
|
assert.equal(validatePassword(value).valid, true, `${value} must pass`);
|
|
}
|
|
|
|
console.log("PASSWORD-POLICY-RUNTIME-SMOKE PASS");
|