|
- var assert = chai.assert;
-
- describe('LessPass v2', function () {
- it('render password use remainder of long division beetween entropy and set of chars length as an index ', function () {
- var entropy = 'dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e';
- var setOfCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- assert.equal('y', LessPass._renderPassword(entropy, setOfCharacters)[0]);
- });
- it('render password use quotient as second entropy recursively', function () {
- var entropy = 'dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e';
- var setOfCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- assert.equal('5', LessPass._renderPassword(entropy, setOfCharacters)[1]);
- });
- it('render password has default length of 14', function () {
- var entropy = 'dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e';
- var setOfCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- assert.equal(14, LessPass._renderPassword(entropy, setOfCharacters).length);
- });
- it('render password can specify length', function () {
- var entropy = 'dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e';
- var setOfCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- var passwordProfile = {
- length: 20
- };
- assert.equal(20, LessPass._renderPassword(entropy, setOfCharacters, passwordProfile).length);
- });
- it('include one char per set of characters', function () {
- var password = LessPass._includeOneCharPerSetOfCharacters('123456', bigInt(7 * 6 + 2), 'uT');
- assert.equal('T12u3456', password);
- });
- it('render password return at least one char in every characters set', function () {
- var entropy = 'dc33d431bce2b01182c613382483ccdb0e2f66482cbba5e9d07dab34acc7eb1e';
- var setOfCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~';
- var passwordProfile = {
- length: 6,
- lowercase: true,
- uppercase: true,
- digits: true,
- symbols: true,
- };
- var generatedPassword = LessPass._renderPassword(entropy, setOfCharacters, passwordProfile);
- var passwordLength = generatedPassword.length;
- var lowercaseOk = false;
- var uppercaseOk = false;
- var digitsOk = false;
- var symbolsOk = false;
- while (passwordLength--) {
- if ('abcdefghijklmnopqrstuvwxyz'.indexOf(generatedPassword[passwordLength]) !== -1) {
- lowercaseOk = true;
- }
- if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(generatedPassword[passwordLength]) !== -1) {
- uppercaseOk = true;
- }
- if ('0123456789'.indexOf(generatedPassword[passwordLength]) !== -1) {
- digitsOk = true;
- }
- if ('!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'.indexOf(generatedPassword[passwordLength]) !== -1) {
- symbolsOk = true;
- }
- }
- assert.equal(6, generatedPassword.length);
- assert(lowercaseOk && uppercaseOk && digitsOk && symbolsOk, 'there is no at least one char in every characters set');
- });
- });
|