Merge "fix sever not deleted issue in test_attach_detach_volume."
diff --git a/tempest/services/volume/xml/admin/volume_types_client.py b/tempest/services/volume/xml/admin/volume_types_client.py
index 74d4631..ba4ba67 100644
--- a/tempest/services/volume/xml/admin/volume_types_client.py
+++ b/tempest/services/volume/xml/admin/volume_types_client.py
@@ -177,11 +177,14 @@
url = "types/%s/extra_specs/%s" % (str(vol_type_id),
str(extra_spec_name))
extra_specs = Element("extra_specs", xmlns=XMLNS_11)
- for key, value in extra_spec.items():
- spec = Element('extra_spec')
- spec.add_attr('key', key)
- spec.append(Text(value))
- extra_specs.append(spec)
+
+ if extra_spec is not None:
+ for key, value in extra_spec.items():
+ spec = Element('extra_spec')
+ spec.add_attr('key', key)
+ spec.append(Text(value))
+ extra_specs.append(spec)
+
resp, body = self.put(url, str(Document(extra_specs)),
self.headers)
body = xml_to_json(etree.fromstring(body))
diff --git a/tempest/tests/compute/admin/test_flavors_extra_specs.py b/tempest/tests/compute/admin/test_flavors_extra_specs.py
index 711b73f..01bff98 100644
--- a/tempest/tests/compute/admin/test_flavors_extra_specs.py
+++ b/tempest/tests/compute/admin/test_flavors_extra_specs.py
@@ -16,9 +16,9 @@
# under the License.
from tempest import exceptions
+from tempest.test import attr
from tempest.tests import compute
from tempest.tests.compute import base
-import testtools
class FlavorsExtraSpecsTestJSON(base.BaseComputeAdminTest):
@@ -80,51 +80,35 @@
self.client.unset_flavor_extra_spec(self.flavor['id'], "key1")
self.assertEqual(unset_resp.status, 200)
- @testtools.skip('Until bug 1094142 is resolved.')
- def test_flavor_non_admin_set_get_unset_keys(self):
- #Test to SET, GET UNSET flavor extra spec as a user
- #with out admin privileges.
- self.nonadmin_client = self.flavors_client
- #Assigning extra specs values that are to be set
+ @attr('negative')
+ def test_flavor_non_admin_set_keys(self):
+ #Test to SET flavor extra spec as a user without admin privileges.
specs = {"key1": "value1", "key2": "value2"}
- msg = None
+ self.assertRaises(exceptions.Unauthorized,
+ self.flavors_client.set_flavor_extra_spec,
+ self.flavor['id'],
+ specs)
- #Verify if able to SET flavor extraspec with non-admin user
- try:
- set_resp, set_body = \
- self.nonadmin_client.set_flavor_extra_spec(
- self.flavor['id'], specs)
- except exceptions.Unauthorized:
- pass
- else:
- msg = "Flavor extra specs is being SET"
- msg += " by unauthorized non-admin user.\n"
- #SET flavor extra specs with admin user
- #so as to check GET/UNSET flavor extra specs with non-admin
- set_resp, set_body =\
- self.client.set_flavor_extra_spec(self.flavor['id'], specs)
- #Verify if able to GET flavor extraspec with non-admin user
- try:
- get_resp, get_body = \
- self.nonadmin_client.get_flavor_extra_spec('')
- self.assertEqual(get_resp.status, 200)
- except Exception as e:
- msg += "Got an exception when GET Flavor extra specs"
- msg += " by non-admin user. Exception is: %s\n" % e
- #Verify if able to UNSET flavor extraspec with non-admin user
- try:
- unset_resp, _ = \
- self.nonadmin_client.unset_flavor_extra_spec(self.flavor['id'],
- "key1")
- except exceptions.Unauthorized:
- pass
- else:
- msg += "Flavor extra specs is being UNSET"
- msg += " by unauthorized non-admin user.\n"
- #Verification to check if actions failed.
- #msg variable would contain the message according to the failures.
- if msg is not None:
- self.fail(msg)
+ def test_flavor_non_admin_get_keys(self):
+ specs = {"key1": "value1", "key2": "value2"}
+ set_resp, set_body = self.client.set_flavor_extra_spec(
+ self.flavor['id'], specs)
+ resp, body = self.flavors_client.get_flavor_extra_spec(
+ self.flavor['id'])
+ self.assertEqual(resp.status, 200)
+ for key in specs:
+ self.assertEquals(body[key], specs[key])
+
+ @attr('negative')
+ def test_flavor_non_admin_unset_keys(self):
+ specs = {"key1": "value1", "key2": "value2"}
+ set_resp, set_body = self.client.set_flavor_extra_spec(
+ self.flavor['id'], specs)
+
+ self.assertRaises(exceptions.Unauthorized,
+ self.flavors_client.unset_flavor_extra_spec,
+ self.flavor['id'],
+ 'key1')
class FlavorsExtraSpecsTestXML(FlavorsExtraSpecsTestJSON):
diff --git a/tempest/tests/compute/images/test_images_oneserver.py b/tempest/tests/compute/images/test_images_oneserver.py
index d89b6dd..f7008f0 100644
--- a/tempest/tests/compute/images/test_images_oneserver.py
+++ b/tempest/tests/compute/images/test_images_oneserver.py
@@ -154,7 +154,6 @@
self.client.wait_for_image_status(image_id, 'ACTIVE')
@attr(type='negative')
- @testtools.skip("Until Bug 1004564 is fixed")
def test_create_image_specify_name_over_256_chars(self):
# Return an error if snapshot name over 256 characters is passed
diff --git a/tempest/tests/compute/servers/test_server_personality.py b/tempest/tests/compute/servers/test_server_personality.py
index c529c43..0546859 100644
--- a/tempest/tests/compute/servers/test_server_personality.py
+++ b/tempest/tests/compute/servers/test_server_personality.py
@@ -42,36 +42,26 @@
path = 'etc/test' + str(i) + '.txt'
personality.append({'path': path,
'contents': base64.b64encode(file_contents)})
- try:
- self.create_server(personality=personality)
- except exceptions.OverLimit:
- pass
- else:
- self.fail('This request did not fail as expected')
+ self.assertRaises(exceptions.OverLimit, self.create_server,
+ personality=personality)
@attr(type='positive')
def test_can_create_server_with_max_number_personality_files(self):
# Server should be created successfully if maximum allowed number of
# files is injected into the server during creation.
- try:
- file_contents = 'This is a test file.'
-
- max_file_limit = \
- self.user_client.get_specific_absolute_limit("maxPersonality")
-
- person = []
- for i in range(0, int(max_file_limit)):
- path = 'etc/test' + str(i) + '.txt'
- person.append({
- 'path': path,
- 'contents': base64.b64encode(file_contents),
- })
- resp, server = self.create_server(personality=person)
- self.assertEqual('202', resp['status'])
-
- #Teardown
- finally:
- self.client.delete_server(server['id'])
+ file_contents = 'This is a test file.'
+ max_file_limit = \
+ self.user_client.get_specific_absolute_limit("maxPersonality")
+ person = []
+ for i in range(0, int(max_file_limit)):
+ path = 'etc/test' + str(i) + '.txt'
+ person.append({
+ 'path': path,
+ 'contents': base64.b64encode(file_contents),
+ })
+ resp, server = self.create_server(personality=person)
+ self.addCleanup(self.client.delete_server, server['id'])
+ self.assertEqual('202', resp['status'])
class ServerPersonalityTestXML(ServerPersonalityTestJSON):
diff --git a/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py b/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py
index e201853..6b274c6 100644
--- a/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py
+++ b/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py
@@ -40,7 +40,6 @@
super(ExtraSpecsNegativeTest, cls).tearDownClass()
cls.client.delete_volume_type(cls.volume_type['id'])
- @testtools.skip('Until bug 1090320 is fixed')
def test_update_no_body(self):
# Should not update volume type extra specs with no body
extra_spec = {"spec1": "val2"}