Prechádzať zdrojové kódy

enable leetifying password, and a tests

oz123 11 rokov pred
rodič
commit
e47f28f157
3 zmenil súbory, kde vykonal 21 pridanie a 4 odobranie
  1. 16 0
      pwman/tests/db_tests.py
  2. 1 1
      pwman/ui/cli.py
  3. 4 3
      pwman/ui/tools.py

+ 16 - 0
pwman/tests/db_tests.py

@@ -1,4 +1,5 @@
 from pwman.util.callback import Callback
+from pwman.util.generator import leetlist
 import os
 import os.path
 import sys
@@ -155,6 +156,21 @@ class CLITests(unittest.TestCase):
         password = self.tester.cli.get_password(None, length=7)
         self.assertEqual(len(password), 7)
 
+    def test_random_leet_password(self):
+        password = self.tester.cli.get_password(None, leetify=True, length=7)
+        l_num = 0
+        for v in leetlist.values():
+            if v in password:
+                l_num += 1
+
+        self.assertTrue(l_num > 0)
+
+    def test_leet_password(self):
+        password = self.tester.cli.get_password(None, leetify=True,
+                                                reader=lambda x: u'HAtman')
+        print password
+        self.assertRegexpMatches(password, "(H|h)?(A|a|4)?(T|t|\+)?(m|M|\|\/\|)?(A|a|4)?(N|n|\|\\|)?")
+
     def test_get_url(self):
         url = self.tester.cli.get_url(reader=lambda: u'example.com')
         self.assertEqual(url, u'example.com')

+ 1 - 1
pwman/ui/cli.py

@@ -891,7 +891,7 @@ class BaseCommands(PwmanCliOld):
                      symbols=False, special_signs=False,
                      reader=getpass.getpass, length=None):
         return tools.getpassword("Password (Blank to generate): ",
-                                 reader=reader, length=length)
+                                 reader=reader, length=length, leetify=leetify)
 
 
 class Aliases(BaseCommands, PwmanCliOld):

+ 4 - 3
pwman/ui/tools.py

@@ -167,7 +167,10 @@ def getpassword(question, argsgiven=None,
             return getpassword('', argsgiven=1)
         a2 = reader("[Repeat] %s" % (question.ljust(width)))
         if a1 == a2:
-            return a1
+            if leetify:
+                return generator.leetify(a1)
+            else:
+                return a1
         else:
             print ("Passwords don't match. Try again.")
 
@@ -394,5 +397,3 @@ class CLICallback(Callback):
 
     def getsecret(self, question):
         return getpass.getpass(question + ":")
-
-