Skip to content

Commit 36751ae

Browse files
Refactoring, refactoring, refactoring (#81)
1 parent b065dca commit 36751ae

File tree

3 files changed

+136
-1
lines changed

3 files changed

+136
-1
lines changed

tests/test_requests.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import httpx
2+
3+
4+
def byteiterator(buffer=b""):
5+
for num in buffer:
6+
yield chr(num)
7+
8+
9+
def test_request():
10+
r = httpx.Request("GET", "https://example.com")
11+
12+
assert repr(r) == "<Request [GET 'https://example.com']>"
13+
assert r.method == "GET"
14+
assert r.url == "https://example.com"
15+
assert r.headers == {
16+
"Host": "example.com"
17+
}
18+
assert r.stream == httpx.ByteStream(b"")
19+
20+
def test_request_bytes():
21+
content = b"Hello, world"
22+
r = httpx.Request("POST", "https://example.com", content=content)
23+
24+
assert repr(r) == "<Request [POST 'https://example.com']>"
25+
assert r.method == "POST"
26+
assert r.url == "https://example.com"
27+
assert r.headers == {
28+
"Host": "example.com",
29+
"Content-Length": "12",
30+
}
31+
assert r.stream == httpx.ByteStream(b"Hello, world")
32+
33+
34+
def test_request_stream():
35+
stream = httpx.IterByteStream(byteiterator(b"Hello, world"))
36+
r = httpx.Request("POST", "https://example.com", content=stream)
37+
38+
assert repr(r) == "<Request [POST 'https://example.com']>"
39+
assert r.method == "POST"
40+
assert r.url == "https://example.com"
41+
assert r.headers == {
42+
"Host": "example.com",
43+
"Transfer-Encoding": "chunked",
44+
}
45+
assert r.stream is stream
46+
47+
48+
def test_request_json():
49+
data = httpx.JSON({"msg": "Hello, world"})
50+
r = httpx.Request("POST", "https://example.com", content=data)
51+
52+
assert repr(r) == "<Request [POST 'https://example.com']>"
53+
assert r.method == "POST"
54+
assert r.url == "https://example.com"
55+
assert r.headers == {
56+
"Host": "example.com",
57+
"Content-Length": "22",
58+
"Content-Type": "application/json",
59+
}
60+
assert r.stream == httpx.ByteStream(b'{"msg":"Hello, world"}')

tests/test_responses.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import httpx
2+
3+
4+
def byteiterator(buffer=b""):
5+
for num in buffer:
6+
yield chr(num)
7+
8+
9+
def test_response():
10+
r = httpx.Response(200)
11+
12+
assert repr(r) == "<Response [200 OK]>"
13+
assert r.code == 200
14+
assert r.headers == {'Content-Length': '0'}
15+
assert r.stream == httpx.ByteStream(b"")
16+
17+
18+
def test_response_204():
19+
r = httpx.Response(204)
20+
21+
assert repr(r) == "<Response [204 No Content]>"
22+
assert r.code == 204
23+
assert r.headers == {}
24+
assert r.stream == httpx.ByteStream(b"")
25+
26+
27+
def test_response_bytes():
28+
content = b"Hello, world"
29+
r = httpx.Response(200, content=content)
30+
31+
assert repr(r) == "<Response [200 OK]>"
32+
assert r.headers == {
33+
"Content-Length": "12",
34+
}
35+
assert r.stream == httpx.ByteStream(b"Hello, world")
36+
37+
38+
def test_response_stream():
39+
stream = httpx.IterByteStream(byteiterator(b"Hello, world"))
40+
r = httpx.Response(200, content=stream)
41+
42+
assert repr(r) == "<Response [200 OK]>"
43+
assert r.headers == {
44+
"Transfer-Encoding": "chunked",
45+
}
46+
assert r.stream is stream
47+
48+
49+
def test_response_json():
50+
data = httpx.JSON({"msg": "Hello, world"})
51+
r = httpx.Response(200, content=data)
52+
53+
assert repr(r) == "<Response [200 OK]>"
54+
assert r.headers == {
55+
"Content-Length": "22",
56+
"Content-Type": "application/json",
57+
}
58+
assert r.stream == httpx.ByteStream(b'{"msg":"Hello, world"}')

tests/test_streams.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import pytest
33

44

5-
def byteiterator(buffer):
5+
def byteiterator(buffer=b""):
66
for num in buffer:
77
yield chr(num)
88

@@ -58,3 +58,20 @@ def test_iterbytestream_validates_size():
5858
with pytest.raises(ValueError):
5959
for _ in s:
6060
pass
61+
62+
63+
def test_humanized_size_repr():
64+
s = httpx.IterByteStream(byteiterator(), size=1)
65+
assert repr(s) == "<IterByteStream [0% of 1B]>"
66+
67+
s = httpx.IterByteStream(byteiterator(), size=1024)
68+
assert repr(s) == "<IterByteStream [0% of 1KB]>"
69+
70+
s = httpx.IterByteStream(byteiterator(), size=1024 ** 2)
71+
assert repr(s) == "<IterByteStream [0% of 1MB]>"
72+
73+
s = httpx.IterByteStream(byteiterator(), size=1024 ** 3)
74+
assert repr(s) == "<IterByteStream [0% of 1GB]>"
75+
76+
s = httpx.IterByteStream(byteiterator(), size=1024 ** 4)
77+
assert repr(s) == "<IterByteStream [0% of 1TB]>"

0 commit comments

Comments
 (0)