fix: randomized_delimiter_join #150
authorDavid Shen <redacted>
Tue, 8 Aug 2023 09:50:51 +0000 (19:50 +1000)
committerDavid Shen <redacted>
Thu, 17 Aug 2023 23:36:04 +0000 (09:36 +1000)
Only insert random delimiter between words.

.gitignore
tests/test_xkcdpass.py
xkcdpass/xkcd_password.py

index ba40f56eb83802658fd8aace001c0daface0e783..cb6df481f5925493e367416754cbda060f5a8861 100644 (file)
@@ -42,4 +42,6 @@ nosetests.xml
 .vscode
 
 # mypy
-.mypy_cache
\ No newline at end of file
+.mypy_cache
+
+.idea/
index 55b7fc3cba9fbad6d2f0c55f2404934cbb06bb5f..50af026cf5ee1b5e69e72ab2c1028d5eb67847de 100644 (file)
@@ -48,6 +48,12 @@ class XkcdPasswordTests(unittest.TestCase):
             delimiter=tdelim)
         self.assertIsNotNone(re.match('([a-z]+(_|$))+', result))
 
+    def test_random_delimiter(self):
+        wordlist = xkcd_password.generate_wordlist(WORDFILE, min_length=3, max_length=3)
+        result = xkcd_password.generate_xkcdpassword(wordlist, numwords=3, random_delimiters=True)
+
+        self.assertEqual(11, len(result))
+
     def test_set_case(self):
         words = "this is only a test".lower().split()
         words_before = set(words)
index c64470d7ccc8f1c888741d7cffb204e35a995103..7733e5ccde465358b24b868498ea5d161a93ec26 100755 (executable)
@@ -368,11 +368,7 @@ def randomized_delimiter_join(words, delimiters=DEFAULT_DELIMITERS):
     Join the words into a password with random delimiters between each word
     """
 
-    final_passwd = ''
-    for word in words:
-        final_passwd += choose_delimiter(delimiters) + word
-
-    return final_passwd + choose_delimiter(delimiters)
+    return ''.join(map(lambda w: w + choose_delimiter(delimiters), words))[:-1]
 
 def choose_delimiter(delimiters):
     """
@@ -496,7 +492,7 @@ class XkcdPassArgumentParser(argparse.ArgumentParser):
         self.add_argument(
             "-D", "--valid-delimiters",
             dest="valid_delimiters", default="", metavar="VALID_DELIMITERS",
-            help=("A string with all valid delimiter charcters."
+            help=("A string with all valid delimiter characters."
                   " For example, '^&*' would use ^, &, or *"))
         self.add_argument(
             "-s", "--separator",
git clone https://git.99rst.org/PROJECT