class TestOrgsRegistry(unittest.TestCase): def setUp(self): if not hasattr(sys.stdout, 'getvalue'): self.fail('This test needs to be run in buffered mode') # Create a dataset to test the registry self.db = Database(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST, DB_PORT) api.add_organization(self.db, 'Example') api.add_domain(self.db, 'Example', 'example.com') api.add_domain(self.db, 'Example', 'example.org') api.add_domain(self.db, 'Example', 'example.net') api.add_organization(self.db, 'Bitergia') api.add_domain(self.db, 'Bitergia', 'bitergia.net') api.add_domain(self.db, 'Bitergia', 'bitergia.com', is_top_domain=True) api.add_organization(self.db, 'LibreSoft') # Create command self.kwargs = {'user' : DB_USER, 'password' : DB_PASSWORD, 'database' :DB_NAME, 'host' : DB_HOST, 'port' : DB_PORT} self.cmd = Organizations(**self.kwargs) def tearDown(self): self.db.clear() def test_registry(self): """Check registry output list""" code = self.cmd.registry() self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, REGISTRY_OUTPUT) def test_registry_term(self): """Check if it returns the info about orgs using a search term""" # Add an extra organization first api.add_organization(self.db, 'MyExample') api.add_domain(self.db, 'MyExample', 'myexample.com') code = self.cmd.registry('Example') self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, REGISTRY_OUTPUT_EXAMPLE) def test_not_found_term(self): """Check whether it prints an error for not existing organizations""" code = self.cmd.registry('Bitergium') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip() self.assertEqual(output, REGISTRY_ORG_NOT_FOUND_ERROR) def test_empty_registry(self): """Check output when the registry is empty""" # Delete the contents of the database self.db.clear() code = self.cmd.registry() self.assertEqual(code, CMD_SUCCESS) output = sys.stdout.getvalue().strip() self.assertEqual(output, REGISTRY_EMPTY_OUTPUT)
class TestOrgsAdd(unittest.TestCase): def setUp(self): if not hasattr(sys.stdout, 'getvalue'): self.fail('This test needs to be run in buffered mode') # Create a connection to check the contents of the registry self.db = Database(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST, DB_PORT) # Create command self.kwargs = {'user' : DB_USER, 'password' : DB_PASSWORD, 'database' :DB_NAME, 'host' : DB_HOST, 'port' : DB_PORT} self.cmd = Organizations(**self.kwargs) def tearDown(self): self.db.clear() def test_add(self): """Check whether everything works ok when adding organizations and domains""" code = self.cmd.add('Example') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('Example', 'example.com') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('Bitergia') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('Bitergia', 'bitergia.net') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('Bitergia', 'bitergia.com', is_top_domain=True) self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('LibreSoft', '') # This will work like adding a organization self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('Example', 'example.org') self.assertEqual(code, CMD_SUCCESS) code = self.cmd.add('Example', 'example.net') self.assertEqual(code, CMD_SUCCESS) # List the registry and check the output self.cmd.registry() output = sys.stdout.getvalue().strip() self.assertEqual(output, REGISTRY_OUTPUT) def test_existing_organization(self): """Check if it fails adding an organization that already exists""" code1 = self.cmd.add('Bitergium') self.assertEqual(code1, CMD_SUCCESS) code2 = self.cmd.add('Bitergium') self.assertEqual(code2, CODE_ALREADY_EXISTS_ERROR) output = sys.stderr.getvalue().strip() self.assertEqual(output, REGISTRY_ORG_ALREADY_EXISTS_ERROR) def test_non_existing_organization(self): """Check if it fails adding domains to not existing organizations""" code = self.cmd.add('Bitergium', 'bitergium.com') self.assertEqual(code, CODE_NOT_FOUND_ERROR) output = sys.stderr.getvalue().strip() self.assertEqual(output, REGISTRY_ORG_NOT_FOUND_ERROR) def test_existing_domain(self): """Check if it fails adding a domain that already exists""" # Add a pair of organizations and domains first self.cmd.add('Example') self.cmd.add('Example', 'example.com') self.cmd.add('Bitergia') self.cmd.add('Bitergia', 'bitergia.com') # Add 'bitergia.com' to 'Example' org # It should print an error code = self.cmd.add('Example', 'bitergia.com') self.assertEqual(code, CODE_ALREADY_EXISTS_ERROR) output = sys.stderr.getvalue().strip() self.assertEqual(output, REGISTRY_DOM_ALREADY_EXISTS_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_none_organization(self): """Check behavior adding None organizations""" code = self.cmd.add(None) 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_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)