Пример #1
0
    def test_case_insensitive(self):
        """Check if same values in lower or upper case produce the same UUID"""

        uuid_a = uuid('scm',
                      email='*****@*****.**',
                      name='John Smith',
                      username='******')
        uuid_b = uuid('SCM',
                      email='*****@*****.**',
                      name='John Smith',
                      username='******')

        self.assertEqual(uuid_a, uuid_b)

        uuid_c = uuid('scm',
                      email='*****@*****.**',
                      name='john smith',
                      username='******')

        self.assertEqual(uuid_c, uuid_a)

        uuid_d = uuid('scm',
                      email='*****@*****.**',
                      name='John Smith',
                      username='******')

        self.assertEqual(uuid_d, uuid_a)

        uuid_e = uuid('scm',
                      email='*****@*****.**',
                      name='John Smith',
                      username='******')

        self.assertEqual(uuid_e, uuid_a)
    def test_surrogate_escape(self):
        """Check if no errors are raised for invalid UTF-8 chars"""

        if sys.version_info[0] >= 3:
            result = uuid('scm', name="Mishal\udcc5 Pytasz")
            self.assertEqual(result,
                             '625166bdc2c4f1a207d39eb8d25315010babd73b')
Пример #3
0
    def __get_sh_ids_cache(self, identity_tuple, backend_name):

        # Convert tuple to the original dict
        identity = dict((x, y) for x, y in identity_tuple)

        if not self.sortinghat:
            raise RuntimeError("Sorting Hat not active during enrich")

        iden = {}
        sh_ids = {"id": None, "uuid": None}

        for field in ['email', 'name', 'username']:
            iden[field] = None
            if field in identity:
                iden[field] = identity[field]

        if not iden['name'] and not iden['email'] and not iden['username']:
            logger.warning("Name, email and username are none in %s",
                           backend_name)
            return sh_ids

        try:
            # Find the uuid for a given id.
            id = utils.uuid(backend_name,
                            email=iden['email'],
                            name=iden['name'],
                            username=iden['username'])

            if not id:
                logger.warning(
                    "Id not found in SortingHat for name: %s, email: %s and username: %s in %s",
                    str(iden['name']), str(iden['email']),
                    str(iden['username']), backend_name)
                return sh_ids

            with self.sh_db.connect() as session:
                identity_found = api.find_identity(session, id)

                if not identity_found:
                    return sh_ids

                sh_ids['id'] = identity_found.id
                sh_ids['uuid'] = identity_found.uuid
        except InvalidValueError:
            msg = "None Identity found {}".format(backend_name)
            logger.debug(msg)
        except NotFoundError:
            msg = "Identity not found in SortingHat {}".format(backend_name)
            logger.debug(msg)
        except UnicodeEncodeError:
            msg = "UnicodeEncodeError {}, identity: {}".format(
                backend_name, identity)
            logger.error(msg)
        except Exception as ex:
            msg = "Unknown error adding identity in SortingHat, {}, {}, {}".format(
                ex, backend_name, identity)
            logger.error(msg)

        return sh_ids
Пример #4
0
    def test_uuid(self):
        """Check whether the function returns the expected UUID"""

        result = uuid('scm',
                      email='*****@*****.**',
                      name='John Smith',
                      username='******')
        self.assertEqual(result, '03e12d00e37fd45593c49a5a5a1652deca4cf302')

        result = uuid('scm', email='*****@*****.**')
        self.assertEqual(result, 'a4d4845e1b1e0edb85e37b04553026a6b76fc4ac')

        result = uuid('scm', email='', name='John Smith', username='******')
        self.assertEqual(result, 'b63e8e4e67381271e67e55d46a63b63fc306119f')

        result = uuid('scm', email='', name='John Smith', username='')
        self.assertEqual(result, 'e2189be970c39c26b84d815f913b32ca953db940')

        result = uuid('scm', email='', name='', username='******')
        self.assertEqual(result, '6e7ce2426673f8a23a72a343b1382dda84c0078b')

        result = uuid('scm',
                      email='',
                      name=u'John Ca\xf1as',
                      username='******')
        self.assertEqual(result, 'ebc02af40a98d4ae76e61804cff6b383a1c7293e')

        result = uuid('scm', email='', name="Max Müster", username='******')
        self.assertEqual(result, 'b16c494e93c791b4805ea0bdb4eca39ee033a759')
