From a322aee0c7ce84b74be715ed1a338f8be2b5e8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 8 Jul 2016 11:23:06 +0200 Subject: [PATCH] Added file upload support to AbstractPillarTest.client_request --- tests/common_test_class.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tests/common_test_class.py b/tests/common_test_class.py index 8174ccc1..d1f1886f 100644 --- a/tests/common_test_class.py +++ b/tests/common_test_class.py @@ -218,14 +218,14 @@ class AbstractPillarTest(TestMinimal): return group_ids - def client_request(self, method, url, expected_status=200, auth_token=None, json=None, - data=None): + def client_request(self, method, path, expected_status=200, auth_token=None, json=None, + data=None, headers=None, files=None, content_type=None): """Performs a HTTP request to the server.""" from application.utils import dumps import json as mod_json - headers = {} + headers = headers or {} if auth_token is not None: headers['Authorization'] = self.make_header(auth_token) @@ -233,8 +233,17 @@ class AbstractPillarTest(TestMinimal): data = dumps(json) headers['Content-Type'] = 'application/json' - resp = self.client.open(url, method=method, data=data, headers=headers) - self.assertEqual(expected_status, resp.status_code, resp.data) + if files: + data = data or {} + content_type = 'multipart/form-data' + data.update(files) + + resp = self.client.open(path=path, method=method, data=data, headers=headers, + content_type=content_type) + self.assertEqual(expected_status, resp.status_code, + 'Expected status %i but got %i. Response: %s' % ( + expected_status, resp.status_code, resp.data + )) def json(): if resp.mimetype != 'application/json':