From cb51bbb651241c89bbf2cd686b2efa2ea6208ebe Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Tue, 3 Aug 2021 15:25:59 -0400 Subject: [PATCH 1/2] add case insensitive headers test --- .../async_tests/test_rest_headers_async.py | 36 +++++++++++++ .../coretestserver/test_routes/basic.py | 10 ++++ .../testserver_tests/test_rest_headers.py | 53 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py diff --git a/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py b/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py new file mode 100644 index 000000000000..da32f4e2f1ca --- /dev/null +++ b/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py @@ -0,0 +1,36 @@ +# coding: utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE.txt in the project root for +# license information. +# ------------------------------------------------------------------------- +import pytest +from azure.core.rest import HttpRequest + +@pytest.mark.asyncio +async def test_response_headers_case_insensitive(client): + request = HttpRequest("GET", "/headers") + response = await client.send_request(request) + response.raise_for_status() + assert ( + response.headers["lowercase-header"] == + response.headers["LOWERCASE-HEADER"] == + response.headers["Lowercase-Header"] == + response.headers["lOwErCasE-HeADer"] == + "lowercase" + ) + assert ( + response.headers["allcaps-header"] == + response.headers["ALLCAPS-HEADER"] == + response.headers["Allcaps-Header"] == + response.headers["AlLCapS-HeADer"] == + "ALLCAPS" + ) + assert ( + response.headers["camelcase-header"] == + response.headers["CAMELCASE-HEADER"] == + response.headers["CamelCase-Header"] == + response.headers["cAMeLCaSE-hEadER"] == + "camelCase" + ) + return response \ No newline at end of file diff --git a/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py b/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py index 0f0735522d11..64ab47831223 100644 --- a/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py +++ b/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py @@ -64,3 +64,13 @@ def complicated_json(): assert request.json["None"] == None return Response(status=200) + +@basic_api.route("/headers", methods=['GET']) +def headers(): + return Response( + headers={ + "lowercase-header": "lowercase", + "ALLCAPS-HEADER": "ALLCAPS", + "CamelCase-Header": "camelCase", + } + ) diff --git a/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py b/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py index 30112c50c912..038732fac79c 100644 --- a/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py +++ b/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py @@ -91,6 +91,59 @@ def test_headers_not_override(): assert request.headers["Content-Length"] == "5000" assert request.headers["Content-Type"] == "application/my-content-type" +def test_request_headers_case_insensitive(): + request = HttpRequest( + "PUT", + "http://example.org", + headers={ + "Content-Length": 5000, + "Content-Type": "application/my-content-type" + } + ) + assert ( + request.headers["Content-Length"] == + request.headers["content-length"] == + request.headers["CONTENT-LENGTH"] == + request.headers["cOnTEnT-lEngTH"] == + 5000 + ) + + assert( + request.headers["Content-Type"] == + request.headers["content-type"] == + request.headers["CONTENT-TYPE"] == + request.headers["ConTENt-tYpE"] == + "application/my-content-type" + ) + +def test_response_headers_case_insensitive(client): + request = HttpRequest("GET", "/headers") + response = client.send_request(request) + response.raise_for_status() + assert ( + response.headers["lowercase-header"] == + response.headers["LOWERCASE-HEADER"] == + response.headers["Lowercase-Header"] == + response.headers["lOwErCasE-HeADer"] == + "lowercase" + ) + assert ( + response.headers["allcaps-header"] == + response.headers["ALLCAPS-HEADER"] == + response.headers["Allcaps-Header"] == + response.headers["AlLCapS-HeADer"] == + "ALLCAPS" + ) + assert ( + response.headers["camelcase-header"] == + response.headers["CAMELCASE-HEADER"] == + response.headers["CamelCase-Header"] == + response.headers["cAMeLCaSE-hEadER"] == + "camelCase" + ) + return response + + # Can't support list of tuples. Will uncomment once we add that support # def test_multiple_headers(): From 4a60666898271f1e7c3c8bcb5cbec42c38569596 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Tue, 3 Aug 2021 15:33:15 -0400 Subject: [PATCH 2/2] fix urls in test --- .../testserver_tests/async_tests/test_rest_headers_async.py | 2 +- .../coretestserver/coretestserver/test_routes/basic.py | 1 + sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py b/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py index da32f4e2f1ca..4452e326126d 100644 --- a/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py +++ b/sdk/core/azure-core/tests/testserver_tests/async_tests/test_rest_headers_async.py @@ -9,7 +9,7 @@ @pytest.mark.asyncio async def test_response_headers_case_insensitive(client): - request = HttpRequest("GET", "/headers") + request = HttpRequest("GET", "/basic/headers") response = await client.send_request(request) response.raise_for_status() assert ( diff --git a/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py b/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py index 64ab47831223..933a53de5d14 100644 --- a/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py +++ b/sdk/core/azure-core/tests/testserver_tests/coretestserver/coretestserver/test_routes/basic.py @@ -68,6 +68,7 @@ def complicated_json(): @basic_api.route("/headers", methods=['GET']) def headers(): return Response( + status=200, headers={ "lowercase-header": "lowercase", "ALLCAPS-HEADER": "ALLCAPS", diff --git a/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py b/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py index 038732fac79c..a21cbe84a8b1 100644 --- a/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py +++ b/sdk/core/azure-core/tests/testserver_tests/test_rest_headers.py @@ -117,7 +117,7 @@ def test_request_headers_case_insensitive(): ) def test_response_headers_case_insensitive(client): - request = HttpRequest("GET", "/headers") + request = HttpRequest("GET", "/basic/headers") response = client.send_request(request) response.raise_for_status() assert (