Merge pull request #197 from r0fls/178

convert header values to strings
This commit is contained in:
Eli Uriegas 2016-12-30 12:17:29 -06:00 committed by GitHub
commit 3ada6f358c
2 changed files with 35 additions and 6 deletions

View File

@ -103,10 +103,14 @@ class HTTPResponse:
headers = b'' headers = b''
if self.headers: if self.headers:
headers = b''.join( for name, value in self.headers.items():
b'%b: %b\r\n' % (name.encode(), value.encode('utf-8')) try:
for name, value in self.headers.items() headers += (
) b'%b: %b\r\n' % (name.encode(), value.encode('utf-8')))
except AttributeError:
headers += (
b'%b: %b\r\n' % (
str(name).encode(), str(value).encode('utf-8')))
# Try to pull from the common codes first # Try to pull from the common codes first
# Speeds up response rate 6% over pulling from all # Speeds up response rate 6% over pulling from all

View File

@ -33,6 +33,31 @@ def test_text():
assert response.text == 'Hello' assert response.text == 'Hello'
def test_headers():
app = Sanic('test_text')
@app.route('/')
async def handler(request):
headers = {"spam": "great"}
return text('Hello', headers=headers)
request, response = sanic_endpoint_test(app)
assert response.headers.get('spam') == 'great'
def test_non_str_headers():
app = Sanic('test_text')
@app.route('/')
async def handler(request):
headers = {"answer": 42}
return text('Hello', headers=headers)
request, response = sanic_endpoint_test(app)
assert response.headers.get('answer') == '42'
def test_invalid_response(): def test_invalid_response():
app = Sanic('test_invalid_response') app = Sanic('test_invalid_response')
@ -47,8 +72,8 @@ def test_invalid_response():
request, response = sanic_endpoint_test(app) request, response = sanic_endpoint_test(app)
assert response.status == 500 assert response.status == 500
assert response.text == "Internal Server Error." assert response.text == "Internal Server Error."
def test_json(): def test_json():
app = Sanic('test_json') app = Sanic('test_json')