diff --git a/tests/test_websockifyserver.py b/tests/test_websockifyserver.py index 42edb4a..dad55ac 100644 --- a/tests/test_websockifyserver.py +++ b/tests/test_websockifyserver.py @@ -88,6 +88,60 @@ class WebSockifyRequestHandlerTestCase(unittest.TestCase): handler.do_GET() send_error.assert_called_with(405) + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') + def test_head_with_only_upgrade_returns_error(self, send_error): + server = self._get_server(web=None) + handler = websockifyserver.WebSockifyRequestHandler( + FakeSocket(b'HEAD /tmp.txt HTTP/1.1'), '127.0.0.1', server) + + handler.do_HEAD() + send_error.assert_called_with(405) + + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') + def test_post_returns_error(self, send_error): + server = self._get_server(web=None) + handler = websockifyserver.WebSockifyRequestHandler( + FakeSocket(b'POST / HTTP/1.1'), '127.0.0.1', server) + + handler.do_POST() + send_error.assert_called_with(405) + + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') + def test_put_returns_error(self, send_error): + server = self._get_server(web=None) + handler = websockifyserver.WebSockifyRequestHandler( + FakeSocket(b'PUT / HTTP/1.1'), '127.0.0.1', server) + + handler.do_PUT() + send_error.assert_called_with(405) + + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') + def test_patch_returns_error(self, send_error): + server = self._get_server(web=None) + handler = websockifyserver.WebSockifyRequestHandler( + FakeSocket(b'PATCH / HTTP/1.1'), '127.0.0.1', server) + + handler.do_PATCH() + send_error.assert_called_with(405) + + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') + def test_delete_returns_error(self, send_error): + server = self._get_server(web=None) + handler = websockifyserver.WebSockifyRequestHandler( + FakeSocket(b'DELETE / HTTP/1.1'), '127.0.0.1', server) + + handler.do_DELETE() + send_error.assert_called_with(405) + + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') + def test_options_returns_error(self, send_error): + server = self._get_server(web=None) + handler = websockifyserver.WebSockifyRequestHandler( + FakeSocket(b'OPTIONS / HTTP/1.1'), '127.0.0.1', server) + + handler.do_OPTIONS() + send_error.assert_called_with(405) + @patch('websockify.websockifyserver.WebSockifyRequestHandler.send_error') def test_list_dir_with_file_only_returns_error(self, send_error): server = self._get_server(file_only=True) diff --git a/websockify/websockifyserver.py b/websockify/websockifyserver.py index 78613fb..c5ba833 100644 --- a/websockify/websockifyserver.py +++ b/websockify/websockifyserver.py @@ -281,6 +281,21 @@ class WebSockifyRequestHandler(WebSocketRequestHandlerMixIn, SimpleHTTPRequestHa else: super().do_HEAD() + def do_POST(self): + self.send_error(405) + + def do_PUT(self): + self.send_error(405) + + def do_PATCH(self): + self.send_error(405) + + def do_DELETE(self): + self.send_error(405) + + def do_OPTIONS(self): + self.send_error(405) + def finish(self): if self.rec: self.rec.write("'EOF'];\n")