Пример #5
0
    def test_uuid(self):
        """Check whether the function returns the expected UUID"""

        result = uuid('scm',
                      email='*****@*****.**',
                      name='John Smith',
                      username='******')
        self.assertEqual(result, 'a9b403e150dd4af8953a52a4bb841051e4b705d9')

        result = uuid('scm', email='*****@*****.**')
        self.assertEqual(result, '334da68fcd3da4e799791f73dfada2afb22648c6')

        result = uuid('scm', email='', name='John Smith', username='******')
        self.assertEqual(result, 'a4b4591c3a2171710c157d7c278ea3cc03becf81')

        result = uuid('scm', email='', name='John Smith', username='')
        self.assertEqual(result, '76e3624e24aacae178d05352ad9a871dfaf81c13')

        result = uuid('scm', email='', name='', username='******')
        self.assertEqual(result, '6e7ce2426673f8a23a72a343b1382dda84c0078b')

        result = uuid('scm', email='', name='John Ca\xf1as', username='******')
        self.assertEqual(result, 'c88e126749ff006eb1eea25e4bb4c1c125185ed2')

        result = uuid('scm', email='', name="Max Müster", username='******')
        self.assertEqual(result, '9a0498297d9f0b7e4baf3e6b3740d22d2257367c')
Пример #6
0
    def test_uuid(self):
        """Check whether the function returns the expected UUID"""

        result = uuid('scm', email='*****@*****.**',
                      name='John Smith', username='******')
        self.assertEqual(result, '03e12d00e37fd45593c49a5a5a1652deca4cf302')

        result = uuid('scm', email='*****@*****.**')
        self.assertEqual(result, 'a4d4845e1b1e0edb85e37b04553026a6b76fc4ac')

        result= uuid('scm', email='', name='John Smith',
                     username='******')
        self.assertEqual(result, 'b63e8e4e67381271e67e55d46a63b63fc306119f')

        result = uuid('scm', email='', name='John Smith',
                      username='')
        self.assertEqual(result, 'e2189be970c39c26b84d815f913b32ca953db940')

        result = uuid('scm', email='', name='', username='******')
        self.assertEqual(result, '6e7ce2426673f8a23a72a343b1382dda84c0078b')

        result = uuid('scm', email='', name=u'John Ca\xf1as', username='******')
        self.assertEqual(result, 'ebc02af40a98d4ae76e61804cff6b383a1c7293e')

        result = uuid('scm', email='', name="Max Müster", username='******')
        self.assertEqual(result, 'b16c494e93c791b4805ea0bdb4eca39ee033a759')
Пример #7
0
    def test_uuid(self):
        """Check whether the function returns the expected UUID"""

        result = uuid('scm', email='*****@*****.**',
                      name='John Smith', username='******')
        self.assertEqual(result, 'a9b403e150dd4af8953a52a4bb841051e4b705d9')

        result = uuid('scm', email='*****@*****.**')
        self.assertEqual(result, '334da68fcd3da4e799791f73dfada2afb22648c6')

        result= uuid('scm', email='', name='John Smith',
                     username='******')
        self.assertEqual(result, 'a4b4591c3a2171710c157d7c278ea3cc03becf81')

        result = uuid('scm', email='', name='John Smith',
                      username='')
        self.assertEqual(result, '76e3624e24aacae178d05352ad9a871dfaf81c13')

        result = uuid('scm', email='', name='', username='******')
        self.assertEqual(result, '6e7ce2426673f8a23a72a343b1382dda84c0078b')

        result = uuid('scm', email='', name=u'John Ca\xf1as', username='******')
        self.assertEqual(result, 'c88e126749ff006eb1eea25e4bb4c1c125185ed2')

        result = uuid('scm', email='', name="Max Müster", username='******')
        self.assertEqual(result, '9a0498297d9f0b7e4baf3e6b3740d22d2257367c')
