- Timestamp:
- 14 Oct 2012, 21:02:31 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_authentication.py
r8983 r9334 17 17 ## 18 18 import unittest 19 from datetime import datetime, timedelta 19 20 from zope.authentication.interfaces import IAuthentication 20 21 from zope.component import provideUtility, queryUtility, getGlobalSiteManager … … 66 67 phone = None 67 68 suspended = False 69 temp_password_minutes = 10 70 71 def setTempPassword(self, user, password): 72 passwordmanager = queryUtility(IPasswordManager, 'SSHA') 73 self.temp_password = {} 74 self.temp_password[ 75 'password'] = passwordmanager.encodePassword(password) 76 self.temp_password['user'] = user 77 self.temp_password['timestamp'] = datetime.utcnow() 78 79 def getTempPassword(self): 80 temp_password_dict = getattr(self, 'temp_password', None) 81 if temp_password_dict is not None: 82 delta = timedelta(minutes=self.temp_password_minutes) 83 now = datetime.utcnow() 84 if now < temp_password_dict.get('timestamp') + delta: 85 return temp_password_dict.get('password') 86 else: 87 # Unset temporary password if expired 88 self.temp_password = None 89 return None 68 90 69 91 … … 138 160 return 139 161 162 def test_check_temp_password(self): 163 # make sure that, if a temp password is set, 164 # this password is used for authentication 165 self.account.setPassword('secret') 166 self.fake_stud.setTempPassword(user='beate', password='temp_secret') 167 result1 = self.account.checkPassword('secret') 168 result2 = self.account.checkPassword(None) 169 result3 = self.account.checkPassword('nonsense') 170 result4 = self.account.checkPassword('temp_secret') 171 self.assertEqual(result1, False) 172 self.assertEqual(result2, False) 173 self.assertEqual(result3, False) 174 self.assertEqual(result4, True) 175 # if the temp password is expired, the original password 176 # is used again 177 delta = timedelta(minutes=11) 178 self.fake_stud.temp_password['timestamp'] = datetime.utcnow() - delta 179 result5 = self.account.checkPassword('temp_secret') 180 result6 = self.account.checkPassword('secret') 181 self.assertEqual(result5, False) 182 self.assertEqual(result6, True) 183 return 184 140 185 def test_check_unset_password(self): 141 186 # empty and unset passwords do not match anything
Note: See TracChangeset for help on using the changeset viewer.