summaryrefslogtreecommitdiff
path: root/passlib/tests/utils.py
diff options
context:
space:
mode:
authorEli Collins <elic@assurancetechnologies.com>2012-03-12 22:48:23 -0400
committerEli Collins <elic@assurancetechnologies.com>2012-03-12 22:48:23 -0400
commitba4550d9dc9d12bf3ee714fb05040ebbf4adb8e8 (patch)
treee264eb2edf72efbeaf40d1616e4ffb2b528bde2e /passlib/tests/utils.py
parente89ebdf93b92dc018bd3ee1542cc4416b5024ab4 (diff)
downloadpasslib-ba4550d9dc9d12bf3ee714fb05040ebbf4adb8e8.tar.gz
misc bugfixes
* removed cisco_type7 config string, conflicted w/ empty password * fixed unicode type issue in cisco_type7, win32.nthash * bsdi_crypt.min_rounds now 1 (0 results in identical hashes) * fixed unicode type issue in UPASS_TABLE tests for plaintext, ldap_plaintext * relocated test vectors from test_win32 to lmhash/nthash * 8bit test for UnsaltedHash * fuzz testing expanded to use 5-99 char passwords, and 1/10000 are empty *
Diffstat (limited to 'passlib/tests/utils.py')
-rw-r--r--passlib/tests/utils.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/passlib/tests/utils.py b/passlib/tests/utils.py
index 8e2883b..b3ce550 100644
--- a/passlib/tests/utils.py
+++ b/passlib/tests/utils.py
@@ -710,7 +710,7 @@ class HandlerCase(TestCase):
as possible.
"""
handler = self.handler
- alt_backend = _has_other_backends(handler, "os_crypt")
+ alt_backend = _find_alternate_backend(handler, "os_crypt")
if not alt_backend:
raise AssertionError("handler has no available backends!")
import passlib.utils as mod
@@ -921,7 +921,8 @@ class HandlerCase(TestCase):
return
raise self.failureException("failed to find different salt after "
"%d samples" % (samples,))
- sampler(self.do_genconfig)
+ if self.do_genconfig() is not None: # cisco_type7 has salt & no config
+ sampler(self.do_genconfig)
sampler(lambda : self.do_encrypt("stub"))
def test_12_min_salt_size(self):
@@ -1487,7 +1488,7 @@ class HandlerCase(TestCase):
while tick() <= stop:
# generate random password & options
secret = self.get_fuzz_password()
- other = secret.strip()[1:]
+ other = self.mangle_fuzz_password(secret)
if rng.randint(0,1):
secret = secret.encode(self.fuzz_password_encoding)
other = other.encode(self.fuzz_password_encoding)
@@ -1496,7 +1497,8 @@ class HandlerCase(TestCase):
# create new hash
hash = self.do_encrypt(secret, **kwds)
- ##log.debug("fuzz test: hash=%r secret=%r", hash, secret)
+ ##log.debug("fuzz test: hash=%r secret=%r other=%r",
+ ## hash, secret, other)
# run through all verifiers we found.
for verify in verifiers:
@@ -1564,7 +1566,14 @@ class HandlerCase(TestCase):
def get_fuzz_password(self):
"generate random passwords (for fuzz testing)"
- return getrandstr(rng, self.fuzz_password_alphabet, rng.randint(5,15))
+ if rng.random() < .0001:
+ return u('')
+ return getrandstr(rng, self.fuzz_password_alphabet, rng.randint(5,99))
+
+ def mangle_fuzz_password(self, secret):
+ "mangle fuzz-testing password so it doesn't match"
+ secret = secret.strip()[1:]
+ return secret or self.get_fuzz_password()
def get_fuzz_settings(self):
"generate random settings (for fuzz testing)"
@@ -1711,7 +1720,7 @@ def _enable_backend_case(handler, backend):
return True, None
from passlib.utils import has_crypt
if backend == "os_crypt" and has_crypt:
- if enable_option("cover") and _has_other_backends(handler, "os_crypt"):
+ if enable_option("cover") and _find_alternate_backend(handler, "os_crypt"):
#in this case, HandlerCase will monkeypatch os_crypt
#to use another backend, just so we can test os_crypt fully.
return True, None
@@ -1733,7 +1742,7 @@ def _is_default_backend(handler, name):
finally:
handler.set_backend(orig)
-def _has_other_backends(handler, ignore):
+def _find_alternate_backend(handler, ignore):
"helper to check if alternate backend is available"
for name in handler.backends:
if name != ignore and handler.has_backend(name):