Пример #8
0
    def test_case_insensitive(self):
        """Check if same values in lower or upper case produce the same UUID"""

        uuid_a = uuid('scm', email='*****@*****.**',
                      name='John Smith', username='******')
        uuid_b = uuid('SCM', email='*****@*****.**',
                      name='John Smith', username='******')

        self.assertEqual(uuid_a, uuid_b)

        uuid_c = uuid('scm', email='*****@*****.**',
                      name='john smith', username='******')

        self.assertEqual(uuid_c, uuid_a)

        uuid_d = uuid('scm', email='*****@*****.**',
                      name='John Smith', username='******')

        self.assertEqual(uuid_d, uuid_a)

        uuid_e = uuid('scm', email='*****@*****.**',
                      name='John Smith', username='******')

        self.assertEqual(uuid_e, uuid_a)
Пример #9
0
    def __get_sh_ids_cache(self, identity_tuple, backend_name):

        # Convert tuple to the original dict
        identity = dict((x, y) for x, y in identity_tuple)

        if not self.sortinghat:
            raise RuntimeError("Sorting Hat not active during enrich")

        iden = {}
        sh_ids = {"id": None, "uuid": None}

        for field in ['email', 'name', 'username']:
            iden[field] = None
            if field in identity:
                iden[field] = identity[field]

        try:
            # Find the uuid for a given id. A bit hacky in SH yet
            api.add_identity(self.sh_db, backend_name, iden['email'],
                             iden['name'], iden['username'])
        except AlreadyExistsError as ex:
            uuid = ex.uuid
            u = api.unique_identities(self.sh_db, uuid)[0]
            sh_ids['id'] = utils.uuid(backend_name,
                                      email=iden['email'],
                                      name=iden['name'],
                                      username=iden['username'])
            sh_ids['uuid'] = u.uuid
        except WrappedValueError:
            logger.warning("None Identity found %s", backend_name)
            logger.warning(identity)
        except NotFoundError:
            logger.error("Identity not found in Sorting Hat %s", backend_name)
            logger.error(identity)
        except UnicodeEncodeError:
            logger.error("UnicodeEncodeError %s", backend_name)
            logger.error(identity)
        except Exception as ex:
            logger.error("Unknown error adding sorting hat identity %s %s", ex,
                         backend_name)
            logger.error(identity)
            logger.error(ex)

        return sh_ids
Пример #10
0
    def __get_sh_ids_cache(self, identity_tuple, backend_name):

        # Convert tuple to the original dict
        identity = dict((x, y) for x, y in identity_tuple)

        if not self.sortinghat:
            raise RuntimeError("Sorting Hat not active during enrich")

        iden = {}
        sh_ids = {"id": None, "uuid": None}

        for field in ['email', 'name', 'username']:
            iden[field] = None
            if field in identity:
                iden[field] = identity[field]

        try:
            # Find the uuid for a given id.
            id = utils.uuid(backend_name,
                            email=iden['email'],
                            name=iden['name'],
                            username=iden['username'])
            with self.sh_db.connect() as session:
                identity_found = api.find_identity(session, id)
                sh_ids['id'] = identity_found.id
                sh_ids['uuid'] = identity_found.uuid
        except InvalidValueError:
            logger.warning("None Identity found %s", backend_name)
            logger.warning(identity)
        except NotFoundError:
            logger.error("Identity not found in Sorting Hat %s", backend_name)
            logger.error(identity)
        except UnicodeEncodeError:
            logger.error("UnicodeEncodeError %s", backend_name)
            logger.error(identity)
        except Exception as ex:
            logger.error("Unknown error adding sorting hat identity %s %s", ex,
                         backend_name)
            logger.error(identity)
            logger.error(ex)

        return sh_ids
