14 lines
795 B
JavaScript
14 lines
795 B
JavaScript
const fs = require('fs');
|
|
const vm = require('vm');
|
|
const assert = require('assert');
|
|
const source = fs.readFileSync('quickshell/.config/quickshell/labfy-lock/AuthGate.js', 'utf8');
|
|
const context = vm.createContext({});
|
|
vm.runInContext(source, context);
|
|
const allowed = context.mayUnlock;
|
|
const Success = 0, Failed = 1, Error = 2, MaxTries = 3;
|
|
assert.equal(allowed(true, false, true, Success, Success), true);
|
|
for (const result of [Failed, Error, MaxTries])
|
|
assert.equal(allowed(true, false, true, result, Success), false);
|
|
assert.equal(allowed(true, true, true, Success, Success), false); // late result after abort
|
|
assert.equal(allowed(false, false, true, Success, Success), false); // inactive generation
|
|
assert.equal(allowed(true, false, false, Success, Success), false); // not secure
|