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 testUniqueNameConstraint(self): """ An C{IntegrityError} is raised if a L{User} with a duplicate username is added to the database. """ self.store.add( User(u'username', 'password-hash', u'User', u'*****@*****.**', Role.USER)) self.store.flush() self.store.add( User(u'username', 'password-hash', u'User', u'*****@*****.**', Role.USER)) self.assertRaises(IntegrityError, self.store.flush) self.store.rollback()
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 testIsUser(self): """ L{User.isUser} returns C{True} if the L{User} has the L{Role.USER}. """ user = self.store.add( User(u'username', 'password-hash', u'John Doe', u'*****@*****.**', Role.USER)) self.assertTrue(user.isUser()) self.assertFalse(user.isAnonymous()) self.assertFalse(user.isSuperuser())
def createTestUser(self, username): """ Create a test L{User} using low level functions to avoid integrity checks made by high level ones. @param username: The username of the new L{User}. @return: A L{User} instance. """ user = User(username, 'hash', u'Name', u'*****@*****.**', Role.USER) namespace = Namespace(user, username, username) self.store.add(user) self.store.add(namespace) user.namespaceID = namespace.id createTagValue(user.id, self.usernameTag.id, user.objectID, username) createTagValue(user.id, self.nameTag.id, user.objectID, u'Name') createTagValue(user.id, self.emailTag.id, user.objectID, u'*****@*****.**') createTagValue(user.id, self.aboutTag.id, user.objectID, u'@%s' % username) return user
def testUniquePathConstraint(self): """ An C{IntegrityError} is raised if a L{Namespace} with a duplicate name is added to the database. """ user = User(u'name', 'password-hash', u'User', u'*****@*****.**', Role.USER) self.store.add(user) self.store.add(Namespace(user, u'name', u'name')) self.store.flush() self.store.add(Namespace(user, u'name', u'name')) self.assertRaises(IntegrityError, self.store.flush) self.store.rollback()
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)
def testUniqueObjectIDConstraint(self): """ An C{IntegrityError} is raised if a L{Namespace} with a duplicate object ID is added to the database. """ user = User(u'name', 'password-hash', u'User', u'*****@*****.**', Role.USER) self.store.add(user) namespace1 = Namespace(user, u'name1', u'name1') self.store.add(namespace1) self.store.flush() namespace2 = Namespace(user, u'name2', u'name2') namespace2.objectID = namespace1.objectID self.store.add(namespace2) self.assertRaises(IntegrityError, self.store.flush) self.store.rollback()