aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_http_request.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_http_request.py')
-rw-r--r--tests/test_http_request.py89
1 files changed, 65 insertions, 24 deletions
diff --git a/tests/test_http_request.py b/tests/test_http_request.py
index 3c74e1f..a9e941d 100644
--- a/tests/test_http_request.py
+++ b/tests/test_http_request.py
@@ -15,6 +15,7 @@ def test_http_request_success(mock_method: MagicMock):
options = {"option": "1"}
timeout = 123
coroutine = http_request(url, options, timeout)
+
future = coroutine.send(None)
assert isinstance(future, FutureProcess)
@@ -28,19 +29,23 @@ def test_http_request_success(mock_method: MagicMock):
response = "response"
body = f"HTTP/2 200\r\n\r\n{response}"
+ future.set_result(("", 0, body, ""))
with pytest.raises(StopIteration) as excinfo:
- coroutine.send(("", 0, body, ""))
+ coroutine.send(None)
assert excinfo.value.value == response
def test_http_request_error_process_return_code():
url = "http://example.com"
coroutine = http_request(url, {}, 0, max_retries=0)
- assert isinstance(coroutine.send(None), FutureProcess)
+
+ future = coroutine.send(None)
+ assert isinstance(future, FutureProcess)
+ future.set_result(("", -2, "", ""))
with pytest.raises(HttpError) as excinfo:
- coroutine.send(("", -2, "", ""))
+ coroutine.send(None)
assert excinfo.value.url == url
assert excinfo.value.return_code == -2
@@ -51,10 +56,13 @@ def test_http_request_error_process_return_code():
def test_http_request_error_process_stderr():
url = "http://example.com"
coroutine = http_request(url, {}, 0, max_retries=0)
- assert isinstance(coroutine.send(None), FutureProcess)
+
+ future = coroutine.send(None)
+ assert isinstance(future, FutureProcess)
+ future.set_result(("", 0, "", "err"))
with pytest.raises(HttpError) as excinfo:
- coroutine.send(("", 0, "", "err"))
+ coroutine.send(None)
assert excinfo.value.url == url
assert excinfo.value.return_code == 0
@@ -65,13 +73,16 @@ def test_http_request_error_process_stderr():
def test_http_request_error_process_http():
url = "http://example.com"
coroutine = http_request(url, {}, 0, max_retries=0)
- assert isinstance(coroutine.send(None), FutureProcess)
+
+ future = coroutine.send(None)
+ assert isinstance(future, FutureProcess)
response = "response"
body = f"HTTP/2 400\r\n\r\n{response}"
+ future.set_result(("", 0, body, ""))
with pytest.raises(HttpError) as excinfo:
- coroutine.send(("", 0, body, ""))
+ coroutine.send(None)
assert excinfo.value.url == url
assert excinfo.value.return_code == 0
@@ -82,31 +93,53 @@ def test_http_request_error_process_http():
def test_http_request_error_retry_success():
url = "http://example.com"
coroutine = http_request(url, {}, 0, max_retries=2)
- assert isinstance(coroutine.send(None), FutureProcess)
- assert isinstance(coroutine.send(("", -2, "", "")), FutureTimer)
- assert isinstance(coroutine.send((0,)), FutureProcess)
+ future_1 = coroutine.send(None)
+ assert isinstance(future_1, FutureProcess)
+ future_1.set_result(("", -2, "", ""))
+
+ future_2 = coroutine.send(None)
+ assert isinstance(future_2, FutureTimer)
+ future_2.set_result((0,))
+
+ future_3 = coroutine.send(None)
+ assert isinstance(future_3, FutureProcess)
response = "response"
body = f"HTTP/2 200\r\n\r\n{response}"
+ future_3.set_result(("", 0, body, ""))
with pytest.raises(StopIteration) as excinfo:
- coroutine.send(("", 0, body, ""))
+ coroutine.send(None)
assert excinfo.value.value == response
def test_http_request_error_retry_error():
url = "http://example.com"
coroutine = http_request(url, {}, 0, max_retries=2)
- assert isinstance(coroutine.send(None), FutureProcess)
- assert isinstance(coroutine.send(("", -2, "", "")), FutureTimer)
- assert isinstance(coroutine.send((0,)), FutureProcess)
- assert isinstance(coroutine.send(("", -2, "", "")), FutureTimer)
- assert isinstance(coroutine.send((0,)), FutureProcess)
+ future_1 = coroutine.send(None)
+ assert isinstance(future_1, FutureProcess)
+ future_1.set_result(("", -2, "", ""))
+
+ future_2 = coroutine.send(None)
+ assert isinstance(future_2, FutureTimer)
+ future_2.set_result((0,))
+
+ future_3 = coroutine.send(None)
+ assert isinstance(future_3, FutureProcess)
+ future_3.set_result(("", -2, "", ""))
+
+ future_4 = coroutine.send(None)
+ assert isinstance(future_4, FutureTimer)
+ future_4.set_result((0,))
+
+ future_5 = coroutine.send(None)
+ assert isinstance(future_5, FutureProcess)
+ future_5.set_result(("", -2, "", ""))
with pytest.raises(HttpError) as excinfo:
- coroutine.send(("", -2, "", ""))
+ coroutine.send(None)
assert excinfo.value.url == url
assert excinfo.value.return_code == -2
@@ -135,9 +168,10 @@ def test_http_request_multiple_headers():
.strip()
.replace("\n", "\r\n")
)
+ future.set_result(("", 0, body, ""))
with pytest.raises(StopIteration) as excinfo:
- coroutine.send(("", 0, body, ""))
+ coroutine.send(future)
assert excinfo.value.value == response
@@ -145,20 +179,27 @@ def test_http_request_multiple_headers():
def test_http_request_ratelimit(mock_method: MagicMock):
url = "http://example.com"
coroutine = http_request(url, {}, 0)
- assert isinstance(coroutine.send(None), FutureProcess)
+
+ future_1 = coroutine.send(None)
+ assert isinstance(future_1, FutureProcess)
body = "HTTP/2 429\r\nRetry-After: 12\r\n\r\n"
+ future_1.set_result(("", 0, body, ""))
- timer = coroutine.send(("", 0, body, ""))
- assert isinstance(timer, FutureTimer)
+ future_2 = coroutine.send(None)
+ assert isinstance(future_2, FutureTimer)
+ future_2.set_result((0,))
mock_method.assert_called_once_with(
- 12000, 0, 1, get_callback_name(weechat_task_cb), timer.id
+ 12000, 0, 1, get_callback_name(weechat_task_cb), future_2.id
)
- assert isinstance(coroutine.send((0,)), FutureProcess)
+ future_3 = coroutine.send(None)
+ assert isinstance(future_3, FutureProcess)
response = "response"
+ future_3.set_result(("", 0, f"HTTP/2 200\r\n\r\n{response}", ""))
+
with pytest.raises(StopIteration) as excinfo:
- coroutine.send(("", 0, f"HTTP/2 200\r\n\r\n{response}", ""))
+ coroutine.send(None)
assert excinfo.value.value == response