Tests: fixed header value char tests.

Use byte strings to avoid problems with encoding.
This commit is contained in:
Andrey Zelenkov
2018-07-30 16:40:52 +03:00
parent 4b67de4bbb
commit a458f50d59
3 changed files with 17 additions and 9 deletions

View File

@@ -83,12 +83,16 @@ class TestUnitHTTPHeader(unit.TestUnitApplicationPython):
self.assertEqual(resp['headers']['Custom-Header'],
'(),/:;<=>?@[\]{}\t !#$%&\'*+-.^_`|~', 'value chars custom header')
@unittest.expectedFailure
def test_http_header_value_chars_edge(self):
self.load('custom_header')
resp = self.get(headers={
'Custom-Header': '\x20\xFF'
})
resp = self.http(b"""GET / HTTP/1.1
Host: localhost
Custom-Header: \x20\xFF
Connection: close
""", raw=True, encoding='latin1')
self.assertEqual(resp['status'], 200, 'value chars edge status')
self.assertEqual(resp['headers']['Custom-Header'], '\xFF',
@@ -97,9 +101,12 @@ class TestUnitHTTPHeader(unit.TestUnitApplicationPython):
def test_http_header_value_chars_below(self):
self.load('custom_header')
resp = self.get(headers={
'Custom-Header': '\x1F'
})
resp = self.http(b"""GET / HTTP/1.1
Host: localhost
Custom-Header: \x1F
Connection: close
""", raw=True)
self.assertEqual(resp['status'], 400, 'value chars below')

View File

@@ -70,7 +70,7 @@ Content-Length: %d
time.sleep(3)
data += self.recvall(sock)
data += self.recvall(sock).decode()
sock.close()

View File

@@ -250,7 +250,8 @@ class TestUnitHTTP(TestUnit):
if '--verbose' in sys.argv:
print('>>>', req, sep='\n')
resp = self.recvall(sock)
encoding = 'utf-8' if 'encoding' not in kwargs else kwargs['encoding']
resp = self.recvall(sock).decode(encoding)
if '--verbose' in sys.argv:
print('<<<', resp.encode('utf-8'), sep='\n')
@@ -289,7 +290,7 @@ class TestUnitHTTP(TestUnit):
if not len(part):
break
return data.decode()
return data
def _resp_to_dict(self, resp):
m = re.search('(.*?\x0d\x0a?)\x0d\x0a?(.*)', resp, re.M | re.S)