diff --git a/.gitignore b/.gitignore index e127c60ae9..e005aba4c1 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ env/ .venv/ .eggs/ .tox/ +.pytest_cache/ +.vscode/ .workon diff --git a/tests/test_testserver.py b/tests/test_testserver.py index aac529261b..9d9def2f1b 100644 --- a/tests/test_testserver.py +++ b/tests/test_testserver.py @@ -56,6 +56,36 @@ def test_text_response(self): assert r.text == u'roflol' assert r.headers['Content-Length'] == '6' + def test_text_bom_response(self): + """the text_response_server sends the given text with UTF-8 BOM""" + server = Server.text_response_server( + "HTTP/1.1 200 OK\r\n" + + "Content-Type: text/html; charset=UTF-8\r\n" + + u'\r\n\ufeffジェーピーニック' + ) + + with server as (host, port): + r = requests.get('http://{}:{}'.format(host, port)) + + assert r.status_code == 200 + assert r.text == u'ジェーピーニック' + assert r.headers['Content-Type'] == 'text/html; charset=UTF-8' + + def test_json_bom_response(self): + """the text_response_server sends the given JSON with UTF-8 BOM""" + server = Server.text_response_server( + "HTTP/1.1 200 OK\r\n" + + "Content-Type: application/json; charset=utf-8\r\n" + + u'\r\n\ufeff{"success": true}' + ) + + with server as (host, port): + r = requests.get('http://{}:{}'.format(host, port)) + + assert r.status_code == 200 + assert r.json() == {'success': True} + assert r.headers['Content-Type'] == 'application/json; charset=utf-8' + def test_basic_response(self): """the basic response server returns an empty http response""" with Server.basic_response_server() as (host, port): diff --git a/tests/test_utils.py b/tests/test_utils.py index ba0668f313..027b26fbce 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -332,7 +332,7 @@ def test_bad_utf_like_encoding(self): @pytest.mark.parametrize( ('encoding', 'expected'), ( - ('utf-8-sig', 'utf-8'), + ('utf-8-sig', 'utf-8-sig'), ('utf-16-be', 'utf-16'), ('utf-16-le', 'utf-16'), ('utf-32-be', 'utf-32'),