Port API v1 and v2 to Python 3
* Replace jsonutils.dumps() with jsonutils.dump_as_bytes() since output is used for the HTTP body, and HTTP body type is bytes, not Unicode. On Python 3, jsonutils.dumps() returns Unicode. * FakeHttplibSocket: replace io.StringIO with io.BytesIO, HTTP body type is bytes. Encode Unicode to UTF-8. * Fix FakeHttplibSocket.makefile() API: only the first parameter is mandatory. On Python 3, it's only called with the first 'mode' parameter. * Use bytes strings to test HTTP bodies (JSON or XML). * Replace dict.values() with list(dict.values()) to get a list on Python 3. * Replace error.message with encodeutils.exception_to_unicode(error), exceptions loose their message attribute in Python 3. * Update JSON serializer test in test_wsgi.py to use bytes. * tests-py3.txt: add cinder.tests.unit.api.v1 and cinder.tests.unit.api.v2 Partial-Implements: blueprint cinder-python3 Change-Id: I0f0048f4a1344feaa3434cbf7ebd31e3f12d6ae4
This commit is contained in:
parent
4abec53243
commit
30c0f79781
|
@ -409,7 +409,7 @@ class JSONDictSerializer(DictSerializer):
|
||||||
"""Default JSON request body serialization."""
|
"""Default JSON request body serialization."""
|
||||||
|
|
||||||
def default(self, data):
|
def default(self, data):
|
||||||
return jsonutils.dumps(data)
|
return jsonutils.dump_as_bytes(data)
|
||||||
|
|
||||||
|
|
||||||
class XMLDictSerializer(DictSerializer):
|
class XMLDictSerializer(DictSerializer):
|
||||||
|
|
|
@ -436,7 +436,7 @@ class WsgiLimiterProxy(object):
|
||||||
self.limiter_address = limiter_address
|
self.limiter_address = limiter_address
|
||||||
|
|
||||||
def check_for_delay(self, verb, path, username=None):
|
def check_for_delay(self, verb, path, username=None):
|
||||||
body = jsonutils.dumps({"verb": verb, "path": path})
|
body = jsonutils.dump_as_bytes({"verb": verb, "path": path})
|
||||||
headers = {"Content-Type": "application/json"}
|
headers = {"Content-Type": "application/json"}
|
||||||
|
|
||||||
conn = http_client.HTTPConnection(self.limiter_address)
|
conn = http_client.HTTPConnection(self.limiter_address)
|
||||||
|
|
|
@ -433,7 +433,7 @@ class WsgiLimiterProxy(object):
|
||||||
self.limiter_address = limiter_address
|
self.limiter_address = limiter_address
|
||||||
|
|
||||||
def check_for_delay(self, verb, path, username=None):
|
def check_for_delay(self, verb, path, username=None):
|
||||||
body = jsonutils.dumps({"verb": verb, "path": path})
|
body = jsonutils.dump_as_bytes({"verb": verb, "path": path})
|
||||||
headers = {"Content-Type": "application/json"}
|
headers = {"Content-Type": "application/json"}
|
||||||
|
|
||||||
conn = http_client.HTTPConnection(self.limiter_address)
|
conn = http_client.HTTPConnection(self.limiter_address)
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
"""The volumes snapshots api."""
|
"""The volumes snapshots api."""
|
||||||
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
from oslo_utils import encodeutils
|
||||||
from oslo_utils import strutils
|
from oslo_utils import strutils
|
||||||
import webob
|
import webob
|
||||||
from webob import exc
|
from webob import exc
|
||||||
|
@ -177,7 +178,8 @@ class SnapshotsController(wsgi.Controller):
|
||||||
try:
|
try:
|
||||||
force = strutils.bool_from_string(force, strict=True)
|
force = strutils.bool_from_string(force, strict=True)
|
||||||
except ValueError as error:
|
except ValueError as error:
|
||||||
msg = _("Invalid value for 'force': '%s'") % error.message
|
err_msg = encodeutils.exception_to_unicode(error)
|
||||||
|
msg = _("Invalid value for 'force': '%s'") % err_msg
|
||||||
raise exception.InvalidParameterValue(err=msg)
|
raise exception.InvalidParameterValue(err=msg)
|
||||||
|
|
||||||
if force:
|
if force:
|
||||||
|
|
|
@ -216,10 +216,10 @@ class XMLDictSerializerTest(test.TestCase):
|
||||||
class JSONDictSerializerTest(test.TestCase):
|
class JSONDictSerializerTest(test.TestCase):
|
||||||
def test_json(self):
|
def test_json(self):
|
||||||
input_dict = dict(servers=dict(a=(2, 3)))
|
input_dict = dict(servers=dict(a=(2, 3)))
|
||||||
expected_json = '{"servers":{"a":[2,3]}}'
|
expected_json = b'{"servers":{"a":[2,3]}}'
|
||||||
serializer = wsgi.JSONDictSerializer()
|
serializer = wsgi.JSONDictSerializer()
|
||||||
result = serializer.serialize(input_dict)
|
result = serializer.serialize(input_dict)
|
||||||
result = result.replace('\n', '').replace(' ', '')
|
result = result.replace(b'\n', b'').replace(b' ', b'')
|
||||||
self.assertEqual(expected_json, result)
|
self.assertEqual(expected_json, result)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -569,7 +569,7 @@ class WsgiLimiterTest(BaseLimitTestSuite):
|
||||||
|
|
||||||
def _request_data(self, verb, path):
|
def _request_data(self, verb, path):
|
||||||
"""Get data describing a limit request verb/path."""
|
"""Get data describing a limit request verb/path."""
|
||||||
return jsonutils.dumps({"verb": verb, "path": path})
|
return jsonutils.dump_as_bytes({"verb": verb, "path": path})
|
||||||
|
|
||||||
def _request(self, verb, url, username=None):
|
def _request(self, verb, url, username=None):
|
||||||
"""Assert that POSTing to given url triggers given action.
|
"""Assert that POSTing to given url triggers given action.
|
||||||
|
@ -636,9 +636,11 @@ class FakeHttplibSocket(object):
|
||||||
|
|
||||||
def __init__(self, response_string):
|
def __init__(self, response_string):
|
||||||
"""Initialize new `FakeHttplibSocket`."""
|
"""Initialize new `FakeHttplibSocket`."""
|
||||||
self._buffer = six.StringIO(response_string)
|
if isinstance(response_string, six.text_type):
|
||||||
|
response_string = response_string.encode('utf-8')
|
||||||
|
self._buffer = six.BytesIO(response_string)
|
||||||
|
|
||||||
def makefile(self, _mode, _other):
|
def makefile(self, mode, *args):
|
||||||
"""Returns the socket's internal buffer."""
|
"""Returns the socket's internal buffer."""
|
||||||
return self._buffer
|
return self._buffer
|
||||||
|
|
||||||
|
@ -754,8 +756,9 @@ class WsgiLimiterProxyTest(BaseLimitTestSuite):
|
||||||
delay, error = self.proxy.check_for_delay("GET", "/delayed")
|
delay, error = self.proxy.check_for_delay("GET", "/delayed")
|
||||||
error = error.strip()
|
error = error.strip()
|
||||||
|
|
||||||
expected = ("60.00", "403 Forbidden\n\nOnly 1 GET request(s) can be "
|
expected = ("60.00",
|
||||||
"made to /delayed every minute.")
|
b"403 Forbidden\n\nOnly 1 GET request(s) can be "
|
||||||
|
b"made to /delayed every minute.")
|
||||||
|
|
||||||
self.assertEqual(expected, (delay, error))
|
self.assertEqual(expected, (delay, error))
|
||||||
|
|
||||||
|
@ -827,7 +830,7 @@ class LimitsXMLSerializationTest(test.TestCase):
|
||||||
"absolute": {}}}
|
"absolute": {}}}
|
||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
has_dec = output.startswith("<?xml version='1.0' encoding='UTF-8'?>")
|
has_dec = output.startswith(b"<?xml version='1.0' encoding='UTF-8'?>")
|
||||||
self.assertTrue(has_dec)
|
self.assertTrue(has_dec)
|
||||||
|
|
||||||
def test_index(self):
|
def test_index(self):
|
||||||
|
|
|
@ -292,7 +292,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
body = {"metadata": {"key1": "value1",
|
body = {"metadata": {"key1": "value1",
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3"}}
|
"key3": "value3"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
res_dict = self.controller.create(req, self.req_id, body)
|
res_dict = self.controller.create(req, self.req_id, body)
|
||||||
self.assertEqual(body, res_dict)
|
self.assertEqual(body, res_dict)
|
||||||
|
|
||||||
|
@ -326,7 +326,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3",
|
"key3": "value3",
|
||||||
"KEY4": "value4"}}
|
"KEY4": "value4"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
res_dict = self.controller.create(req, self.req_id, body)
|
res_dict = self.controller.create(req, self.req_id, body)
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
|
||||||
|
@ -346,7 +346,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -358,7 +358,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -375,7 +375,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'POST'
|
req.method = 'POST'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {"metadata": {"key9": "value9"}}
|
body = {"metadata": {"key9": "value9"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.create, req, self.req_id, body)
|
self.controller.create, req, self.req_id, body)
|
||||||
|
|
||||||
|
@ -402,7 +402,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
res_dict = self.controller.update_all(req, self.req_id, expected)
|
res_dict = self.controller.update_all(req, self.req_id, expected)
|
||||||
|
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
@ -442,7 +442,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
res_dict = self.controller.update_all(req, self.req_id, body)
|
res_dict = self.controller.update_all(req, self.req_id, body)
|
||||||
|
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
@ -465,7 +465,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': {}}
|
expected = {'metadata': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
res_dict = self.controller.update_all(req, self.req_id, expected)
|
res_dict = self.controller.update_all(req, self.req_id, expected)
|
||||||
|
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
@ -477,7 +477,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'meta': {}}
|
expected = {'meta': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -491,7 +491,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': ['asdf']}
|
expected = {'metadata': ['asdf']}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -503,7 +503,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {'metadata': {'key10': 'value10'}}
|
body = {'metadata': {'key10': 'value10'}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.update_all, req, '100', body)
|
self.controller.update_all, req, '100', body)
|
||||||
|
@ -524,7 +524,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
res_dict = self.controller.update(req, self.req_id, 'key1', body)
|
res_dict = self.controller.update(req, self.req_id, 'key1', body)
|
||||||
expected = {'meta': {'key1': 'value1'}}
|
expected = {'meta': {'key1': 'value1'}}
|
||||||
|
@ -537,7 +537,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
'/v1.1/fake/snapshots/asdf/metadata/key1')
|
'/v1.1/fake/snapshots/asdf/metadata/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
|
@ -562,7 +562,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -583,7 +583,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
|
@ -605,7 +605,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": ("a" * 260)}}
|
body = {"meta": {"key1": ("a" * 260)}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
|
@ -618,7 +618,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -631,7 +631,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -656,18 +656,18 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for long key
|
# test for long key
|
||||||
data = {"metadata": {"a" * 260: "value1"}}
|
data = {"metadata": {"a" * 260: "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
self.controller.create, req, self.req_id, data)
|
self.controller.create, req, self.req_id, data)
|
||||||
|
|
||||||
# test for long value
|
# test for long value
|
||||||
data = {"metadata": {"key": "v" * 260}}
|
data = {"metadata": {"key": "v" * 260}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
self.controller.create, req, self.req_id, data)
|
self.controller.create, req, self.req_id, data)
|
||||||
|
|
||||||
# test for empty key.
|
# test for empty key.
|
||||||
data = {"metadata": {"": "value1"}}
|
data = {"metadata": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.create, req, self.req_id, data)
|
self.controller.create, req, self.req_id, data)
|
||||||
|
|
|
@ -181,7 +181,7 @@ class VolumeTypesSerializerTest(test.TestCase):
|
||||||
|
|
||||||
# Just getting some input data
|
# Just getting some input data
|
||||||
vtypes = return_volume_types_get_all_types(None)
|
vtypes = return_volume_types_get_all_types(None)
|
||||||
text = serializer.serialize({'volume_types': vtypes.values()})
|
text = serializer.serialize({'volume_types': list(vtypes.values())})
|
||||||
|
|
||||||
tree = etree.fromstring(text)
|
tree = etree.fromstring(text)
|
||||||
|
|
||||||
|
|
|
@ -265,7 +265,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
body = {"metadata": {"key1": "value1",
|
body = {"metadata": {"key1": "value1",
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3", }}
|
"key3": "value3", }}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -298,7 +298,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3",
|
"key3": "value3",
|
||||||
"KEY4": "value4"}}
|
"KEY4": "value4"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -323,7 +323,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -335,7 +335,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -353,7 +353,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'POST'
|
req.method = 'POST'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {"metadata": {"key9": "value9"}}
|
body = {"metadata": {"key9": "value9"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.create, req, self.req_id, body)
|
self.controller.create, req, self.req_id, body)
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -409,7 +409,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -428,7 +428,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': {}}
|
expected = {'metadata': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -446,7 +446,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": ("a" * 260)}}
|
body = {"meta": {"key1": ("a" * 260)}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -466,7 +466,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'meta': {}}
|
expected = {'meta': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -481,7 +481,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': ['asdf']}
|
expected = {'metadata': ['asdf']}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -497,7 +497,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {'metadata': {'key10': 'value10'}}
|
body = {'metadata': {'key10': 'value10'}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.update_all, req, '100', body)
|
self.controller.update_all, req, '100', body)
|
||||||
|
@ -510,7 +510,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -528,7 +528,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank('/v1.1/fake/volumes/asdf/metadata/key1')
|
req = fakes.HTTPRequest.blank('/v1.1/fake/volumes/asdf/metadata/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
|
@ -554,7 +554,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -575,7 +575,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -594,7 +594,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -607,7 +607,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -625,7 +625,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for long key
|
# test for long key
|
||||||
data = {"metadata": {"a" * 260: "value1"}}
|
data = {"metadata": {"a" * 260: "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -636,7 +636,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for long value
|
# test for long value
|
||||||
data = {"metadata": {"key": "v" * 260}}
|
data = {"metadata": {"key": "v" * 260}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -647,7 +647,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for empty key.
|
# test for empty key.
|
||||||
data = {"metadata": {"": "value1"}}
|
data = {"metadata": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
|
|
@ -575,7 +575,7 @@ class WsgiLimiterTest(BaseLimitTestSuite):
|
||||||
|
|
||||||
def _request_data(self, verb, path):
|
def _request_data(self, verb, path):
|
||||||
"""Get data describing a limit request verb/path."""
|
"""Get data describing a limit request verb/path."""
|
||||||
return jsonutils.dumps({"verb": verb, "path": path})
|
return jsonutils.dump_as_bytes({"verb": verb, "path": path})
|
||||||
|
|
||||||
def _request(self, verb, url, username=None):
|
def _request(self, verb, url, username=None):
|
||||||
"""POST request to given url by given username.
|
"""POST request to given url by given username.
|
||||||
|
@ -641,9 +641,11 @@ class FakeHttplibSocket(object):
|
||||||
|
|
||||||
def __init__(self, response_string):
|
def __init__(self, response_string):
|
||||||
"""Initialize new `FakeHttplibSocket`."""
|
"""Initialize new `FakeHttplibSocket`."""
|
||||||
self._buffer = six.StringIO(response_string)
|
if isinstance(response_string, six.text_type):
|
||||||
|
response_string = response_string.encode('utf-8')
|
||||||
|
self._buffer = six.BytesIO(response_string)
|
||||||
|
|
||||||
def makefile(self, _mode, _other):
|
def makefile(self, mode, *args):
|
||||||
"""Returns the socket's internal buffer."""
|
"""Returns the socket's internal buffer."""
|
||||||
return self._buffer
|
return self._buffer
|
||||||
|
|
||||||
|
@ -761,8 +763,9 @@ class WsgiLimiterProxyTest(BaseLimitTestSuite):
|
||||||
delay, error = self.proxy.check_for_delay("GET", "/delayed")
|
delay, error = self.proxy.check_for_delay("GET", "/delayed")
|
||||||
error = error.strip()
|
error = error.strip()
|
||||||
|
|
||||||
expected = ("60.00", "403 Forbidden\n\nOnly 1 GET request(s) can be "
|
expected = ("60.00",
|
||||||
"made to /delayed every minute.")
|
b"403 Forbidden\n\nOnly 1 GET request(s) can be "
|
||||||
|
b"made to /delayed every minute.")
|
||||||
|
|
||||||
self.assertEqual(expected, (delay, error))
|
self.assertEqual(expected, (delay, error))
|
||||||
|
|
||||||
|
@ -834,7 +837,7 @@ class LimitsXMLSerializationTest(test.TestCase):
|
||||||
"absolute": {}}}
|
"absolute": {}}}
|
||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
has_dec = output.startswith("<?xml version='1.0' encoding='UTF-8'?>")
|
has_dec = output.startswith(b"<?xml version='1.0' encoding='UTF-8'?>")
|
||||||
self.assertTrue(has_dec)
|
self.assertTrue(has_dec)
|
||||||
|
|
||||||
def test_index(self):
|
def test_index(self):
|
||||||
|
|
|
@ -293,7 +293,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
body = {"metadata": {"key1": "value1",
|
body = {"metadata": {"key1": "value1",
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3"}}
|
"key3": "value3"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
res_dict = self.controller.create(req, self.req_id, body)
|
res_dict = self.controller.create(req, self.req_id, body)
|
||||||
self.assertEqual(body, res_dict)
|
self.assertEqual(body, res_dict)
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3",
|
"key3": "value3",
|
||||||
"KEY4": "value4"}}
|
"KEY4": "value4"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
res_dict = self.controller.create(req, self.req_id, body)
|
res_dict = self.controller.create(req, self.req_id, body)
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
|
||||||
|
@ -347,7 +347,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -359,7 +359,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -376,7 +376,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'POST'
|
req.method = 'POST'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {"metadata": {"key9": "value9"}}
|
body = {"metadata": {"key9": "value9"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.create, req, self.req_id, body)
|
self.controller.create, req, self.req_id, body)
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
res_dict = self.controller.update_all(req, self.req_id, expected)
|
res_dict = self.controller.update_all(req, self.req_id, expected)
|
||||||
|
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
@ -443,7 +443,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
res_dict = self.controller.update_all(req, self.req_id, body)
|
res_dict = self.controller.update_all(req, self.req_id, body)
|
||||||
|
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
@ -466,7 +466,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': {}}
|
expected = {'metadata': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
res_dict = self.controller.update_all(req, self.req_id, expected)
|
res_dict = self.controller.update_all(req, self.req_id, expected)
|
||||||
|
|
||||||
self.assertEqual(expected, res_dict)
|
self.assertEqual(expected, res_dict)
|
||||||
|
@ -478,7 +478,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'meta': {}}
|
expected = {'meta': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -491,7 +491,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': ['asdf']}
|
expected = {'metadata': ['asdf']}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -503,7 +503,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {'metadata': {'key10': 'value10'}}
|
body = {'metadata': {'key10': 'value10'}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.update_all, req, '100', body)
|
self.controller.update_all, req, '100', body)
|
||||||
|
@ -524,7 +524,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
res_dict = self.controller.update(req, self.req_id, 'key1', body)
|
res_dict = self.controller.update(req, self.req_id, 'key1', body)
|
||||||
expected = {'meta': {'key1': 'value1'}}
|
expected = {'meta': {'key1': 'value1'}}
|
||||||
|
@ -537,7 +537,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
'/v2/fake/snapshots/asdf/metadata/key1')
|
'/v2/fake/snapshots/asdf/metadata/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
|
@ -562,7 +562,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -583,7 +583,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
|
@ -605,7 +605,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": ("a" * 260)}}
|
body = {"meta": {"key1": ("a" * 260)}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
|
@ -618,7 +618,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -631,7 +631,7 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -656,18 +656,18 @@ class SnapshotMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for long key
|
# test for long key
|
||||||
data = {"metadata": {"a" * 260: "value1"}}
|
data = {"metadata": {"a" * 260: "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
self.controller.create, req, self.req_id, data)
|
self.controller.create, req, self.req_id, data)
|
||||||
|
|
||||||
# test for long value
|
# test for long value
|
||||||
data = {"metadata": {"key": "v" * 260}}
|
data = {"metadata": {"key": "v" * 260}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||||
self.controller.create, req, self.req_id, data)
|
self.controller.create, req, self.req_id, data)
|
||||||
|
|
||||||
# test for empty key.
|
# test for empty key.
|
||||||
data = {"metadata": {"": "value1"}}
|
data = {"metadata": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.create, req, self.req_id, data)
|
self.controller.create, req, self.req_id, data)
|
||||||
|
|
|
@ -54,7 +54,7 @@ def return_volume_types_get_all_types(context, filters=None, marker=None,
|
||||||
vol_type_3=stub_volume_type(3)
|
vol_type_3=stub_volume_type(3)
|
||||||
)
|
)
|
||||||
if list_result:
|
if list_result:
|
||||||
return result.values()
|
return list(result.values())
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ class VolumeTypesSerializerTest(test.TestCase):
|
||||||
|
|
||||||
# Just getting some input data
|
# Just getting some input data
|
||||||
vtypes = return_volume_types_get_all_types(None)
|
vtypes = return_volume_types_get_all_types(None)
|
||||||
text = serializer.serialize({'volume_types': vtypes.values()})
|
text = serializer.serialize({'volume_types': list(vtypes.values())})
|
||||||
|
|
||||||
tree = etree.fromstring(text)
|
tree = etree.fromstring(text)
|
||||||
|
|
||||||
|
|
|
@ -277,7 +277,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
body = {"metadata": {"key1": "value1",
|
body = {"metadata": {"key1": "value1",
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3", }}
|
"key3": "value3", }}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -299,7 +299,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
body = {"metadata": {"key1": "value1",
|
body = {"metadata": {"key1": "value1",
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3", }}
|
"key3": "value3", }}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -333,7 +333,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
"key2": "value2",
|
"key2": "value2",
|
||||||
"key3": "value3",
|
"key3": "value3",
|
||||||
"KEY4": "value4"}}
|
"KEY4": "value4"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -358,7 +358,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -370,7 +370,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -388,7 +388,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'POST'
|
req.method = 'POST'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {"metadata": {"key9": "value9"}}
|
body = {"metadata": {"key9": "value9"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.create, req, self.req_id, body)
|
self.controller.create, req, self.req_id, body)
|
||||||
|
|
||||||
|
@ -407,7 +407,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -432,7 +432,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -471,7 +471,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
'KEY20': 'value20',
|
'KEY20': 'value20',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -490,7 +490,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': {}}
|
expected = {'metadata': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -507,7 +507,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'meta': {}}
|
expected = {'meta': {}}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -520,7 +520,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
expected = {'metadata': ['asdf']}
|
expected = {'metadata': ['asdf']}
|
||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dump_as_bytes(expected)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
self.controller.update_all, req, self.req_id,
|
self.controller.update_all, req, self.req_id,
|
||||||
|
@ -532,7 +532,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
req.content_type = "application/json"
|
req.content_type = "application/json"
|
||||||
body = {'metadata': {'key10': 'value10'}}
|
body = {'metadata': {'key10': 'value10'}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
self.controller.update_all, req, '100', body)
|
self.controller.update_all, req, '100', body)
|
||||||
|
@ -545,7 +545,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -584,7 +584,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank('/v2/fake/volumes/asdf/metadata/key1')
|
req = fakes.HTTPRequest.blank('/v2/fake/volumes/asdf/metadata/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPNotFound,
|
self.assertRaises(webob.exc.HTTPNotFound,
|
||||||
|
@ -610,7 +610,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"": "value1"}}
|
body = {"meta": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -631,7 +631,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {("a" * 260): "value1"}}
|
body = {"meta": {("a" * 260): "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -652,7 +652,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": ("a" * 260)}}
|
body = {"meta": {"key1": ("a" * 260)}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
|
@ -671,7 +671,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
req = fakes.HTTPRequest.blank(self.url + '/key1')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
body = {"meta": {"key1": "value1", "key2": "value2"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -684,7 +684,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
req = fakes.HTTPRequest.blank(self.url + '/bad')
|
||||||
req.method = 'PUT'
|
req.method = 'PUT'
|
||||||
body = {"meta": {"key1": "value1"}}
|
body = {"meta": {"key1": "value1"}}
|
||||||
req.body = jsonutils.dumps(body)
|
req.body = jsonutils.dump_as_bytes(body)
|
||||||
req.headers["content-type"] = "application/json"
|
req.headers["content-type"] = "application/json"
|
||||||
|
|
||||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||||
|
@ -702,7 +702,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for long key
|
# test for long key
|
||||||
data = {"metadata": {"a" * 260: "value1"}}
|
data = {"metadata": {"a" * 260: "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -713,7 +713,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for long value
|
# test for long value
|
||||||
data = {"metadata": {"key": "v" * 260}}
|
data = {"metadata": {"key": "v" * 260}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
@ -724,7 +724,7 @@ class volumeMetaDataTest(test.TestCase):
|
||||||
|
|
||||||
# test for empty key.
|
# test for empty key.
|
||||||
data = {"metadata": {"": "value1"}}
|
data = {"metadata": {"": "value1"}}
|
||||||
req.body = jsonutils.dumps(data)
|
req.body = jsonutils.dump_as_bytes(data)
|
||||||
req.environ['cinder.context'] = fake_context
|
req.environ['cinder.context'] = fake_context
|
||||||
|
|
||||||
with mock.patch.object(self.controller.volume_api,
|
with mock.patch.object(self.controller.volume_api,
|
||||||
|
|
|
@ -27,7 +27,8 @@ cinder.tests.unit.api.test_common
|
||||||
cinder.tests.unit.api.test_extensions
|
cinder.tests.unit.api.test_extensions
|
||||||
cinder.tests.unit.api.test_versions
|
cinder.tests.unit.api.test_versions
|
||||||
cinder.tests.unit.api.test_xmlutil
|
cinder.tests.unit.api.test_xmlutil
|
||||||
cinder.tests.unit.api.v2.test_volumes
|
cinder.tests.unit.api.v1
|
||||||
|
cinder.tests.unit.api.v2
|
||||||
cinder.tests.unit.backup.drivers.test_backup_glusterfs
|
cinder.tests.unit.backup.drivers.test_backup_glusterfs
|
||||||
cinder.tests.unit.backup.drivers.test_backup_nfs
|
cinder.tests.unit.backup.drivers.test_backup_nfs
|
||||||
cinder.tests.unit.backup.drivers.test_backup_posix
|
cinder.tests.unit.backup.drivers.test_backup_posix
|
||||||
|
|
Loading…
Reference in New Issue