def test_withdraw(self): """Check whether everything works right when withdrawing identities from organizations""" # This should delete two enrolmments: 1981-1990 and 1991-1993 # but not the one from 1999-2010 nor 1900-2100 code = self.cmd.withdraw('John Smith', 'Example', datetime.datetime(1970, 1, 1), datetime.datetime(1995, 1, 1)) self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 4) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Example') rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1999, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2010, 1, 1)) # Remove enrollments from John Doe code = self.cmd.withdraw('John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 3) code = self.cmd.withdraw('John Doe', 'Example') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 2) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example')
def test_withdraw(self): """Check whether everything works right when withdrawing identities from organizations""" # This should delete two enrolmments: 1981-1990 and 1991-1993 # but not the one from 1999-2010 nor 1900-2100 code = self.cmd.withdraw('John Smith', 'Example', datetime.datetime(1970, 1, 1), datetime.datetime(1995, 1, 1)) self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 4) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Example') rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1999, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2010, 1, 1)) # Remove enrollments from John Doe code = self.cmd.withdraw('John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 3) code = self.cmd.withdraw('John Doe', 'Example') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 2) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example')
def test_dates_out_of_bounds(self): """Check dates when they are out of bounds""" parser = self.get_parser(datadir('sortinghat_ids_dates_out_of_bounds.json')) # This command returns a success value even when some data is wrong code = self.cmd.import_identities(parser) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 1) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 2) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Bitergia') self.assertEqual(rol0.start, datetime.datetime(1999, 1, 1, 0, 0)) # The json file has 2200-01-01T00:00:00 self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0)) rol1 = enrollments[1] self.assertEqual(rol1.organization.name, 'Example') # The json file has 1800-01-01T00:00:00 self.assertEqual(rol1.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol1.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_dates_out_of_bounds(self): """Check dates when they are out of bounds""" parser = self.get_parser( datadir('sortinghat_ids_dates_out_of_bounds.json')) # This command returns a success value even when some data is wrong code = self.cmd.import_identities(parser) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 1) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 2) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Bitergia') self.assertEqual(rol0.start, datetime.datetime(1999, 1, 1, 0, 0)) # The json file has 2200-01-01T00:00:00 self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0)) rol1 = enrollments[1] self.assertEqual(rol1.organization.name, 'Example') # The json file has 1800-01-01T00:00:00 self.assertEqual(rol1.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol1.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_withdraw(self): """Check withdraw command""" # Remove some enrollments giving partial periods code = self.cmd.run('--from', '1970-01-01 21:00:00', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--to', '2010-01-01', 'John Doe', 'Example') self.assertEqual(code, CMD_SUCCESS) # Check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 2) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) # Remove using a period range code = self.cmd.run('--from', '1900-01-01', '--to', '2100-01-01', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 1) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') # Remove without using ranges code = self.cmd.run('John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 0) # Check the output, it should be empty output = sys.stdout.getvalue().strip() self.assertEqual(output, WITHDRAW_EMPTY_OUTPUT)
def test_withdraw(self): """Check withdraw command""" # Remove some enrollments giving partial periods code = self.cmd.run('--from', '1970-01-01 21:00:00', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--to', '2010-01-01', 'John Doe', 'Example') self.assertEqual(code, CMD_SUCCESS) # Check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 2) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) # Remove using a period range code = self.cmd.run('--from', '1900-01-01', '--to', '2100-01-01', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 1) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') # Remove without using ranges code = self.cmd.run('John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 0) # Check the output, it should be empty output = sys.stdout.getvalue().strip() self.assertEqual(output, WITHDRAW_EMPTY_OUTPUT)
def test_enroll(self): """Check whether everything works right when enrolling identities""" code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(2013, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1981, 1, 1), datetime.datetime(1995, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Bitergia', datetime.datetime(2001, 1, 1), datetime.datetime(2010, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Doe', 'Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Doe', 'Bitergia', datetime.datetime(1999, 1, 1), datetime.datetime(2001, 1, 1)) self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 5) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Example') rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1981, 1, 1)) self.assertEqual(rol.end, datetime.datetime(1995, 1, 1)) rol = enrollments[4] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(2013, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1))
def test_enroll(self): """Check whether everything works right when enrolling identities""" code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(2013, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1981, 1, 1), datetime.datetime(1995, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Bitergia', datetime.datetime(2001, 1, 1), datetime.datetime(2010, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Doe', 'Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Doe', 'Bitergia', datetime.datetime(1999, 1, 1), datetime.datetime(2001, 1, 1)) self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 5) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Example') rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1981, 1, 1)) self.assertEqual(rol.end, datetime.datetime(1995, 1, 1)) rol = enrollments[4] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(2013, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1))
def test_enroll_with_merge(self): """Check whether everything works right when enrolling and merging""" code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(2013, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1981, 1, 1), datetime.datetime(2003, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1982, 1, 1), datetime.datetime(1997, 1, 1), True) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1996, 1, 1), datetime.datetime(2005, 1, 1), True) self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 2) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1981, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2005, 1, 1)) rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(2013, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1))
def test_enroll_with_merge(self): """Check whether everything works right when enrolling and merging""" code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(2013, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1981, 1, 1), datetime.datetime(2003, 1, 1)) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1982, 1, 1), datetime.datetime(1997, 1, 1), True) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.enroll('John Smith', 'Example', datetime.datetime(1996, 1, 1), datetime.datetime(2005, 1, 1), True) self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 2) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1981, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2005, 1, 1)) rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(2013, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1))
def test_valid_identities_file(self): """Check insertion of valid data from a file""" parser = self.get_parser(datadir('sortinghat_valid.json')) code = self.cmd.import_identities(parser) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') prf = uid.profile self.assertEqual(prf.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, None) self.assertEqual(prf.gender_acc, None) self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '22d1b20763c6f5822bdda8508957486c547bb9de') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, '322397ed782a798ffd9d0bc7e293df4292fe075d') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Bitergia') self.assertEqual(rol0.start, datetime.datetime(1999, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2000, 1, 1, 0, 0)) rol1 = enrollments[1] self.assertEqual(rol1.organization.name, 'Bitergia') self.assertEqual(rol1.start, datetime.datetime(2006, 1, 1, 0, 0)) self.assertEqual(rol1.end, datetime.datetime(2008, 1, 1, 0, 0)) rol2 = enrollments[2] self.assertEqual(rol2.organization.name, 'Example') self.assertEqual(rol2.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol2.end, datetime.datetime(2100, 1, 1, 0, 0)) # John Smith uid = uids[1] self.assertEqual(uid.uuid, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 2) prf = uid.profile self.assertEqual(prf.uuid, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(prf.name, None) self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, 'male') self.assertEqual(prf.gender_acc, 100) self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, None) self.assertEqual(prf.country, None) id0 = ids[0] self.assertEqual(id0.id, '880b3dfcb3a08712e5831bddc3dfe81fc5d7b331') self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, None) self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, 'jsmith') self.assertEqual(id1.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_valid_identities_with_default_matching(self): """Check insertion, matching and merging of valid data""" # First, insert the identity that will match with one # from the file api.add_organization(self.db, 'Example') uuid = api.add_identity(self.db, 'unknown', email='*****@*****.**') api.add_enrollment(self.db, uuid, 'Example', datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2100, 1, 1, 0, 0)) api.edit_profile(self.db, uuid, name='John Smith', is_bot=False, country_code='US') parser = self.get_parser(datadir('sortinghat_valid.json')) code = self.cmd.import_identities(parser, matching='default') self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') prf = uid.profile self.assertEqual(prf.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, None) self.assertEqual(prf.gender_acc, None) self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '22d1b20763c6f5822bdda8508957486c547bb9de') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, '322397ed782a798ffd9d0bc7e293df4292fe075d') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) # John Smith uid = uids[1] self.assertEqual(uid.uuid, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) # The profile was merged prf = uid.profile self.assertEqual(prf.uuid, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') self.assertEqual(prf.name, 'John Smith') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, 'male') self.assertEqual(prf.gender_acc, 100) self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') id0 = ids[0] self.assertEqual(id0.id, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') self.assertEqual(id0.name, None) self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, None) self.assertEqual(id0.source, 'unknown') id1 = ids[1] self.assertEqual(id1.id, '880b3dfcb3a08712e5831bddc3dfe81fc5d7b331') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'scm') id2 = ids[2] self.assertEqual(id2.id, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(id2.name, 'John Smith') self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, 'jsmith') self.assertEqual(id2.source, 'scm') # Enrollments were merged enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(2000, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_reset(self): """Check if stored relationships and enrollments are removed before loading""" # These identities will be split and enrollments removed uuid = api.add_identity(self.db, 'unknown', email='*****@*****.**') api.add_identity(self.db, source='scm', email='*****@*****.**', name='John Smith', username='******', uuid=uuid) api.add_organization(self.db, 'LibreSoft') api.add_enrollment(self.db, uuid, 'LibreSoft', datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2100, 1, 1, 0, 0)) parser = self.get_parser(datadir('sortinghat_valid.json')) code = self.cmd.import_identities(parser, reset=True) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 3) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) # [email protected] uid = uids[1] self.assertEqual(uid.uuid, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 1) id0 = ids[0] self.assertEqual(id0.id, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') self.assertEqual(id0.name, None) self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, None) self.assertEqual(id0.source, 'unknown') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 0) # John Smith uid = uids[2] self.assertEqual(uid.uuid, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 2) id1 = ids[0] self.assertEqual(id1.id, '880b3dfcb3a08712e5831bddc3dfe81fc5d7b331') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'scm') id2 = ids[1] self.assertEqual(id2.id, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(id2.name, 'John Smith') self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, 'jsmith') self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1)
def test_valid_identities_with_default_matching(self): """Check insertion, matching and merging of valid data""" # First, insert the identity that will match with one # from the file api.add_organization(self.db, 'Example') uuid = api.add_identity(self.db, 'unknown', email='*****@*****.**') api.add_enrollment(self.db, uuid, 'Example', datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2100, 1, 1, 0, 0)) api.edit_profile(self.db, uuid, name='John Smith', is_bot=False, country_code='US') parser = self.get_parser(datadir('sortinghat_valid.json')) code = self.cmd.import_identities(parser, matching='default') self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') prf = uid.profile self.assertEqual(prf.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, None) self.assertEqual(prf.gender_acc, None) self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '22d1b20763c6f5822bdda8508957486c547bb9de') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, '322397ed782a798ffd9d0bc7e293df4292fe075d') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) # John Smith uid = uids[1] self.assertEqual(uid.uuid, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) # The profile was merged prf = uid.profile self.assertEqual(prf.uuid, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') self.assertEqual(prf.name, 'John Smith') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, 'male') self.assertEqual(prf.gender_acc, 100) self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') id0 = ids[0] self.assertEqual(id0.id, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') self.assertEqual(id0.name, None) self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, None) self.assertEqual(id0.source, 'unknown') id1 = ids[1] self.assertEqual(id1.id, '880b3dfcb3a08712e5831bddc3dfe81fc5d7b331') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'scm') id2 = ids[2] self.assertEqual(id2.id, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(id2.name, 'John Smith') self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, 'jsmith') self.assertEqual(id2.source, 'scm') # Enrollments were merged enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(2000, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_reset(self): """Check if stored relationships and enrollments are removed before loading""" # These identities will be split and enrollments removed uuid = api.add_identity(self.db, 'unknown', email='*****@*****.**') api.add_identity(self.db, source='scm', email='*****@*****.**', name='John Smith', username='******', uuid=uuid) api.add_organization(self.db, 'LibreSoft') api.add_enrollment(self.db, uuid, 'LibreSoft', datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2100, 1, 1, 0, 0)) parser = self.get_parser(datadir('sortinghat_valid.json')) code = self.cmd.import_identities(parser, reset=True) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 3) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) # [email protected] uid = uids[1] self.assertEqual(uid.uuid, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 1) id0 = ids[0] self.assertEqual(id0.id, '2371a34a0ac65fbd9d631464ee41d583ec0e1e88') self.assertEqual(id0.name, None) self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, None) self.assertEqual(id0.source, 'unknown') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 0) # John Smith uid = uids[2] self.assertEqual(uid.uuid, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 2) id1 = ids[0] self.assertEqual(id1.id, '880b3dfcb3a08712e5831bddc3dfe81fc5d7b331') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'scm') id2 = ids[1] self.assertEqual(id2.id, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(id2.name, 'John Smith') self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, 'jsmith') self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1)
def test_enroll(self): """Check how it works when enrolling""" code = self.cmd.run('John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--from', '2013-01-01', '--to', '2014-01-01', 'John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('John Smith', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--from', '1999-01-01 18:33:58', 'John Smith', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--to', '1970-01-01 01:02:03', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, ENROLL_EMPTY_OUTPUT) # Check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 5) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(2013, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2014, 1, 1)) rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(1999, 1, 1, 18, 33, 58)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(1970, 1, 1, 1, 2, 3)) rol = enrollments[4] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) # Enroll and merge code = self.cmd.run('--from', '2008-01-01', '--merge', 'John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--merge', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 4) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(2008, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2014, 1, 1)) rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(1999, 1, 1, 18, 33, 58)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(1970, 1, 1, 1, 2, 3))
def test_valid_identities_file(self): """Check insertion of valid data from a file""" parser = self.get_parser(datadir('sortinghat_valid.json')) code = self.cmd.import_identities(parser) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # Jane Roe uid = uids[0] self.assertEqual(uid.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') prf = uid.profile self.assertEqual(prf.uuid, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, None) self.assertEqual(prf.gender_acc, None) self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '17ab00ed3825ec2f50483e33c88df223264182ba') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '22d1b20763c6f5822bdda8508957486c547bb9de') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, '322397ed782a798ffd9d0bc7e293df4292fe075d') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Bitergia') self.assertEqual(rol0.start, datetime.datetime(1999, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2000, 1, 1, 0, 0)) rol1 = enrollments[1] self.assertEqual(rol1.organization.name, 'Bitergia') self.assertEqual(rol1.start, datetime.datetime(2006, 1, 1, 0, 0)) self.assertEqual(rol1.end, datetime.datetime(2008, 1, 1, 0, 0)) rol2 = enrollments[2] self.assertEqual(rol2.organization.name, 'Example') self.assertEqual(rol2.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol2.end, datetime.datetime(2100, 1, 1, 0, 0)) # John Smith uid = uids[1] self.assertEqual(uid.uuid, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 2) prf = uid.profile self.assertEqual(prf.uuid, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(prf.name, None) self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.gender, 'male') self.assertEqual(prf.gender_acc, 100) self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, None) self.assertEqual(prf.country, None) id0 = ids[0] self.assertEqual(id0.id, '880b3dfcb3a08712e5831bddc3dfe81fc5d7b331') self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, None) self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, 'a9b403e150dd4af8953a52a4bb841051e4b705d9') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, 'jsmith') self.assertEqual(id1.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_valid_identities_with_default_matching(self): """Check insertion, matching and merging of valid data""" # First, insert the identity that will match with one # from the file api.add_organization(self.db, 'Example') uuid = api.add_identity(self.db, 'unknown', email='*****@*****.**') api.add_enrollment(self.db, uuid, 'Example', datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2100, 1, 1, 0, 0)) api.edit_profile(self.db, uuid, name='John Smith', is_bot=False, country_code='US') parser = self.get_parser('data/sortinghat_valid.json') code = self.cmd.import_identities(parser, matching='default') self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # John Smith uid = uids[0] self.assertEqual(uid.uuid, '23fe3a011190a27a7c5cf6f8925de38ff0994d8d') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) # The profile was merged prf = uid.profile self.assertEqual(prf.uuid, '23fe3a011190a27a7c5cf6f8925de38ff0994d8d') self.assertEqual(prf.name, 'John Smith') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') id0 = ids[0] self.assertEqual(id0.id, '03e12d00e37fd45593c49a5a5a1652deca4cf302') self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jsmith') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '23fe3a011190a27a7c5cf6f8925de38ff0994d8d') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, '75d95d6c8492fd36d24a18bd45d62161e05fbc97') self.assertEqual(id2.name, 'John Smith') self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') # Enrollments were merged enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(2000, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0)) # Jane Roe uid = uids[1] self.assertEqual(uid.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') prf = uid.profile self.assertEqual(prf.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, 'cbfb7bd31d556322c640f5bc7b31d58a12b15904') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, 'fef873c50a48cfc057f7aa19f423f81889a8907f') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3)
def get_enrollments(self, uuid): return api.enrollments(self.sh_db, uuid)
def test_valid_identities_with_default_matching(self): """Check insertion, matching and merging of valid data""" # First, insert the identity that will match with one # from the file api.add_organization(self.db, 'Example') uuid = api.add_identity(self.db, 'unknown', email='*****@*****.**') api.add_enrollment(self.db, uuid, 'Example', datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2100, 1, 1, 0, 0)) api.edit_profile(self.db, uuid, name='John Smith', is_bot=False, country_code='US') parser = self.get_parser('data/sortinghat_valid.json') code = self.cmd.import_identities(parser, matching='default') self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # John Smith uid = uids[0] self.assertEqual(uid.uuid, '23fe3a011190a27a7c5cf6f8925de38ff0994d8d') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) # The profile was merged prf = uid.profile self.assertEqual(prf.uuid, '23fe3a011190a27a7c5cf6f8925de38ff0994d8d') self.assertEqual(prf.name, 'John Smith') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') id0 = ids[0] self.assertEqual(id0.id, '03e12d00e37fd45593c49a5a5a1652deca4cf302') self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jsmith') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '23fe3a011190a27a7c5cf6f8925de38ff0994d8d') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, '75d95d6c8492fd36d24a18bd45d62161e05fbc97') self.assertEqual(id2.name, 'John Smith') self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') # Enrollments were merged enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(2000, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0)) # Jane Roe uid = uids[1] self.assertEqual(uid.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') prf = uid.profile self.assertEqual(prf.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, 'cbfb7bd31d556322c640f5bc7b31d58a12b15904') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, 'fef873c50a48cfc057f7aa19f423f81889a8907f') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3)
def test_valid_identities_file(self): """Check insertion of valid data from a file""" parser = self.get_parser('data/sortinghat_valid.json') code = self.cmd.import_identities(parser) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # John Smith uid = uids[0] self.assertEqual(uid.uuid, '03e12d00e37fd45593c49a5a5a1652deca4cf302') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 2) prf = uid.profile self.assertEqual(prf.uuid, '03e12d00e37fd45593c49a5a5a1652deca4cf302') self.assertEqual(prf.name, None) self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, None) self.assertEqual(prf.country, None) id0 = ids[0] self.assertEqual(id0.id, '03e12d00e37fd45593c49a5a5a1652deca4cf302') self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jsmith') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '75d95d6c8492fd36d24a18bd45d62161e05fbc97') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0)) # Jane Roe uid = uids[1] self.assertEqual(uid.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') prf = uid.profile self.assertEqual(prf.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, 'cbfb7bd31d556322c640f5bc7b31d58a12b15904') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, 'fef873c50a48cfc057f7aa19f423f81889a8907f') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Bitergia') self.assertEqual(rol0.start, datetime.datetime(1999, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2000, 1, 1, 0, 0)) rol1 = enrollments[1] self.assertEqual(rol1.organization.name, 'Bitergia') self.assertEqual(rol1.start, datetime.datetime(2006, 1, 1, 0, 0)) self.assertEqual(rol1.end, datetime.datetime(2008, 1, 1, 0, 0)) rol2 = enrollments[2] self.assertEqual(rol2.organization.name, 'Example') self.assertEqual(rol2.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol2.end, datetime.datetime(2100, 1, 1, 0, 0))
def test_enroll(self): """Check how it works when enrolling""" code = self.cmd.run('John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--from', '2013-01-01', '--to', '2014-01-01', 'John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('John Smith', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--from', '1999-01-01 18:33:58', 'John Smith', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--to', '1970-01-01 01:02:03', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, ENROLL_EMPTY_OUTPUT) # Check the output list enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 5) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(2013, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2014, 1, 1)) rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(1999, 1, 1, 18, 33, 58)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(1970, 1, 1, 1, 2, 3)) rol = enrollments[4] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) # Enroll and merge code = self.cmd.run('--from', '2008-01-01', '--merge', 'John Doe', 'Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.run('--merge', 'John Smith', 'Example') self.assertEqual(code, CMD_SUCCESS) enrollments = api.enrollments(self.db) self.assertEqual(len(enrollments), 4) rol = enrollments[0] self.assertEqual(rol.uidentity.uuid, 'John Doe') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(2008, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2014, 1, 1)) rol = enrollments[1] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[2] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Bitergia') self.assertEqual(rol.start, datetime.datetime(1999, 1, 1, 18, 33, 58)) self.assertEqual(rol.end, datetime.datetime(2100, 1, 1)) rol = enrollments[3] self.assertEqual(rol.uidentity.uuid, 'John Smith') self.assertEqual(rol.organization.name, 'Example') self.assertEqual(rol.start, datetime.datetime(1900, 1, 1)) self.assertEqual(rol.end, datetime.datetime(1970, 1, 1, 1, 2, 3))
def get_enrollments(self, uuid): return api.enrollments(self.sh_db, uuid)
def test_valid_identities_file(self): """Check insertion of valid data from a file""" parser = self.get_parser('data/sortinghat_valid.json') code = self.cmd.import_identities(parser) self.assertEqual(code, CMD_SUCCESS) # Check the contents of the registry uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # John Smith uid = uids[0] self.assertEqual(uid.uuid, '03e12d00e37fd45593c49a5a5a1652deca4cf302') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 2) prf = uid.profile self.assertEqual(prf.uuid, '03e12d00e37fd45593c49a5a5a1652deca4cf302') self.assertEqual(prf.name, None) self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, True) self.assertEqual(prf.country_code, None) self.assertEqual(prf.country, None) id0 = ids[0] self.assertEqual(id0.id, '03e12d00e37fd45593c49a5a5a1652deca4cf302') self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jsmith') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, '75d95d6c8492fd36d24a18bd45d62161e05fbc97') self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2100, 1, 1, 0, 0)) # Jane Roe uid = uids[1] self.assertEqual(uid.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') prf = uid.profile self.assertEqual(prf.uuid, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(prf.name, 'Jane Roe') self.assertEqual(prf.email, '*****@*****.**') self.assertEqual(prf.is_bot, False) self.assertEqual(prf.country_code, 'US') self.assertEqual(prf.country.alpha3, 'USA') self.assertEqual(prf.country.code, 'US') self.assertEqual(prf.country.name, 'United States of America') ids = self.sort_identities(uid.identities) self.assertEqual(len(ids), 3) id0 = ids[0] self.assertEqual(id0.id, '52e0aa0a14826627e633fd15332988686b730ab3') self.assertEqual(id0.name, 'Jane Roe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jroe') self.assertEqual(id0.source, 'scm') id1 = ids[1] self.assertEqual(id1.id, 'cbfb7bd31d556322c640f5bc7b31d58a12b15904') self.assertEqual(id1.name, None) self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, None) self.assertEqual(id1.source, 'unknown') id2 = ids[2] self.assertEqual(id2.id, 'fef873c50a48cfc057f7aa19f423f81889a8907f') self.assertEqual(id2.name, None) self.assertEqual(id2.email, '*****@*****.**') self.assertEqual(id2.username, None) self.assertEqual(id2.source, 'scm') enrollments = api.enrollments(self.db, uid.uuid) self.assertEqual(len(enrollments), 3) rol0 = enrollments[0] self.assertEqual(rol0.organization.name, 'Bitergia') self.assertEqual(rol0.start, datetime.datetime(1999, 1, 1, 0, 0)) self.assertEqual(rol0.end, datetime.datetime(2000, 1, 1, 0, 0)) rol1 = enrollments[1] self.assertEqual(rol1.organization.name, 'Bitergia') self.assertEqual(rol1.start, datetime.datetime(2006, 1, 1, 0, 0)) self.assertEqual(rol1.end, datetime.datetime(2008, 1, 1, 0, 0)) rol2 = enrollments[2] self.assertEqual(rol2.organization.name, 'Example') self.assertEqual(rol2.start, datetime.datetime(1900, 1, 1, 0, 0)) self.assertEqual(rol2.end, datetime.datetime(2100, 1, 1, 0, 0))