def test_valid_organizations_stream(self): """Check whether it parses organizations section from a valid stream""" stream = self.read_file('data/eclipse_valid.json') parser = EclipseParser(stream) orgs = parser.organizations orgs.sort(key=lambda x: x.name) # Check parsed organizations self.assertEqual(len(orgs), 2) # This objects store additional information # regarding when an organization is active or inactive # Bitergia entry org = orgs[0] self.assertIsInstance(org, Organization) self.assertEqual(org.name, 'Bitergia') self.assertEqual(org.active, datetime.datetime(2012, 1, 1, 0, 0, 0)) self.assertEqual(org.inactive, datetime.datetime(2100, 1, 1, 0, 0, 0)) # Example entry org = orgs[1] self.assertIsInstance(org, Organization) self.assertEqual(org.name, 'Example') self.assertEqual(org.active, datetime.datetime(2009, 1, 1, 0, 0, 0)) self.assertEqual(org.inactive, datetime.datetime(2014, 9, 1, 0, 0, 0))
def test_not_valid_stream(self): """Check whether it prints an error when parsing invalid streams""" with self.assertRaisesRegexp(InvalidFormatError, ECLIPSE_INVALID_JSON_FORMAT_ERROR): s = self.read_file('data/eclipse_invalid.json') EclipseParser(s) with self.assertRaisesRegexp(InvalidFormatError, ECLIPSE_IDS_MISSING_KEYS_ERROR): s = self.read_file('data/eclipse_ids_missing_keys.json') EclipseParser(s) with self.assertRaisesRegexp(InvalidFormatError, ECLIPSE_ORGS_MISSING_KEYS_ERROR): s = self.read_file('data/eclipse_orgs_missing_keys.json') EclipseParser(s) with self.assertRaisesRegexp(InvalidFormatError, ECLIPSE_DATETIME_ERROR): s = self.read_file('data/eclipse_invalid_datetime.json') EclipseParser(s)
def test_valid_identities_stream(self): """Check insertion of valid data from a file""" stream = self.read_file('data/eclipse_valid.json') parser = EclipseParser(stream, source='unknown') uids = parser.identities # Check parsed identities self.assertEqual(len(uids), 3) # John Doe unique identity uid = uids[0] self.assertIsInstance(uid, UniqueIdentity) self.assertEqual(uid.uuid, 'jdoe') self.assertEqual(len(uid.identities), 1) id0 = uid.identities[0] self.assertIsInstance(id0, Identity) self.assertEqual(id0.id, None) self.assertEqual(id0.name, 'John Doe') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jdoe') self.assertEqual(id0.uuid, 'jdoe') self.assertEqual(id0.source, 'unknown') enrollments = uid.enrollments self.assertEqual(len(enrollments), 1) rol0 = enrollments[0] self.assertIsInstance(rol0.organization, Organization) self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(2010, 1, 1, 0, 0, 0)) # The parsed end date shoud be 2100-01-01 but because there is # an inactive date for Example, this end date is set to the # inactive date self.assertEqual(rol0.end, datetime.datetime(2014, 9, 1, 0, 0, 0)) # Jane Rae identity uid = uids[1] self.assertIsInstance(uid, UniqueIdentity) self.assertEqual(uid.uuid, 'jrae') self.assertEqual(len(uid.identities), 1) id0 = uid.identities[0] self.assertIsInstance(id0, Identity) self.assertEqual(id0.id, None) self.assertEqual(id0.name, 'Jane Rae') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jrae') self.assertEqual(id0.uuid, 'jrae') self.assertEqual(id0.source, 'unknown') enrollments = uid.enrollments self.assertEqual(len(enrollments), 0) # John Smith unique identity uid = uids[2] self.assertIsInstance(uid, UniqueIdentity) self.assertEqual(uid.uuid, 'jsmith') self.assertEqual(len(uid.identities), 2) id0 = uid.identities[0] self.assertIsInstance(id0, Identity) self.assertEqual(id0.id, None) self.assertEqual(id0.name, 'John Smith') self.assertEqual(id0.email, '*****@*****.**') self.assertEqual(id0.username, 'jsmith') self.assertEqual(id0.uuid, 'jsmith') self.assertEqual(id0.source, 'unknown') id1 = uid.identities[1] self.assertIsInstance(id1, Identity) self.assertEqual(id1.id, None) self.assertEqual(id1.name, 'John Smith') self.assertEqual(id1.email, '*****@*****.**') self.assertEqual(id1.username, 'jsmith') self.assertEqual(id1.uuid, 'jsmith') self.assertEqual(id1.source, 'unknown') enrollments = uid.enrollments enrollments.sort(key=lambda x: x.start) self.assertEqual(len(enrollments), 2) rol0 = enrollments[0] self.assertIsInstance(rol0.organization, Organization) self.assertEqual(rol0.organization.name, 'Example') self.assertEqual(rol0.start, datetime.datetime(2010, 1, 1)) self.assertEqual(rol0.end, datetime.datetime(2011, 1, 1)) rol1 = enrollments[1] self.assertIsInstance(rol1.organization, Organization) self.assertEqual(rol1.organization.name, 'Bitergia') # Active date for Bitergia is 2012-01-01, so this enrollment # has that date instead of 2011-01-01 self.assertEqual(rol1.start, datetime.datetime(2012, 1, 1)) self.assertEqual(rol1.end, datetime.datetime(2100, 1, 1))
def test_none_stream(self): """Check whether it raises an exception when the stream is None""" with self.assertRaisesRegexp(InvalidFormatError, ECLIPSE_STREAM_INVALID_ERROR): EclipseParser(None)