Merge "Refactor usage of custom_match tests"
diff --git a/tempest/api/object_storage/test_container_services.py b/tempest/api/object_storage/test_container_services.py
index 0d477d9..18199ef 100644
--- a/tempest/api/object_storage/test_container_services.py
+++ b/tempest/api/object_storage/test_container_services.py
@@ -43,6 +43,7 @@
# create a container
container_name = data_utils.rand_name(name='TestContainer')
resp, _ = self.container_client.create_container(container_name)
+ self.assertHeaders(resp, 'Container', 'PUT')
self.containers.append(container_name)
# delete container
resp, _ = self.container_client.delete_container(container_name)
@@ -58,12 +59,14 @@
# create a container
container_name = data_utils.rand_name(name='TestContainer')
resp, _ = self.container_client.create_container(container_name)
+ self.assertHeaders(resp, 'Container', 'PUT')
self.containers.append(container_name)
# create object
object_name = data_utils.rand_name(name='TestObject')
data = data_utils.arbitrary_string()
resp, _ = self.object_client.create_object(container_name,
object_name, data)
+ self.assertHeaders(resp, 'Object', 'PUT')
# set object metadata
meta_key = data_utils.rand_name(name='Meta-Test-')
meta_value = data_utils.rand_name(name='MetaValue-')
@@ -71,6 +74,7 @@
resp, _ = self.object_client.update_object_metadata(container_name,
object_name,
orig_metadata)
+ self.assertHeaders(resp, 'Object', 'POST')
# get container contents list
params = {'format': 'json'}
resp, object_list = \
@@ -91,6 +95,7 @@
# create a container
container_name = data_utils.rand_name(name='TestContainer')
resp, _ = self.container_client.create_container(container_name)
+ self.assertHeaders(resp, 'Container', 'PUT')
self.containers.append(container_name)
# update container metadata
metadata = {'name': 'Pictures',
diff --git a/tempest/api/object_storage/test_object_services.py b/tempest/api/object_storage/test_object_services.py
index 13f197b..bca9b93 100644
--- a/tempest/api/object_storage/test_object_services.py
+++ b/tempest/api/object_storage/test_object_services.py
@@ -14,7 +14,6 @@
# under the License.
import hashlib
-import re
from tempest.api.object_storage import base
from tempest.common import custom_matchers
@@ -264,23 +263,15 @@
resp, _ = self.object_client.list_object_metadata(
self.container_name, object_name)
- # Check only the existence of common headers with custom matcher
- self.assertThat(resp, custom_matchers.ExistsAllResponseHeaders(
- 'Object', 'HEAD'))
- self.assertIn('x-object-manifest', resp)
-
# Etag value of a large object is enclosed in double-quotations.
- # This is a special case, therefore the formats of response headers
- # are checked without a custom matcher.
+ # After etag quotes are checked they are removed and the response is
+ # checked if all common headers are present and well formatted
self.assertTrue(resp['etag'].startswith('\"'))
self.assertTrue(resp['etag'].endswith('\"'))
- self.assertTrue(resp['etag'].strip('\"').isalnum())
- self.assertTrue(re.match("^\d+\.?\d*\Z", resp['x-timestamp']))
- self.assertNotEqual(len(resp['content-type']), 0)
- self.assertTrue(re.match("^tx[0-9a-f]*-[0-9a-f]*$",
- resp['x-trans-id']))
- self.assertNotEqual(len(resp['date']), 0)
- self.assertEqual(resp['accept-ranges'], 'bytes')
+ resp['etag'] = resp['etag'].strip('"')
+ self.assertHeaders(resp, 'Object', 'HEAD')
+
+ self.assertIn('x-object-manifest', resp)
self.assertEqual(resp['x-object-manifest'],
'%s/%s/' % (self.container_name, object_name))
diff --git a/tempest/api/object_storage/test_object_slo.py b/tempest/api/object_storage/test_object_slo.py
index ee7f6a4..0443a80 100644
--- a/tempest/api/object_storage/test_object_slo.py
+++ b/tempest/api/object_storage/test_object_slo.py
@@ -14,7 +14,6 @@
import hashlib
import json
-import re
from tempest.api.object_storage import base
from tempest.common import custom_matchers
@@ -95,29 +94,19 @@
return object_name
def _assertHeadersSLO(self, resp, method):
- # Check the existence of common headers with custom matcher
- self.assertThat(resp, custom_matchers.ExistsAllResponseHeaders(
- 'Object', method))
# When sending GET or HEAD requests to SLO the response contains
# 'X-Static-Large-Object' header
if method in ('GET', 'HEAD'):
self.assertIn('x-static-large-object', resp)
+ self.assertEqual(resp['x-static-large-object'], 'True')
- # Check common headers for all HTTP methods
- self.assertTrue(re.match("^tx[0-9a-f]*-[0-9a-f]*$",
- resp['x-trans-id']))
- self.assertTrue(resp['content-length'].isdigit())
- self.assertNotEqual(len(resp['date']), 0)
# Etag value of a large object is enclosed in double-quotations.
+ # After etag quotes are checked they are removed and the response is
+ # checked if all common headers are present and well formatted
self.assertTrue(resp['etag'].startswith('\"'))
self.assertTrue(resp['etag'].endswith('\"'))
- self.assertTrue(resp['etag'].strip('\"').isalnum())
- # Check header formats for a specific method
- if method in ('GET', 'HEAD'):
- self.assertTrue(re.match("^\d+\.?\d*\Z", resp['x-timestamp']))
- self.assertNotEqual(len(resp['content-type']), 0)
- self.assertEqual(resp['accept-ranges'], 'bytes')
- self.assertEqual(resp['x-static-large-object'], 'True')
+ resp['etag'] = resp['etag'].strip('"')
+ self.assertHeaders(resp, 'Object', method)
@test.attr(type='gate')
def test_upload_manifest(self):