From f44800f1eb649d83a338d320020d3479fc3b6790 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Mon, 22 Jun 2015 14:59:59 +0000 Subject: [PATCH] Python3: do not set Request.body to a text string In Python 3, Request.body must be set to a bytes object. Change-Id: I17785d1e9eb253a1c6cae300b207fb0a08873b0e Blueprint: neutron-python3 --- neutron/tests/unit/api/v2/test_resource.py | 2 +- neutron/tests/unit/test_wsgi.py | 8 ++++---- neutron/tests/unit/testlib_api.py | 6 +++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/neutron/tests/unit/api/v2/test_resource.py b/neutron/tests/unit/api/v2/test_resource.py index 6d728ec13..96c7d2da2 100644 --- a/neutron/tests/unit/api/v2/test_resource.py +++ b/neutron/tests/unit/api/v2/test_resource.py @@ -32,7 +32,7 @@ class RequestTestCase(base.BaseTestCase): def test_content_type_missing(self): request = wsgi.Request.blank('/tests/123', method='POST') - request.body = "" + request.body = b"" self.assertIsNone(request.get_content_type()) def test_content_type_with_charset(self): diff --git a/neutron/tests/unit/test_wsgi.py b/neutron/tests/unit/test_wsgi.py index 68c3c64cf..0f94a14ca 100644 --- a/neutron/tests/unit/test_wsgi.py +++ b/neutron/tests/unit/test_wsgi.py @@ -358,14 +358,14 @@ class RequestTest(base.BaseTestCase): def test_content_type_missing(self): request = wsgi.Request.blank('/tests/123', method='POST') - request.body = "" + request.body = b"" self.assertIsNone(request.get_content_type()) def test_content_type_unsupported(self): request = wsgi.Request.blank('/tests/123', method='POST') request.headers["Content-Type"] = "text/html" - request.body = "fake
" + request.body = b"fake
" self.assertIsNone(request.get_content_type()) @@ -618,7 +618,7 @@ class ResourceTest(base.BaseTestCase): def test_malformed_request_body_throws_bad_request(self): resource = wsgi.Resource(None, self.my_fault_body_function) request = wsgi.Request.blank( - "/", body="{mal:formed", method='POST', + "/", body=b"{mal:formed", method='POST', headers={'Content-Type': "application/json"}) response = resource(request) @@ -627,7 +627,7 @@ class ResourceTest(base.BaseTestCase): def test_wrong_content_type_throws_unsupported_media_type_error(self): resource = wsgi.Resource(None, self.my_fault_body_function) request = wsgi.Request.blank( - "/", body="{some:json}", method='POST', + "/", body=b"{some:json}", method='POST', headers={'Content-Type': "xxx"}) response = resource(request) diff --git a/neutron/tests/unit/testlib_api.py b/neutron/tests/unit/testlib_api.py index 90e5bbeeb..27fc8a426 100644 --- a/neutron/tests/unit/testlib_api.py +++ b/neutron/tests/unit/testlib_api.py @@ -14,6 +14,7 @@ # under the License. import fixtures +import six import testtools from neutron.db import api as db_api @@ -47,7 +48,10 @@ def create_request(path, body, content_type, method='GET', req.method = method req.headers = {} req.headers['Accept'] = content_type - req.body = body + if isinstance(body, six.text_type): + req.body = body.encode() + else: + req.body = body if context: req.environ['neutron.context'] = context return req -- 2.45.2