diff --git a/stapler/handlers.py b/stapler/handlers.py index 5fd08bd..2590f87 100644 --- a/stapler/handlers.py +++ b/stapler/handlers.py @@ -689,3 +689,24 @@ class UpgradeHandler(RequestHandler): self.close_connection = True else: self.do_HEAD() + + def do_POST(self) -> None: + self.do_HEAD() + + def do_PUT(self) -> None: + self.do_HEAD() + + def do_DELETE(self) -> None: + self.do_HEAD() + + def do_OPTIONS(self) -> None: + self.do_HEAD() + + def do_PATCH(self) -> None: + self.do_HEAD() + + def do_CONNECT(self) -> None: + self.do_HEAD() + + def do_TRACE(self) -> None: + self.do_HEAD() diff --git a/tests/test_handlers.py b/tests/test_handlers.py index 2ee1047..fab7233 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -1358,21 +1358,22 @@ class TestUpgradeHandler(BaseHandlerTestCase): handler.data_dir = self.data_dir return handler - def test_do_get(self) -> None: + def test_do_upgrade(self) -> None: handler = self._get_handler("/file") - with ( - self.expects_status_only( - handler, - http.HTTPStatus.MOVED_PERMANENTLY, - headers={"Location": "https://localhost/file"}, - ), - self.patch( - "http.server.SimpleHTTPRequestHandler.do_GET", - count=0, - ), - self.seal_mocks(), - ): - handler.do_GET() + for method in [method.value for method in http.HTTPMethod]: + with ( + self.subTest(None, method=method), + self.expects_status_only( + handler, + http.HTTPStatus.MOVED_PERMANENTLY, + headers={"Location": "https://localhost/file"}, + ), + self.patch( + f"http.server.SimpleHTTPRequestHandler.do_{method}", count=0 + ), + self.seal_mocks(), + ): + getattr(handler, f"do_{method}")() def test_do_get_certbot(self) -> None: handler = self._get_handler("/.well-known/acme-challenge/abcde")