feat: rate limit
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import abc
|
||||
import collections
|
||||
import contextlib
|
||||
import datetime
|
||||
import http
|
||||
import http.server
|
||||
import io
|
||||
@@ -275,6 +276,7 @@ class TestRequestHandler(BaseHandlerTestCase):
|
||||
self.seal_mocks(),
|
||||
):
|
||||
handler.do_PUT()
|
||||
assert "127.0.0.1" in handler.rate_limits
|
||||
|
||||
def test_do_post_is_do_put(self) -> None:
|
||||
handler = self._get_handler("/path")
|
||||
@@ -306,6 +308,18 @@ class TestRequestHandler(BaseHandlerTestCase):
|
||||
self.seal_mocks(),
|
||||
):
|
||||
handler.do_PUT()
|
||||
assert "127.0.0.1" in handler.rate_limits
|
||||
|
||||
def test_do_put_rate_limit(self) -> None:
|
||||
handler = self._get_handler("/path", {"X-Token": "secret"})
|
||||
handler.rate_limits["127.0.0.1"] = datetime.datetime.now(tz=datetime.UTC)
|
||||
with (
|
||||
self.expects_error(
|
||||
handler, http.HTTPStatus.TOO_MANY_REQUESTS, "Rate limit exceeded"
|
||||
),
|
||||
self.seal_mocks(),
|
||||
):
|
||||
handler.do_PUT()
|
||||
|
||||
def test_do_put_invalid_path(self) -> None:
|
||||
handler = self._get_handler("/pa.th", {"X-Token": "secret"})
|
||||
@@ -792,6 +806,7 @@ class TestRequestHandler(BaseHandlerTestCase):
|
||||
self.seal_mocks(),
|
||||
):
|
||||
handler.do_DELETE()
|
||||
assert "127.0.0.1" in handler.rate_limits
|
||||
|
||||
def test_do_delete_invalid_token(self) -> None:
|
||||
handler = self._get_handler("/path", {"X-Token": "secret"})
|
||||
@@ -801,6 +816,7 @@ class TestRequestHandler(BaseHandlerTestCase):
|
||||
self.seal_mocks(),
|
||||
):
|
||||
handler.do_DELETE()
|
||||
assert "127.0.0.1" in handler.rate_limits
|
||||
|
||||
def test_do_delete_invalid_path(self) -> None:
|
||||
handler = self._get_handler("/pa.th", {"X-Token": "secret"})
|
||||
|
||||
Reference in New Issue
Block a user