diff --git a/tests/integration/tests/api/flavors.py b/tests/integration/tests/api/flavors.py index d4a8e416..63231273 100644 --- a/tests/integration/tests/api/flavors.py +++ b/tests/integration/tests/api/flavors.py @@ -18,16 +18,18 @@ import os from nose.tools import assert_equal from nose.tools import assert_false from nose.tools import assert_true +from novaclient import exceptions as nova_exceptions from proboscis import before_class from proboscis import test +from proboscis.asserts import assert_raises import tests from tests.util import create_dbaas_client from tests.util import create_nova_client from tests.util import test_config from tests.util.users import Requirements - +from tests.util.check import AttrCheck GROUP = "dbaas.api.flavors" @@ -119,3 +121,29 @@ class Flavors(object): assert_false(found_index is None, msg) for flavor in dbaas_flavors: assert_link_list_is_equal(flavor) + + @test + def test_flavor_list_attrs(self): + expected_attrs =['id', 'name', 'ram', 'links'] + flavors = self.rd_client.flavors.list() + attrcheck = AttrCheck() + for flavor in flavors: + flavor_dict = flavor._info + attrcheck.attrs_exist(flavor_dict, expected_attrs, + msg="Flavors list") + attrcheck.links(flavor_dict['links']) + + @test + def test_flavor_get_attrs(self): + expected_attrs =['id', 'name', 'ram', 'links'] + flavor = self.rd_client.flavors.get(1) + attrcheck = AttrCheck() + flavor_dict = flavor._info + attrcheck.attrs_exist(flavor_dict, expected_attrs, + msg="Flavor Get 1") + attrcheck.links(flavor_dict['links']) + + @test + def test_flavor_not_found(self): + assert_raises(nova_exceptions.NotFound, + self.rd_client.flavors.get, "detail") diff --git a/tests/integration/tests/api/instances.py b/tests/integration/tests/api/instances.py index 9f7d7880..a909f7dc 100644 --- a/tests/integration/tests/api/instances.py +++ b/tests/integration/tests/api/instances.py @@ -60,6 +60,7 @@ from tests.util import process from tests.util.users import Requirements from tests.util import string_in_list from tests.util import poll_until +from tests.util.check import AttrCheck from tests import TEST_MGMT from tests import WHITE_BOX @@ -841,27 +842,13 @@ class VerifyInstanceMgmtInfo(object): assert_true('name' in user, "'name' not in users element.") -class CheckInstance(Check): +class CheckInstance(AttrCheck): """Class to check various attributes of Instance details""" def __init__(self, instance): super(CheckInstance, self).__init__() self.instance = instance - def fail(self, msg): - self.true(False, msg) - - def attrs_exist(self, list, expected_attrs, msg=None): - # Check these attrs only are returned in create response - for attr in list: - if attr not in expected_attrs: - self.fail("%s should not contain '%s'" % (msg, attr)) - - def links(self, links): - expected_attrs = ['href', 'rel'] - for link in links: - self.attrs_exist(link, expected_attrs, msg="Links") - def flavor(self): if 'flavor' not in self.instance: self.fail("'flavor' not found in instance.") diff --git a/tests/integration/tests/util/check.py b/tests/integration/tests/util/check.py index 29194627..7a62bd5b 100644 --- a/tests/integration/tests/util/check.py +++ b/tests/integration/tests/util/check.py @@ -21,6 +21,7 @@ from proboscis.asserts import assert_equal from proboscis.asserts import assert_false from proboscis.asserts import assert_not_equal from proboscis.asserts import assert_true +from proboscis.asserts import Check def get_stack_trace_of_caller(level_up): @@ -103,3 +104,24 @@ class Checker(object): def true(self, *args, **kwargs): self._run_assertion(assert_true, *args, **kwargs) + + +class AttrCheck(Check): + """Class for attr checks, links and other common items.""" + + def __init__(self): + super(AttrCheck, self).__init__() + + def fail(self, msg): + self.true(False, msg) + + def attrs_exist(self, list, expected_attrs, msg=None): + # Check these attrs only are returned in create response + for attr in list: + if attr not in expected_attrs: + self.fail("%s should not contain '%s'" % (msg, attr)) + + def links(self, links): + expected_attrs = ['href', 'rel'] + for link in links: + self.attrs_exist(link, expected_attrs, msg="Links")