From 0ce436c2e9c3607e3d6dff709a822ebea1a23e83 Mon Sep 17 00:00:00 2001 From: antelle Date: Sat, 8 May 2021 17:13:10 +0200 Subject: [PATCH] fixed phonetic password generation --- app/scripts/util/generators/phonetic.js | 3 ++- test/src/util/generators/password-generator.js | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/scripts/util/generators/phonetic.js b/app/scripts/util/generators/phonetic.js index 107ea062..5599496f 100644 --- a/app/scripts/util/generators/phonetic.js +++ b/app/scripts/util/generators/phonetic.js @@ -312,7 +312,8 @@ function generate(options) { word: '', opts: options }; - while (wordObj.word.length < length) { + const safeMaxLength = length + 5; + while (wordObj.word.length < safeMaxLength) { addSyllable(wordObj); } return postProcess(wordObj).substr(0, length); diff --git a/test/src/util/generators/password-generator.js b/test/src/util/generators/password-generator.js index 5afa1dc8..c30131a2 100644 --- a/test/src/util/generators/password-generator.js +++ b/test/src/util/generators/password-generator.js @@ -41,9 +41,11 @@ describe('PasswordGenerator', () => { }); it('should generate a pronounceable password', () => { - expect(PasswordGenerator.generate({ length: 10, name: 'Pronounceable' })).to.match( - /^[a-zA-Z]{10}$/ - ); + for (let i = 0; i < 1000; i++) { + expect(PasswordGenerator.generate({ length: 10, name: 'Pronounceable' })).to.match( + /^[a-zA-Z]{10}$/ + ); + } }); it('should generate a password with pattern', () => {