def test_delete(self): """Check whether everything works ok when deleting organizations and domains""" # First, add a set of organizations, including some domains self.cmd.add('Example') self.cmd.add('Example', 'example.com') self.cmd.add('Example', 'example.org') self.cmd.add('Example', 'example.net') self.cmd.add('Bitergia') self.cmd.add('Bitergia', 'bitergia.com') self.cmd.add('LibreSoft') self.cmd.add('Bitergium') self.cmd.add('Bitergium', 'bitergium.com') self.cmd.add('Bitergium', 'bitergium.net') # Delete an organization orgs = api.registry(self.db, 'Bitergia') self.assertEqual(len(orgs), 1) code = self.cmd.delete('Bitergia') self.assertEqual(code, CMD_SUCCESS) self.assertRaises(NotFoundError, api.registry, self.db, 'Bitergia') # Delete a domain orgs = api.registry(self.db, 'Bitergium') self.assertEqual(len(orgs[0].domains), 2) code = self.cmd.delete('Bitergium', 'bitergium.com') self.assertEqual(code, CMD_SUCCESS) orgs = api.registry(self.db, 'Bitergium') self.assertEqual(len(orgs[0].domains), 1) # Delete organization with several domains orgs = api.registry(self.db, 'Example') self.assertEqual(len(orgs), 1) code = self.cmd.delete('Example') self.assertEqual(code, CMD_SUCCESS) self.assertRaises(NotFoundError, api.registry, self.db, 'Example') # The final content of the registry should have # two companies and one domain orgs = api.registry(self.db) self.assertEqual(len(orgs), 2) org1 = orgs[0] self.assertEqual(org1.name, 'Bitergium') doms1 = org1.domains self.assertEqual(len(doms1), 1) self.assertEqual(doms1[0].domain, 'bitergium.net') org2 = orgs[1] self.assertEqual(org2.name, 'LibreSoft') doms2 = org2.domains self.assertEqual(len(doms2), 0)
def test_not_found_organization(self): """Check if it fails removing an organization that does not exists""" # It should print an error when the registry is empty code = self.cmd.delete('Bitergium') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip().split('\n')[0] self.assertEqual(output, REGISTRY_ORG_NOT_FOUND_ERROR) # Add a pair of organizations to check delete with a registry # with contents self.cmd.add('Example') self.cmd.add('Bitergia') self.cmd.add('Bitergia', 'bitergia.com') # The error should be the same code = self.cmd.delete('Bitergium') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip().split('\n')[1] self.assertEqual(output, REGISTRY_ORG_NOT_FOUND_ERROR) # It fails again, when trying to delete a domain from # a organization that does not exist code = self.cmd.delete('LibreSoft', 'bitergium.com') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip().split('\n')[2] self.assertEqual(output, REGISTRY_ORG_NOT_FOUND_ERROR_ALT) # Nothing has been deleted from the registry orgs = api.registry(self.db) self.assertEqual(len(orgs), 2) self.assertEqual(len(orgs[0].domains), 1) self.assertEqual(len(orgs[1].domains), 0)
def test_not_found_domain(self): """Check if it fails removing an domain that does not exists""" # Add a pair of organizations to check delete with a registry # with contents self.cmd.add('Example') self.cmd.add('Bitergia') self.cmd.add('Bitergia', 'bitergia.com') code = self.cmd.delete('Example', 'example.com') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip().split('\n')[0] self.assertEqual(output, REGISTRY_DOM_NOT_FOUND_ERROR) # It should not fail because the domain is assigned # to other organization code = self.cmd.delete('Example', 'bitergia.com') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip().split('\n')[1] self.assertEqual(output, REGISTRY_DOM_NOT_FOUND_ERROR_ALT) # Nothing has been deleted from the registry orgs = api.registry(self.db) self.assertEqual(len(orgs), 2) self.assertEqual(len(orgs[0].domains), 1) self.assertEqual(len(orgs[1].domains), 0)
def off_test_load_orgs(self): """ Test loading of orgs in SH """ setup_http_server() config = Config(CONF_FILE) task = TaskIdentitiesLoad(config) task.execute() # Check the number of orgs loaded norgs = len(api.registry(self.sh_db)) self.assertEqual(norgs, 20)
def test_valid_organizations_file(self): """Check insertion of valid data from a file""" parser = self.get_parser(datadir('sortinghat_orgs_valid.json')) self.cmd.import_organizations(parser) # Check the contents of the registry orgs = api.registry(self.db) self.assertEqual(len(orgs), 3) # Bitergia org = orgs[0] self.assertEqual(org.name, 'Bitergia') doms = org.domains self.assertEqual(len(doms), 5) dom = doms[0] self.assertEqual(dom.domain, 'api.bitergia.com') self.assertEqual(dom.is_top_domain, False) dom = doms[1] self.assertEqual(dom.domain, 'bitergia.com') self.assertEqual(dom.is_top_domain, True) dom = doms[2] self.assertEqual(dom.domain, 'bitergia.net') self.assertEqual(dom.is_top_domain, True) dom = doms[3] self.assertEqual(dom.domain, 'example.net') self.assertEqual(dom.is_top_domain, False) dom = doms[4] self.assertEqual(dom.domain, 'test.bitergia.com') self.assertEqual(dom.is_top_domain, False) # Example org = orgs[1] self.assertEqual(org.name, 'Example') doms = org.domains self.assertEqual(len(doms), 1) dom = doms[0] self.assertEqual(dom.domain, 'example.com') self.assertEqual(dom.is_top_domain, True) # Unknown org = orgs[2] self.assertEqual(org.name, 'Unknown') doms = org.domains self.assertEqual(len(doms), 0)
def test_empty_organization(self): """Check behavior adding empty organizations""" code = self.cmd.add('') self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, REGISTRY_EMPTY_OUTPUT) # The registry should be empty orgs = api.registry(self.db) self.assertEqual(len(orgs), 0)
def test_load(self): """Test to load identities and organizations from a file""" code = self.cmd.run(datadir('sortinghat_valid.json'), '--verbose') self.assertEqual(code, CMD_SUCCESS) uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) orgs = api.registry(self.db) self.assertEqual(len(orgs), 3) output = sys.stdout.getvalue().strip() self.assertEqual(output, LOAD_OUTPUT)
def test_load_organizations(self): """Test to load organizations from a file""" code = self.cmd.run('--orgs', datadir('sortinghat_orgs_valid.json')) self.assertEqual(code, CMD_SUCCESS) uids = api.unique_identities(self.db) self.assertEqual(len(uids), 0) orgs = api.registry(self.db) self.assertEqual(len(orgs), 3) output = sys.stdout.getvalue().strip() self.assertEqual(output, LOAD_SH_ORGS_OUTPUT) output = sys.stderr.getvalue().strip() self.assertEqual(output, LOAD_ORGS_OUTPUT_WARNING)
def test_load_identities(self): """Test to load identities from a file""" code = self.cmd.run('--identities', 'data/sortinghat_valid.json') self.assertEqual(code, CMD_SUCCESS) uids = api.unique_identities(self.db) self.assertEqual(len(uids), 2) # This has imported the organizations from the enrollments, # not thouse from organizations section orgs = api.registry(self.db) self.assertEqual(len(orgs), 2) output = sys.stdout.getvalue().strip() self.assertEqual(output, LOAD_IDENTITIES_OUTPUT) output = sys.stderr.getvalue().strip() self.assertEqual(output, LOAD_IDENTITIES_OUTPUT_ERROR)
def test_overwrite_domain(self): """Check whether it overwrites the old organization-domain relationship and the top_domain flag""" # Add a pair of organizations and domains first self.cmd.add('Example') self.cmd.add('Example', 'example.com') self.cmd.add('Example', 'example.org') self.cmd.add('Bitergia') self.cmd.add('Bitergia', 'bitergia.com') # Overwrite the relationship assigning the domain to a different # company and top_domain flag code = self.cmd.add('Bitergia', 'example.com', is_top_domain=True, overwrite=True) self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, REGISTRY_EMPTY_OUTPUT) # Check if the domain has been assigned to Bitergia orgs = api.registry(self.db) org1 = orgs[0] self.assertEqual(org1.name, 'Bitergia') doms1 = org1.domains doms1.sort(key=lambda x: x.domain) self.assertEqual(len(doms1), 2) dom = doms1[0] self.assertEqual(dom.domain, 'bitergia.com') dom = doms1[1] self.assertEqual(dom.domain, 'example.com') self.assertEqual(dom.is_top_domain, True) org2 = orgs[1] self.assertEqual(org2.name, 'Example') doms2 = org2.domains doms2.sort(key=lambda x: x.domain) self.assertEqual(len(doms2), 1) dom1 = doms2[0] self.assertEqual(dom1.domain, 'example.org')
def test_import_to_non_empty_registry(self): """Test load (and overwrite) process in a registry with some contents""" # First, load some data api.add_organization(self.db, 'Example') api.add_domain(self.db, 'Example', 'example.com') api.add_organization(self.db, 'Bitergia') api.add_domain(self.db, 'Bitergia', 'bitergia.net') api.add_domain(self.db, 'Bitergia', 'bitergia.com') # Import new data, overwriting existing relationships parser = self.get_parser(datadir('sortinghat_orgs_valid_alt.json')) self.cmd.import_organizations(parser, True) # Check the contents of the registry orgs = api.registry(self.db) self.assertEqual(len(orgs), 4) # Bitergia org = orgs[0] self.assertEqual(org.name, 'Bitergia') doms = org.domains self.assertEqual(len(doms), 4) dom = doms[0] self.assertEqual(dom.domain, 'api.bitergia.com') self.assertEqual(dom.is_top_domain, False) dom = doms[1] self.assertEqual(dom.domain, 'bitergia.com') self.assertEqual(dom.is_top_domain, True) dom = doms[2] self.assertEqual(dom.domain, 'bitergia.net') self.assertEqual(dom.is_top_domain, True) dom = doms[3] self.assertEqual(dom.domain, 'test.bitergia.com') self.assertEqual(dom.is_top_domain, False) # Example org = orgs[1] self.assertEqual(org.name, 'Example') doms = org.domains self.assertEqual(len(doms), 1) dom = doms[0] self.assertEqual(dom.domain, 'example.net') self.assertEqual(dom.is_top_domain, True) # GSyC/LibreSoft org = orgs[2] self.assertEqual(org.name, 'GSyC/LibreSoft') doms = org.domains self.assertEqual(len(doms), 2) dom = doms[0] self.assertEqual(dom.domain, 'example.com') self.assertEqual(dom.is_top_domain, True) dom = doms[1] self.assertEqual(dom.domain, 'libresoft.es') self.assertEqual(dom.is_top_domain, True) # Unknown org = orgs[3] self.assertEqual(org.name, 'Unknown') doms = org.domains self.assertEqual(len(doms), 0)