Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_filter_identities_with_blacklist(self):
"""Test if identities are filtered when there is a blacklist"""
# Let's define some identities first
jsmith = UniqueIdentity(uuid='jsmith')
jsmith.identities = [Identity(name='John Smith', email='jsmith@example.com', source='scm', uuid='jsmith'),
Identity(name='John Smith', source='scm', uuid='jsmith'),
Identity(name='John Smith JR', source='scm', uuid='jsmith'),
Identity(username='jsmith', source='scm', uuid='jsmith'),
Identity(email='', source='scm', uuid='jsmith')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm', uuid='jrae'),
Identity(name='Jane Rae Doe', email='jane.rae@example.net', source='mls', uuid='jrae'),
Identity(name='jrae', source='scm', uuid='jrae'),
Identity(email='JRAE@example.net', source='scm', uuid='jrae')]
# Tests
bl = [MatchingBlacklist(excluded='John Smith'),
MatchingBlacklist(excluded='jrae@example.net')]
matcher = EmailNameMatcher(blacklist=bl)
result = matcher.filter(jsmith)
self.assertEqual(len(result), 1)
stream = self.read_file(datadir('mozillians_valid.json'))
parser = MozilliansParser(stream, source='unknown')
uids = parser.identities
# Check parsed identities
self.assertEqual(len(uids), 3)
# John Doe identity
uid = uids[0]
self.assertIsInstance(uid, UniqueIdentity)
self.assertEqual(uid.uuid, 'john_doe')
self.assertEqual(len(uid.identities), 2)
id0 = uid.identities[0]
self.assertIsInstance(id0, Identity)
self.assertEqual(id0.id, None)
self.assertEqual(id0.name, None)
self.assertEqual(id0.email, None)
self.assertEqual(id0.username, 'john_doe')
self.assertEqual(id0.uuid, 'john_doe')
self.assertEqual(id0.source, 'unknown')
# IRC identity
id1 = uid.identities[1]
self.assertIsInstance(id1, Identity)
self.assertEqual(id1.id, None)
self.assertEqual(id1.name, None)
self.assertEqual(id1.email, None)
self.assertEqual(id1.username, 'jdoe')
self.assertEqual(id1.uuid, 'john_doe')
self.assertEqual(id1.source, 'unknown')
def test_filter_identities_with_blacklist(self):
"""Test if identities are filtered when there is a blacklist"""
# Let's define some identities first
jsmith = UniqueIdentity(uuid='jsmith')
jsmith.identities = [Identity(name='John Smith', username='jsmith', source='scm', uuid='jsmith'),
Identity(name='John Smith', source='scm', uuid='jsmith'),
Identity(email='jsmith@example.com', source='scm', uuid='jsmith'),
Identity(email='', source='scm', uuid='jsmith')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm', uuid='jrae'),
Identity(name='Jane Rae Doe', username='jane.rae', source='mls', uuid='jrae'),
Identity(name='jrae', source='scm', uuid='jrae'),
Identity(username='JRAE', source='scm', uuid='jrae')]
bl = [MatchingBlacklist(excluded='jrae')]
matcher = UsernameMatcher(blacklist=bl)
result = matcher.filter(jsmith)
self.assertEqual(len(result), 1)
fid = result[0]
self.assertIsInstance(fid, UsernameIdentity)
self.assertEqual(fid.uuid, 'jsmith')
self.assertEqual(fid.username, 'jsmith')
result = matcher.filter(jrae)
self.assertEqual(len(result), 1)
def test_match_with_sources_list(self):
"""Test match when a list of sources to filter is given"""
jsmith = UniqueIdentity(uuid='jsmith')
jsmith.identities = [Identity(name='John Smith', email='jsmith@example.com', source='scm'),
Identity(name='John Smith', source='scm'),
Identity(username='jsmith', source='scm'),
Identity(email='', source='scm')]
jsmith_alt = UniqueIdentity(uuid='J. Smith')
jsmith_alt.identities = [Identity(name='John Smith JR', username='john_smith', source='alt'),
Identity(name='John Smith', username='jsmith', source='alt'),
Identity(email='', source='alt'),
Identity(email='jsmith', source='alt')]
# With these lists there are not matches
matcher = EmailNameMatcher(sources=['github'])
result = matcher.match(jsmith, jsmith_alt)
self.assertEqual(result, False)
matcher = EmailNameMatcher(sources=['scm'])
result = matcher.match(jsmith, jsmith_alt)
# Let's define some identities first
jsmith = UniqueIdentity(uuid='jsmith')
jsmith.identities = [Identity(name='John Smith', email='jsmith@example.com', source='scm'),
Identity(name='John Smith', source='scm'),
Identity(username='jsmith', source='scm'),
Identity(email='', source='scm')]
john_smith = UniqueIdentity(uuid='js')
john_smith.identities = [Identity(name='J. Smith', username='john_smith', source='scm'),
Identity(username='john_smith', source='scm'),
Identity(name='Smith. J', source='mls'),
Identity(name='Smith. J', email='JSmith@example.com', source='mls')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm', uuid='jrae'),
Identity(name='Jane Rae Doe', email='jane.rae@example.net', source='mls', uuid='jrae'),
Identity(name='jrae', source='scm', uuid='jrae'),
Identity(email='JRAE@example.net', source='scm', uuid='jrae')]
jane_rae = UniqueIdentity(uuid='Jane Rae')
jane_rae.identities = [Identity(name='Jane Rae', source='scm', uuid='Jane Rae'),
Identity(email='jrae@example.net', source='mls', uuid='Jane Rae')]
# Check matching
matcher = EmailMatcher()
# First two unique identities must match
result = matcher.match(jsmith, john_smith)
self.assertEqual(result, True)
result = matcher.match(john_smith, jsmith)
self.assertEqual(result, True)
def test_filter_identities_with_blacklist(self):
"""Test if identities are filtered when there is a blacklist"""
# Let's define some identities first
jsmith = UniqueIdentity(uuid='jsmith')
jsmith.identities = [Identity(name='John Smith', email='jsmith@example.com', source='scm', uuid='jsmith'),
Identity(name='John Smith', source='scm', uuid='jsmith'),
Identity(name='John Smith JR', source='scm', uuid='jsmith'),
Identity(username='jsmith', source='scm', uuid='jsmith'),
Identity(email='', source='scm', uuid='jsmith')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm', uuid='jrae'),
Identity(name='Jane Rae Doe', email='jane.rae@example.net', source='mls', uuid='jrae'),
Identity(name='jrae', source='scm', uuid='jrae'),
Identity(email='JRAE@example.net', source='scm', uuid='jrae')]
# Tests
bl = [MatchingBlacklist(excluded='John Smith'),
MatchingBlacklist(excluded='jrae@example.net')]
matcher = EmailNameMatcher(blacklist=bl)
result = matcher.filter(jsmith)
self.assertEqual(len(result), 1)
fid = result[0]
self.assertIsInstance(fid, EmailNameIdentity)
self.assertEqual(fid.uuid, 'jsmith')
self.assertEqual(fid.name, 'john smith jr')
self.assertEqual(fid.email, None)
def test_match_strict(self):
"""Test strict matching"""
# Let's define some identities first
jsmith_alt = UniqueIdentity(uuid='J. Smith')
jsmith_alt.identities = [Identity(name='J. Smith', username='john_smith', source='alt'),
Identity(name='John Smith', username='jsmith', source='alt'),
Identity(email='', source='alt'),
Identity(email='jsmith', source='alt')]
jsmith_not_email = UniqueIdentity(uuid='John Smith')
jsmith_not_email.identities = [Identity(email='jsmith', source='mls')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm'),
Identity(name='Jane Rae Doe', email='jane.rae@example.net', source='mls')]
jrae_doe = UniqueIdentity(uuid='jraedoe')
jrae_doe.identities = [Identity(name='Jane Rae Doe', email='jrae@example.com', source='mls'),
Identity(name='jrae', source='scm')]
jrae_no_name = UniqueIdentity(uuid='Jane Rae')
jrae_no_name.identities = [Identity(name='jrae', source='scm')]
# Tests
strict_matcher = EmailNameMatcher(strict=True)
no_strict_matcher = EmailNameMatcher(strict=False)
jsmith.identities = [Identity(name='John Smith', email='jsmith@example.com', source='scm'),
Identity(name='John Smith', source='scm'),
Identity(username='jsmith', source='scm'),
Identity(email='', source='scm')]
john_smith = UniqueIdentity(uuid='js')
john_smith.identities = [Identity(name='J. Smith', username='john_smith', source='scm'),
Identity(username='john_smith', source='scm'),
Identity(name='Smith. J', source='mls'),
Identity(name='Smith. J', email='JSmith@example.com', source='mls')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm', uuid='jrae'),
Identity(name='Jane Rae Doe', email='jane.rae@example.net', source='mls', uuid='jrae'),
Identity(name='jrae', source='scm', uuid='jrae'),
Identity(email='JRAE@example.net', source='scm', uuid='jrae')]
jane_rae = UniqueIdentity(uuid='Jane Rae')
jane_rae.identities = [Identity(name='Jane Rae', source='scm', uuid='Jane Rae'),
Identity(email='jrae@example.net', source='mls', uuid='Jane Rae')]
# Check matching
matcher = EmailMatcher()
# First two unique identities must match
result = matcher.match(jsmith, john_smith)
self.assertEqual(result, True)
result = matcher.match(john_smith, jsmith)
self.assertEqual(result, True)
result = matcher.match(jrae, jane_rae)
def test_match_with_blacklist(self):
"""Test match when there are entries in the blacklist"""
# Let's define some identities first
jsmith = UniqueIdentity(uuid='jsmith')
jsmith.identities = [Identity(name='John Smith', email='jsmith@example.com', source='scm'),
Identity(name='John Smith', source='scm'),
Identity(username='jsmith', source='scm'),
Identity(email='', source='scm')]
john_smith = UniqueIdentity(uuid='js')
john_smith.identities = [Identity(name='J. Smith', username='john_smith', source='scm'),
Identity(username='john_smith', source='scm'),
Identity(name='Smith. J', source='mls'),
Identity(name='Smith. J', email='JSmith@example.com', source='mls')]
jrae = UniqueIdentity(uuid='jrae')
jrae.identities = [Identity(name='Jane Rae', source='scm', uuid='jrae'),
Identity(name='Jane Rae Doe', email='jane.rae@example.net', source='mls', uuid='jrae'),
Identity(name='jrae', source='scm', uuid='jrae'),
Identity(email='JRAE@example.net', source='scm', uuid='jrae')]
jane_rae = UniqueIdentity(uuid='Jane Rae')
jane_rae.identities = [Identity(name='Jane Rae', source='scm', uuid='Jane Rae'),
Identity(email='jrae@example.net', source='mls', uuid='Jane Rae')]
def test_find_identity(self):
"""Test if an identity is found by its ID"""
with self.db.connect() as session:
id_ = 'abcdefghijklmnopqrstuvwxyz'
identity = Identity(id=id_, name='John Smith', source='unknown')
session.add(identity)
with self.db.connect() as session:
identity = api.find_identity(session, id_)
self.assertIsInstance(identity, Identity)
self.assertEqual(identity.id, id_)