示例#1
0
class TestClasses(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.engine = create_engine('sqlite://', echo=False)
        self.manager = Manager(self.engine)

        self.loadManagerData()

    @classmethod
    def tearDownClass(self):
        pass

    @classmethod
    def loadManagerData(self):
        # Add companies
        self.companies = {}
        acme = self.manager.add_company(company_name='Acme')
        redhat = self.manager.add_company(company_name='RedHat')
        self.companies.update({'acme': acme})
        self.companies.update({'redhat': redhat})

        # Add offices
        self.offices = {}
        austin = self.manager.add_office(office_name='Austin',
                                         company_name=acme.name)
        houston = self.manager.add_office(office_name='Houston',
                                          company_name=acme.name)
        dallas = self.manager.add_office(office_name='Dallas',
                                         company_name=redhat.name)
        self.offices.update({'austin': austin})
        self.offices.update({'houston': houston})
        self.offices.update({'dallas': dallas})

        # Add groups
        self.groups = {}
        it = self.manager.add_group(group_name='IT',
                                    company_name=acme.name,
                                    office_name=austin.name)
        dev = self.manager.add_group(group_name='Dev',
                                     company_name=acme.name,
                                     office_name=austin.name)
        ops = self.manager.add_group(group_name='Ops',
                                     company_name=redhat.name,
                                     office_name=dallas.name)

        self.groups.update({'it': it})
        self.groups.update({'dev': dev})
        self.groups.update({'ops': ops})
        self.austin_groups = [it.name, dev.name]
        self.dallas_groups = [ops.name]

        # Add hosts
        self.hosts = {}
        roadrunner = self.manager.add_host(hostname='roadrunner',
                                           company_name=acme.name,
                                           office_name=austin.name,
                                           group_names=self.austin_groups)
        coyote = self.manager.add_host(hostname='coyote',
                                       company_name=acme.name,
                                       office_name=austin.name,
                                       group_names=self.austin_groups)
        bugs = self.manager.add_host(hostname='bugs',
                                     company_name=redhat.name,
                                     office_name=dallas.name,
                                     group_names=self.dallas_groups)

        self.hosts.update({'roadrunner': roadrunner})
        self.hosts.update({'coyote': coyote})
        self.hosts.update({'bugs': bugs})

    def test_Company(self):

        # Ensure you cant add a company
        testCo = self.manager.add_company(company_name="TestCompany")
        self.assertIsNotNone(testCo)

        # Ensure you can delete a company
        testCo = self.manager.del_company(company_name="TestCompany")
        testCo = self.manager.get_company(company_name="TestCompany")
        self.assertIsNone(testCo)

        # Ensure you can't add same company twice
        testCo = self.manager.add_company(company_name="Acme")
        self.assertIsNone(testCo)

        # Ensure that you can't add a company without Name
        testCo = self.manager.add_company(company_name=None)
        self.assertIsNone(testCo)

    def test_Office(self):

        acme = self.companies.get('acme')

        # Ensure you can add an office
        nowhere = self.manager.add_office(office_name="Nowhere",
                                          company_name=acme.name)
        self.assertIsNotNone(nowhere)

        # Ensure you can del an office
        nowhere = self.manager.del_office(office_name="Nowhere",
                                          company_name=acme.name)
        nowhere = self.manager.get_office(office_name="Nowhere",
                                          company_name=acme.name)
        self.assertIsNone(nowhere)

        # Ensure you can't add same office twice
        nowhere = self.manager.add_office(office_name="Austin",
                                          company_name=acme.name)
        self.assertIsNone(nowhere)

        # Ensure you can't add office without valid company
        nowhere = self.manager.add_office(office_name="Somewhere",
                                          company_name=None)
        self.assertIsNone(nowhere)

    def test_Group(self):
        LOG.info("Checking Group Methods...")
        acme = self.companies.get('acme')
        austin = self.offices.get('austin')

        # Ensure you can't add same group twice
        it = self.manager.add_group(group_name='IT',
                                    company_name=acme.name,
                                    office_name=austin.name)
        self.assertIsNone(it)

        # Ensure you can't add group without valid company
        it = self.manager.add_group(group_name='IT',
                                    company_name="BogusCompany",
                                    office_name=austin.name)
        self.assertIsNone(it)

        # Ensure you can't add group without a company
        it = self.manager.add_group(group_name='IT',
                                    company_name=None,
                                    office_name=austin.name)
        self.assertIsNone(it)

        # Ensure you can delete group
        it = self.manager.del_group(group_name='IT',
                                    company_name=acme.name,
                                    office_name=austin.name)
        self.assertIsNone(it)

        # Ensure you can add a group
        it = self.manager.add_group(group_name='IT',
                                    company_name=acme.name,
                                    office_name=austin.name)
        self.assertIsNotNone(it)

    def test_Host(self):
        LOG.info("Checking Host Integrity...")
        acme = self.companies.get('acme')
        redhat = self.companies.get('redhat')

        austin = self.offices.get('austin')
        dallas = self.offices.get('dallas')

        # Ensure you can't add same host twice
        duplicate = self.manager.add_host(hostname='bugs',
                                          company_name=redhat.name,
                                          office_name=dallas.name,
                                          group_names=self.dallas_groups)
        self.assertIsNone(duplicate)

        bugs = self.manager.add_host(hostname='bugs',
                                     company_name=acme.name,
                                     office_name=austin.name,
                                     group_names=self.austin_groups)
        self.assertIsNotNone(bugs)

        # Ensure you can't add host with Null office_name
        daffy = self.manager.add_host(hostname='bugs',
                                      company_name=acme.name,
                                      office_name='',
                                      group_names=self.austin_groups)
        self.assertIsNone(daffy)

        # Ensure you can't add host with empty groups
        daffy = self.manager.add_host(hostname='bugs',
                                      company_name=acme.name,
                                      office_name=austin.name,
                                      group_names=[])
        self.assertIsNone(daffy)

        # Ensure you can get host
        host = self.manager.get_host(hostname='roadrunner',
                                     company_name=acme.name,
                                     office_name=austin.name)
        self.assertIsNotNone(host)

        # Ensure you can get hosts
        hosts = self.manager.get_hosts(company_name=acme.name,
                                       office_name=austin.name)
        self.assertIsNotNone(hosts)

        # Ensure you can delete hosts
        host = self.manager.del_host(hostname='roadrunner',
                                     company_name=acme.name,
                                     office_name=austin.name)
        self.assertIsNone(host)

        host = self.manager.get_host(hostname='roadrunner',
                                     company_name=acme.name,
                                     office_name=austin.name)
        self.assertIsNone(host)