diff options
Diffstat (limited to 'paste/fixture.py')
-rw-r--r-- | paste/fixture.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/paste/fixture.py b/paste/fixture.py index c161c70..a20412e 100644 --- a/paste/fixture.py +++ b/paste/fixture.py @@ -171,8 +171,6 @@ class TestApp(object): Returns a `response object <class-paste.fixture.TestResponse.html>`_ """ - if headers is None: - headers = {} if extra_environ is None: extra_environ = {} # Hide from py.test: @@ -186,19 +184,12 @@ class TestApp(object): url += '?' url += params environ = self._make_environ() - for header, value in headers.items(): - if header.lower() == 'content-type': - var = 'CONTENT_TYPE' - elif header.lower() == 'content-length': - var = 'CONTENT_LENGTH' - else: - var = 'HTTP_%s' % header.replace('-', '_').upper() - environ[var] = value url = str(url) if '?' in url: url, environ['QUERY_STRING'] = url.split('?', 1) else: environ['QUERY_STRING'] = '' + self._set_headers(headers, environ) environ.update(extra_environ) req = TestRequest(url, environ, expect_errors) return self.do_request(req, status=status) @@ -237,12 +228,26 @@ class TestApp(object): environ['CONTENT_LENGTH'] = str(len(params)) environ['REQUEST_METHOD'] = 'POST' environ['wsgi.input'] = StringIO(params) - for header, value in headers.items(): - environ['HTTP_%s' % header.replace('-', '_').upper()] = value + self._set_headers(headers, environ) environ.update(extra_environ) req = TestRequest(url, environ, expect_errors) return self.do_request(req, status=status) + def _set_headers(self, headers, environ): + """ + Turn any headers into environ variables + """ + if not headers: + return + for header, value in headers.items(): + if header.lower() == 'content-type': + var = 'CONTENT_TYPE' + elif header.lower() == 'content-length': + var = 'CONTENT_LENGTH' + else: + var = 'HTTP_%s' % header.replace('-', '_').upper() + environ[var] = value + def encode_multipart(self, params, files): """ Encodes a set of parameters (typically a name/value list) and |