Skip to content

Commit 0331e85

Browse files
committed
ASGI use new headers helper class
1 parent cd9f79a commit 0331e85

4 files changed

Lines changed: 31 additions & 38 deletions

File tree

aikido_zen/context/asgi/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from urllib.parse import parse_qs
44
from aikido_zen.helpers.get_ip_from_request import get_ip_from_request
55
from ..parse_cookies import parse_cookies
6-
from .normalize_asgi_headers import normalize_asgi_headers
6+
from .extract_asgi_headers import extract_asgi_headers
77
from .build_url_from_asgi import build_url_from_asgi
88

99

@@ -22,7 +22,7 @@ def parse_asgi_scope(scope) -> ASGIContext:
2222
This extracts ASGI Scope attributes, described in :
2323
https://asgi.readthedocs.io/en/latest/specs/www.html#http-connection-scope
2424
"""
25-
headers = normalize_asgi_headers(scope["headers"])
25+
headers = extract_asgi_headers(scope["headers"])
2626

2727
cookies = {}
2828
if "COOKIE" in headers and headers["COOKIE"]:
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"""Mainly exports extract_asgi_headers"""
2+
3+
from aikido_zen.helpers.headers import Headers
4+
5+
6+
def extract_asgi_headers(headers) -> Headers:
7+
result = Headers()
8+
for k, v in headers:
9+
result.store_header(k.decode("utf-8"), v.decode("utf-8"))
10+
return result
Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import pytest
2-
from .normalize_asgi_headers import normalize_asgi_headers
2+
from .extract_asgi_headers import extract_asgi_headers
33

44

5-
def test_normalize_asgi_headers_basic():
5+
def test_extract_asgi_headers_basic():
66
headers = [
77
(b"content-type", b"text/html"),
88
(b"accept-encoding", b"gzip, deflate"),
99
]
1010
expected = {"CONTENT_TYPE": ["text/html"], "ACCEPT_ENCODING": ["gzip, deflate"]}
11-
assert normalize_asgi_headers(headers) == expected
11+
assert extract_asgi_headers(headers) == expected
1212

1313

14-
def test_normalize_asgi_headers_empty():
14+
def test_extract_asgi_headers_empty():
1515
headers = []
1616
expected = {}
17-
assert normalize_asgi_headers(headers) == expected
17+
assert extract_asgi_headers(headers) == expected
1818

1919

20-
def test_normalize_asgi_headers_with_special_characters():
20+
def test_extract_asgi_headers_with_special_characters():
2121
headers = [
2222
(b"content-type", b"text/html"),
2323
(b"x-custom-header", b"some_value"),
@@ -28,19 +28,19 @@ def test_normalize_asgi_headers_with_special_characters():
2828
"X_CUSTOM_HEADER": ["some_value"],
2929
"ACCEPT_ENCODING": ["gzip, deflate"],
3030
}
31-
assert normalize_asgi_headers(headers) == expected
31+
assert extract_asgi_headers(headers) == expected
3232

3333

34-
def test_normalize_asgi_headers_with_dashes():
34+
def test_extract_asgi_headers_with_dashes():
3535
headers = [
3636
(b"X-Forwarded-For", b"192.168.1.1"),
3737
(b"X-Request-ID", b"abc123"),
3838
]
3939
expected = {"X_FORWARDED_FOR": ["192.168.1.1"], "X_REQUEST_ID": ["abc123"]}
40-
assert normalize_asgi_headers(headers) == expected
40+
assert extract_asgi_headers(headers) == expected
4141

4242

43-
def test_normalize_asgi_headers_case_insensitivity():
43+
def test_extract_asgi_headers_case_insensitivity():
4444
headers = [
4545
(b"Content-Type", b"text/html"),
4646
(b"ACCEPT-ENCODING", b"gzip, deflate"),
@@ -50,19 +50,19 @@ def test_normalize_asgi_headers_case_insensitivity():
5050
"CONTENT_TYPE": ["text/html"],
5151
"ACCEPT_ENCODING": ["gzip, deflate", "json"],
5252
}
53-
assert normalize_asgi_headers(headers) == expected
53+
assert extract_asgi_headers(headers) == expected
5454

5555

56-
def test_normalize_asgi_headers_unicode():
56+
def test_extract_asgi_headers_unicode():
5757
headers = [
5858
(b"content-type", b"text/html"),
5959
(b"custom-header", b"value"),
6060
]
6161
expected = {"CONTENT_TYPE": ["text/html"], "CUSTOM_HEADER": ["value"]}
62-
assert normalize_asgi_headers(headers) == expected
62+
assert extract_asgi_headers(headers) == expected
6363

6464

65-
def test_normalize_asgi_headers_mixed_case_and_dashes():
65+
def test_extract_asgi_headers_mixed_case_and_dashes():
6666
headers = [
6767
(b"Content-Type", b"text/html"),
6868
(b"X-Custom-Header", b"some_value"),
@@ -73,10 +73,10 @@ def test_normalize_asgi_headers_mixed_case_and_dashes():
7373
"X_CUSTOM_HEADER": ["some_value"],
7474
"ACCEPT_ENCODING": ["gzip, deflate"],
7575
}
76-
assert normalize_asgi_headers(headers) == expected
76+
assert extract_asgi_headers(headers) == expected
7777

7878

79-
def test_normalize_asgi_headers_non_ascii():
79+
def test_extract_asgi_headers_non_ascii():
8080
headers = [
8181
(b"content-type", b"text/html"),
8282
(b"custom-header", b"value"),
@@ -87,13 +87,13 @@ def test_normalize_asgi_headers_non_ascii():
8787
"CUSTOM_HEADER": ["value"],
8888
"X_HEADER_WITH_EMOJI": ["test"],
8989
}
90-
assert normalize_asgi_headers(headers) == expected
90+
assert extract_asgi_headers(headers) == expected
9191

9292

93-
def test_normalize_asgi_headers_large_input():
93+
def test_extract_asgi_headers_large_input():
9494
headers = [
9595
(f"header-{i}".encode("utf-8"), f"value-{i}".encode("utf-8"))
9696
for i in range(1000)
9797
]
9898
expected = {f"HEADER_{i}": [f"value-{i}"] for i in range(1000)}
99-
assert normalize_asgi_headers(headers) == expected
99+
assert extract_asgi_headers(headers) == expected

aikido_zen/context/asgi/normalize_asgi_headers.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)