def assert_valid_password(self, user, hash=UNSET, saved=None):
"""check that user object has a usuable password hash.
:param hash: optionally check it has this exact hash
:param saved: check that mock commit history
for user.password matches this list
"""
if hash is UNSET:
self.assertNotEqual(user.password, "!")
self.assertNotEqual(user.password, None)
else:
self.assertEqual(user.password, hash)
self.assertTrue(user.has_usable_password(),
"hash should be usable: %r" % (user.password,))
self.assertEqual(user.pop_saved_passwords(),
[] if saved is None else [saved])
python类has_usable_password()的实例源码
def assert_valid_password(self, user, hash=UNSET, saved=None):
"""check that user object has a usuable password hash.
:param hash: optionally check it has this exact hash
:param saved: check that mock commit history
for user.password matches this list
"""
if hash is UNSET:
self.assertNotEqual(user.password, "!")
self.assertNotEqual(user.password, None)
else:
self.assertEqual(user.password, hash)
if has_django1 or self.patched:
self.assertTrue(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(),
[] if saved is None else [saved])
def assert_valid_password(self, user, hash=UNSET, saved=None):
"""check that user object has a usuable password hash.
:param hash: optionally check it has this exact hash
:param saved: check that mock commit history
for user.password matches this list
"""
if hash is UNSET:
self.assertNotEqual(user.password, "!")
self.assertNotEqual(user.password, None)
else:
self.assertEqual(user.password, hash)
if has_django1 or self.patched:
self.assertTrue(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(),
[] if saved is None else [saved])
def assert_valid_password(self, user, hash=UNSET, saved=None):
"""check that user object has a usuable password hash.
:param hash: optionally check it has this exact hash
:param saved: check that mock commit history
for user.password matches this list
"""
if hash is UNSET:
self.assertNotEqual(user.password, "!")
self.assertNotEqual(user.password, None)
else:
self.assertEqual(user.password, hash)
self.assertTrue(user.has_usable_password(),
"hash should be usable: %r" % (user.password,))
self.assertEqual(user.pop_saved_passwords(),
[] if saved is None else [saved])
def assert_valid_password(self, user, hash=UNSET, saved=None):
"""check that user object has a usuable password hash.
:param hash: optionally check it has this exact hash
:param saved: check that mock commit history
for user.password matches this list
"""
if hash is UNSET:
self.assertNotEqual(user.password, "!")
self.assertNotEqual(user.password, None)
else:
self.assertEqual(user.password, hash)
if has_django1 or self.patched:
self.assertTrue(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(),
[] if saved is None else [saved])
def assert_valid_password(self, user, hash=UNSET, saved=None):
"""check that user object has a usuable password hash.
:param hash: optionally check it has this exact hash
:param saved: check that mock commit history
for user.password matches this list
"""
if hash is UNSET:
self.assertNotEqual(user.password, "!")
self.assertNotEqual(user.password, None)
else:
self.assertEqual(user.password, hash)
if has_django1 or self.patched:
self.assertTrue(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(),
[] if saved is None else [saved])
def assert_unusable_password(self, user):
"""check that user object is set to 'unusable password' constant"""
self.assertTrue(user.password.startswith("!"))
self.assertFalse(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(), [])
def _iter_patch_candidates(cls):
"""helper to scan for monkeypatches.
returns tuple containing:
* object (module or class)
* attribute of object
* value of attribute
* whether it should or should not be patched
"""
# XXX: this and assert_unpatched() could probably be refactored to use
# the PatchManager class to do the heavy lifting.
from django.contrib.auth import models
user_attrs = ["check_password", "set_password"]
model_attrs = ["check_password"]
objs = [(models, model_attrs), (models.User, user_attrs)]
if has_django14:
from django.contrib.auth import hashers
model_attrs.append("make_password")
objs.append((hashers, ["check_password", "make_password",
"get_hasher", "identify_hasher"]))
if has_django0:
user_attrs.extend(["has_usable_password", "set_unusable_password"])
for obj, patched in objs:
for attr in dir(obj):
if attr.startswith("_"):
continue
value = obj.__dict__.get(attr, UNSET) # can't use getattr() due to GAE
if value is UNSET and attr not in patched:
continue
value = get_method_function(value)
source = getattr(value, "__module__", None)
if source:
yield obj, attr, source, (attr in patched)
#===================================================================
# verify current patch state
#===================================================================
def assert_unusable_password(self, user):
"""check that user object is set to 'unusable password' constant"""
if DJANGO_VERSION >= (1,6):
# 1.6 on adds a random(?) suffix
self.assertTrue(user.password.startswith("!"))
else:
self.assertEqual(user.password, "!")
if has_django1 or self.patched:
self.assertFalse(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(), [])
def _iter_patch_candidates(cls):
"""helper to scan for monkeypatches.
returns tuple containing:
* object (module or class)
* attribute of object
* value of attribute
* whether it should or should not be patched
"""
# XXX: this and assert_unpatched() could probably be refactored to use
# the PatchManager class to do the heavy lifting.
from django.contrib.auth import models
user_attrs = ["check_password", "set_password"]
model_attrs = ["check_password"]
objs = [(models, model_attrs), (models.User, user_attrs)]
if has_django14:
from django.contrib.auth import hashers
model_attrs.append("make_password")
objs.append((hashers, ["check_password", "make_password",
"get_hasher", "identify_hasher"]))
if has_django0:
user_attrs.extend(["has_usable_password", "set_unusable_password"])
for obj, patched in objs:
for attr in dir(obj):
if attr.startswith("_"):
continue
value = obj.__dict__.get(attr, UNSET) # can't use getattr() due to GAE
if value is UNSET and attr not in patched:
continue
value = get_method_function(value)
source = getattr(value, "__module__", None)
if source:
yield obj, attr, source, (attr in patched)
#===================================================================
# verify current patch state
#===================================================================
def assert_unusable_password(self, user):
"""check that user object is set to 'unusable password' constant"""
if DJANGO_VERSION >= (1,6):
# 1.6 on adds a random(?) suffix
self.assertTrue(user.password.startswith("!"))
else:
self.assertEqual(user.password, "!")
if has_django1 or self.patched:
self.assertFalse(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(), [])
def assert_unusable_password(self, user):
"""check that user object is set to 'unusable password' constant"""
self.assertTrue(user.password.startswith("!"))
self.assertFalse(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(), [])
def _iter_patch_candidates(cls):
"""helper to scan for monkeypatches.
returns tuple containing:
* object (module or class)
* attribute of object
* value of attribute
* whether it should or should not be patched
"""
# XXX: this and assert_unpatched() could probably be refactored to use
# the PatchManager class to do the heavy lifting.
from django.contrib.auth import models
user_attrs = ["check_password", "set_password"]
model_attrs = ["check_password"]
objs = [(models, model_attrs), (models.User, user_attrs)]
if has_django14:
from django.contrib.auth import hashers
model_attrs.append("make_password")
objs.append((hashers, ["check_password", "make_password",
"get_hasher", "identify_hasher"]))
if has_django0:
user_attrs.extend(["has_usable_password", "set_unusable_password"])
for obj, patched in objs:
for attr in dir(obj):
if attr.startswith("_"):
continue
value = obj.__dict__.get(attr, UNSET) # can't use getattr() due to GAE
if value is UNSET and attr not in patched:
continue
value = get_method_function(value)
source = getattr(value, "__module__", None)
if source:
yield obj, attr, source, (attr in patched)
#===================================================================
# verify current patch state
#===================================================================
def assert_unusable_password(self, user):
"""check that user object is set to 'unusable password' constant"""
if DJANGO_VERSION >= (1,6):
# 1.6 on adds a random(?) suffix
self.assertTrue(user.password.startswith("!"))
else:
self.assertEqual(user.password, "!")
if has_django1 or self.patched:
self.assertFalse(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(), [])
def _iter_patch_candidates(cls):
"""helper to scan for monkeypatches.
returns tuple containing:
* object (module or class)
* attribute of object
* value of attribute
* whether it should or should not be patched
"""
# XXX: this and assert_unpatched() could probably be refactored to use
# the PatchManager class to do the heavy lifting.
from django.contrib.auth import models
user_attrs = ["check_password", "set_password"]
model_attrs = ["check_password"]
objs = [(models, model_attrs), (models.User, user_attrs)]
if has_django14:
from django.contrib.auth import hashers
model_attrs.append("make_password")
objs.append((hashers, ["check_password", "make_password",
"get_hasher", "identify_hasher"]))
if has_django0:
user_attrs.extend(["has_usable_password", "set_unusable_password"])
for obj, patched in objs:
for attr in dir(obj):
if attr.startswith("_"):
continue
value = obj.__dict__.get(attr, UNSET) # can't use getattr() due to GAE
if value is UNSET and attr not in patched:
continue
value = get_method_function(value)
source = getattr(value, "__module__", None)
if source:
yield obj, attr, source, (attr in patched)
#===================================================================
# verify current patch state
#===================================================================
def assert_unusable_password(self, user):
"""check that user object is set to 'unusable password' constant"""
if DJANGO_VERSION >= (1,6):
# 1.6 on adds a random(?) suffix
self.assertTrue(user.password.startswith("!"))
else:
self.assertEqual(user.password, "!")
if has_django1 or self.patched:
self.assertFalse(user.has_usable_password())
self.assertEqual(user.pop_saved_passwords(), [])