Tests: fixed header value char tests.
Use byte strings to avoid problems with encoding.
This commit is contained in:
@@ -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')
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ Content-Length: %d
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
data += self.recvall(sock)
|
||||
data += self.recvall(sock).decode()
|
||||
|
||||
sock.close()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user