Пример #11
0
    def test_case_unaccent_name(self):
        """Check if same values accent or unaccent produce the same UUID"""

        accent_result = uuid('scm', email='', name="Max Müster", username='******')
        unaccent_result = uuid('scm', email='', name="Max Muster", username='******')
        self.assertEqual(accent_result, unaccent_result)
        self.assertEqual(accent_result, '9a0498297d9f0b7e4baf3e6b3740d22d2257367c')

        accent_result = uuid('scm', email='', name="Santiago Dueñas", username='')
        unaccent_result = uuid('scm', email='', name="Santiago Duenas", username='')
        self.assertEqual(accent_result, unaccent_result)
        self.assertEqual(accent_result, '0f1dd18839007ee8a11d02572ca0a0f4eedaf2cd')

        accent_result = uuid('scm', email='', name="Tomáš Čechvala", username='')
        partial_accent_result = uuid('scm', email='', name="Tomáš Cechvala", username='')
        unaccent_result = uuid('scm', email='', name="Tomas Cechvala", username='')
        self.assertEqual(accent_result, unaccent_result)
        self.assertEqual(accent_result, partial_accent_result)
Пример #12
0
    def __get_sh_ids_cache(self, identity_tuple, backend_name):

        # Convert tuple to the original dict
        identity = dict((x, y) for x, y in identity_tuple)

        if not self.sortinghat:
            raise RuntimeError("Sorting Hat not active during enrich")

        iden = {}
        sh_ids = {"id": None, "uuid": None}

        for field in ['email', 'name', 'username']:
            iden[field] = None
            if field in identity:
                iden[field] = identity[field]

        try:
            # Find the uuid for a given id. A bit hacky in SH yet
            api.add_identity(self.sh_db, backend_name,
                             iden['email'], iden['name'],
                             iden['username'])
        except AlreadyExistsError as ex:
            uuid = ex.uuid
            u = api.unique_identities(self.sh_db, uuid)[0]
            sh_ids['id'] = utils.uuid(backend_name, email=iden['email'],
                                      name=iden['name'], username=iden['username'])
            sh_ids['uuid'] = u.uuid
        except WrappedValueError:
            logger.error("None Identity found")
            logger.error(identity)
        except NotFoundError:
            logger.error("Identity not found in Sorting Hat")
            logger.error(identity)
        except UnicodeEncodeError:
            logger.error("UnicodeEncodeError")
            logger.error(identity)
        except Exception as ex:
            logger.error("Unknown error adding sorting hat identity %s", ex)
            logger.error(identity)
            logger.error(ex)

        return sh_ids
Пример #13
0
    def test_case_unaccent_name(self):
        """Check if same values accent or unaccent produce the same UUID"""

        accent_result = uuid('scm',
                             email='',
                             name="Max Müster",
                             username='******')
        unaccent_result = uuid('scm',
                               email='',
                               name="Max Muster",
                               username='******')
        self.assertEqual(accent_result, unaccent_result)
        self.assertEqual(accent_result,
                         '9a0498297d9f0b7e4baf3e6b3740d22d2257367c')

        accent_result = uuid('scm',
                             email='',
                             name="Santiago Dueñas",
                             username='')
        unaccent_result = uuid('scm',
                               email='',
                               name="Santiago Duenas",
                               username='')
        self.assertEqual(accent_result, unaccent_result)
        self.assertEqual(accent_result,
                         '0f1dd18839007ee8a11d02572ca0a0f4eedaf2cd')

        accent_result = uuid('scm',
                             email='',
                             name="Tomáš Čechvala",
                             username='')
        partial_accent_result = uuid('scm',
                                     email='',
                                     name="Tomáš Cechvala",
                                     username='')
        unaccent_result = uuid('scm',
                               email='',
                               name="Tomas Cechvala",
                               username='')
        self.assertEqual(accent_result, unaccent_result)
        self.assertEqual(accent_result, partial_accent_result)
Пример #14
0
    def test_surrogate_escape(self):
        """Check if no errors are raised for invalid UTF-8 chars"""

        if sys.version_info[0] >= 3:
            result = uuid('scm', name="Mishal\udcc5 Pytasz")
            self.assertEqual(result, '625166bdc2c4f1a207d39eb8d25315010babd73b')