Beispiel #1
0
 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'))
Beispiel #2
0
 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'))
Beispiel #3
0
 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()
Beispiel #4
0
 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')))
Beispiel #5
0
 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()
Beispiel #6
0
 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()
Beispiel #7
0
 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')))
Beispiel #8
0
 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')))
Beispiel #9
0
 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')))
Beispiel #10
0
 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())
Beispiel #11
0
    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
Beispiel #12
0
    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
Beispiel #13
0
 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()
Beispiel #14
0
    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)
Beispiel #15
0
    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)
Beispiel #16
0
 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()