[Checkins] SVN: zope.password/trunk/ Test whether password managers work with old stored passwords.
Dan Korostelev
nadako at gmail.com
Fri Mar 6 07:23:42 EST 2009
Log message for revision 97566:
Test whether password managers work with old stored passwords.
Add coverage tests. Test the "testing" module.
Improve documentation a bit.
Changed:
_U zope.password/trunk/
U zope.password/trunk/README.txt
U zope.password/trunk/buildout.cfg
U zope.password/trunk/setup.py
U zope.password/trunk/src/zope/password/password.py
U zope.password/trunk/src/zope/password/testing.py
U zope.password/trunk/src/zope/password/tests.py
-=-
Property changes on: zope.password/trunk
___________________________________________________________________
Modified: svn:ignore
- bin
build
dist
lib
develop-eggs
eggs
parts
.installed.cfg
+ bin
build
dist
lib
develop-eggs
eggs
parts
.installed.cfg
coverage
Modified: zope.password/trunk/README.txt
===================================================================
--- zope.password/trunk/README.txt 2009-03-06 12:18:11 UTC (rev 97565)
+++ zope.password/trunk/README.txt 2009-03-06 12:23:42 UTC (rev 97566)
@@ -23,8 +23,7 @@
incorporates a salt into the password when encoding it. This password manager
is compatible with passwords used in LDAP databases.
-It is strongly recommended to use SSHAPasswordManager, as it's the most secure
-one.
+It is strongly recommended to use SSHAPasswordManager, as it's the most secure.
Usage
-----
@@ -33,7 +32,9 @@
interface defines only two methods::
def encodePassword(password):
- """Return encoded data for the password."""
-
+ """Return encoded data for the given password"""
+
def checkPassword(encoded_password, password):
- """Return whether the password coincide with the encoded data."""
+ """Return whether the given encoded data coincide with the given password"""
+
+The implementations mentioned above are in the ``zope.password.password`` module.
Modified: zope.password/trunk/buildout.cfg
===================================================================
--- zope.password/trunk/buildout.cfg 2009-03-06 12:18:11 UTC (rev 97565)
+++ zope.password/trunk/buildout.cfg 2009-03-06 12:23:42 UTC (rev 97566)
@@ -1,7 +1,18 @@
[buildout]
develop = .
-parts = test
+parts = test coverage-test coverage-report
[test]
recipe = zc.recipe.testrunner
eggs = zope.password [test]
+
+[coverage-test]
+recipe = zc.recipe.testrunner
+eggs = zope.password [test]
+defaults = ['--coverage', '../../coverage']
+
+[coverage-report]
+recipe = zc.recipe.egg
+eggs = z3c.coverage
+scripts = coverage=coverage-report
+arguments = ('coverage', 'coverage/report')
Modified: zope.password/trunk/setup.py
===================================================================
--- zope.password/trunk/setup.py 2009-03-06 12:18:11 UTC (rev 97565)
+++ zope.password/trunk/setup.py 2009-03-06 12:23:42 UTC (rev 97566)
@@ -43,7 +43,7 @@
keywords='zope3 zope authentication password',
packages=find_packages('src'),
package_dir = {'': 'src'},
- extras_require=dict(test=['zope.testing']),
+ extras_require=dict(test=['zope.testing', 'zope.component']),
namespace_packages=['zope'],
install_requires=['setuptools',
'zope.interface',
Modified: zope.password/trunk/src/zope/password/password.py
===================================================================
--- zope.password/trunk/src/zope/password/password.py 2009-03-06 12:18:11 UTC (rev 97565)
+++ zope.password/trunk/src/zope/password/password.py 2009-03-06 12:23:42 UTC (rev 97566)
@@ -160,6 +160,17 @@
>>> manager.encodePassword(password) != manager.encodePassword(password)
True
+
+ The old version of this password manager didn't add the {MD5} to
+ passwords. Let's check if it can work with old stored passwords.
+
+ >>> encoded = manager.encodePassword(password, salt="")
+ >>> encoded = encoded[5:]
+ >>> encoded
+ '86dddccec45db4599f1ac00018e54139'
+
+ >>> manager.checkPassword(encoded, password)
+ True
"""
implements(IPasswordManager)
@@ -208,6 +219,18 @@
>>> manager.encodePassword(password) != manager.encodePassword(password)
True
+
+ The old version of this password manager didn't add the {SHA1} to
+ passwords. Let's check if it can work with old stored passwords.
+
+ >>> encoded = manager.encodePassword(password, salt="")
+ >>> encoded = encoded[6:]
+ >>> encoded
+ '04b4eec7154c5f3a2ec6d2956fb80b80dc737402'
+
+ >>> manager.checkPassword(encoded, password)
+ True
+
"""
implements(IPasswordManager)
Modified: zope.password/trunk/src/zope/password/testing.py
===================================================================
--- zope.password/trunk/src/zope/password/testing.py 2009-03-06 12:18:11 UTC (rev 97565)
+++ zope.password/trunk/src/zope/password/testing.py 2009-03-06 12:23:42 UTC (rev 97566)
@@ -25,6 +25,20 @@
def setUpPasswordManagers():
+ """Helper function for setting up password manager utilities for tests
+
+ >>> from zope.component import getUtility
+ >>> setUpPasswordManagers()
+ >>> getUtility(IPasswordManager, 'Plain Text')
+ <zope.password.password.PlainTextPasswordManager object at 0x...>
+ >>> getUtility(IPasswordManager, 'SSHA')
+ <zope.password.password.SSHAPasswordManager object at 0x...>
+ >>> getUtility(IPasswordManager, 'MD5')
+ <zope.password.password.MD5PasswordManager object at 0x...>
+ >>> getUtility(IPasswordManager, 'SHA1')
+ <zope.password.password.SHA1PasswordManager object at 0x...>
+
+ """
provideUtility(PlainTextPasswordManager(), IPasswordManager, 'Plain Text')
provideUtility(SSHAPasswordManager(), IPasswordManager, 'SSHA')
provideUtility(MD5PasswordManager(), IPasswordManager, 'MD5')
Modified: zope.password/trunk/src/zope/password/tests.py
===================================================================
--- zope.password/trunk/src/zope/password/tests.py 2009-03-06 12:18:11 UTC (rev 97565)
+++ zope.password/trunk/src/zope/password/tests.py 2009-03-06 12:23:42 UTC (rev 97566)
@@ -22,4 +22,7 @@
def test_suite():
return unittest.TestSuite((
doctest.DocTestSuite('zope.password.password'),
+ doctest.DocTestSuite(
+ 'zope.password.testing',
+ optionflags=doctest.ELLIPSIS),
))
More information about the Checkins
mailing list