1
0
Fork 0
gnuviechadmin-historic/gnuviechadmin/tests/functional/test_util_passwordutils.py
Jan Dittberner 065996e0df Unit tests and password validation code
* provide nose based unit test infrastructure (fixes #20)
 * create unit tests for gnuviechadmin.util.passwordutils
 * add password validation function to gnuviechadmin.util.passwordutils
   (fixes #19)
 * make new files PEP8 clean (addresses #18)


git-svn-id: file:///home/www/usr01/svn/gnuviechadmin/trunk@258 a67ec6bc-e5d5-0310-a910-815c51eb3124
2008-06-07 14:48:52 +00:00

72 lines
2.9 KiB
Python

# -*- coding: utf-8 -*-
#
# Copyright (C) 2008 by Jan Dittberner.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id$
"""Unit tests for gnuviechadmin.util.passwordutils.
"""
from gnuviechadmin.util import passwordutils
from unittest import TestCase
import crypt
class TestPasswordUtils(TestCase):
weakpw = "test"
strongpw = "Str0ng#l33tP4assword"
def test_generatepassword(self):
password = passwordutils.generatepassword()
self.assert_(password is not None)
def test_checkpassword(self):
weakcheck = passwordutils.checkpassword(self.weakpw)
self.assertEqual(weakcheck, None,
"checking a weak password should return ''None''." + \
"%s was returned." % weakcheck)
strongcheck = passwordutils.checkpassword(self.strongpw)
self.assertEqual(self.strongpw, strongcheck,
'checking a strong password should return the ' + \
' the password. %s was returned.' % strongcheck)
def test_md5_crypt_password(self):
encrypted = passwordutils.md5_crypt_password(self.strongpw)
self.assertNotEqual(self.strongpw, encrypted)
self.assertEqual(encrypted, crypt.crypt(self.strongpw, encrypted))
def test_get_pw_tuple(self):
def check_tuple(pwtuple):
self.assertEqual(len(pwtuple), 2)
self.assertNotEqual(pwtuple[0], None)
self.assert_(len(pwtuple[0]) >= 8)
self.assertEqual(pwtuple[1], crypt.crypt(pwtuple[0], pwtuple[1]))
check_tuple(passwordutils.get_pw_tuple())
weakpwtuple = passwordutils.get_pw_tuple(self.weakpw)
check_tuple(weakpwtuple)
self.assertNotEqual(self.weakpw, weakpwtuple[0])
strongpwtuple = passwordutils.get_pw_tuple(self.strongpw)
check_tuple(strongpwtuple)
self.assertEqual(self.strongpw, strongpwtuple[0])
def test_validate_password(self):
hashed = passwordutils.md5_crypt_password(self.strongpw)
self.assertEqual(passwordutils.validate_password(hashed,
self.strongpw), True)
self.assertEqual(passwordutils.validate_password(self.weakpw,
self.strongpw), False)