def testClear(self): """L{UserCache.clear} removes users objects from the cache.""" user = User(u'testuser', 'hash', u'fullname', u'*****@*****.**', Role.USER) user.objectID = UUID('04585bec-28cf-4a21-bc3e-081f3ed62680') user.id = 1 self.userCache.save(user) self.assertNotEqual({}, json.loads(self.cache.get('user:testuser'))) self.userCache.clear(u'testuser') self.assertEqual(None, self.cache.get('user:testuser'))
def testSaveWithNoneEmail(self): """L{UserCache.save} doesn't store the email if it's C{None}.""" user = User(u'testuser', 'hash', u'fullname', None, Role.USER) user.objectID = UUID('04585bec-28cf-4a21-bc3e-081f3ed62680') user.id = 1 self.userCache.save(user) expected = {'username': '******', 'objectID': '04585bec-28cf-4a21-bc3e-081f3ed62680', 'passwordHash': 'hash', 'id': 1, 'role': Role.USER.id, 'email': None, 'fullname': 'fullname'} self.assertEqual(expected, json.loads(self.cache.get('user:testuser')))
def testUniqueObjectIDConstraint(self): """ An C{IntegrityError} is raised if a L{User} with a duplicate object ID is added to the database. """ user1 = User(u'username1', 'password-hash', u'User1', u'*****@*****.**', Role.USER) self.store.add(user1) self.store.flush() user2 = User(u'username2', 'password-hash', u'User2', u'*****@*****.**', Role.USER) user2.objectID = user1.objectID self.store.add(user2) self.assertRaises(IntegrityError, self.store.flush) self.store.rollback()
def testSave(self): """L{UserCache.save} stores a L{User} object in the cache.""" user = User(u'testuser', 'hash', u'fullname', u'*****@*****.**', Role.USER) user.objectID = UUID('04585bec-28cf-4a21-bc3e-081f3ed62680') user.id = 1 self.userCache.save(user) expected = {'username': '******', 'objectID': '04585bec-28cf-4a21-bc3e-081f3ed62680', 'passwordHash': 'hash', 'id': 1, 'role': Role.USER.id, 'fullname': 'fullname', 'email': '*****@*****.**'} self.assertEqual(expected, json.loads(self.cache.get('user:testuser')))
def testSaveWithNoneEmail(self): """L{UserCache.save} doesn't store the email if it's C{None}.""" user = User(u'testuser', 'hash', u'fullname', None, Role.USER) user.objectID = UUID('04585bec-28cf-4a21-bc3e-081f3ed62680') user.id = 1 self.userCache.save(user) expected = { 'username': '******', 'objectID': '04585bec-28cf-4a21-bc3e-081f3ed62680', 'passwordHash': 'hash', 'id': 1, 'role': Role.USER.id, 'email': None, 'fullname': 'fullname' } self.assertEqual(expected, json.loads(self.cache.get('user:testuser')))
def testSave(self): """L{UserCache.save} stores a L{User} object in the cache.""" user = User(u'testuser', 'hash', u'fullname', u'*****@*****.**', Role.USER) user.objectID = UUID('04585bec-28cf-4a21-bc3e-081f3ed62680') user.id = 1 self.userCache.save(user) expected = { 'username': '******', 'objectID': '04585bec-28cf-4a21-bc3e-081f3ed62680', 'passwordHash': 'hash', 'id': 1, 'role': Role.USER.id, 'fullname': 'fullname', 'email': '*****@*****.**' } self.assertEqual(expected, json.loads(self.cache.get('user:testuser')))
def get(self, username): """Get a L{User} object from the cache. @param username: The username of the L{User} as C{unicode}. @return: A L{CacheResult} object with the L{User} in the L{results} field if it's found or the username in the C{uncachedValues} field if it's not found. """ result = self.getValues([username]) if result is None or result == [None]: return CacheResult(None, username) userdict = json.loads(result[0]) user = User(username=userdict['username'], passwordHash=str(userdict['passwordHash']), fullname=userdict['fullname'], email=userdict['email'], role=Role.fromID(userdict['role'])) user.id = userdict['id'] user.objectID = UUID(userdict['objectID']) return CacheResult(user, None)