From 7249ac5ca04b5ddc6517750326ee7e522cc49145 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Thu, 8 Oct 2020 18:43:53 -0700 Subject: [PATCH] Support OPTIONS without 500, closes #1001 --- datasette/views/base.py | 3 +++ tests/test_html.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/datasette/views/base.py b/datasette/views/base.py index 34859d07..3fe2abd5 100644 --- a/datasette/views/base.py +++ b/datasette/views/base.py @@ -110,6 +110,9 @@ class BaseView: def database_color(self, database): return "ff0000" + async def options(self, request, *args, **kwargs): + return Response.text("Method not allowed", status=405) + async def dispatch_request(self, request, *args, **kwargs): handler = getattr(self, request.method.lower(), None) return await handler(request, *args, **kwargs) diff --git a/tests/test_html.py b/tests/test_html.py index f3924082..02d49b52 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -52,6 +52,12 @@ def test_http_head(app_client): assert response.status == 200 +def test_homepage_options(app_client): + response = app_client.get("/", method="OPTIONS") + assert response.status == 405 + assert response.text == "Method not allowed" + + def test_favicon(app_client): response = app_client.get("/favicon.ico") assert response.status == 200