From e801443569d2a6ad45c6d75a44121d49a1b89a01 Mon Sep 17 00:00:00 2001 From: benpankow Date: Mon, 27 Mar 2023 12:35:34 -0700 Subject: [PATCH] [dagit] redirect trailing slash on GraphQL route --- python_modules/dagit/dagit/webserver.py | 5 +++++ python_modules/dagit/dagit_tests/webserver/test_app.py | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/python_modules/dagit/dagit/webserver.py b/python_modules/dagit/dagit/webserver.py index 90fad3bae883..591b8f29528b 100644 --- a/python_modules/dagit/dagit/webserver.py +++ b/python_modules/dagit/dagit/webserver.py @@ -286,6 +286,11 @@ def build_routes(self): self.graphql_ws_endpoint, name="graphql-ws", ), + Route( + "/graphql/", + lambda _: RedirectResponse(url="/graphql"), + methods=["GET", "POST"], + ), ] + self.build_static_routes() + [ diff --git a/python_modules/dagit/dagit_tests/webserver/test_app.py b/python_modules/dagit/dagit_tests/webserver/test_app.py index 8eda9d33674d..a63e6e50ee06 100644 --- a/python_modules/dagit/dagit_tests/webserver/test_app.py +++ b/python_modules/dagit/dagit_tests/webserver/test_app.py @@ -112,6 +112,15 @@ def test_graphql_get(instance, test_client: TestClient): assert response.status_code == 400, response.text +def test_graphql_trailing_slash(instance, test_client: TestClient): + # base case + response = test_client.get("/graphql/", params={"query": "{__typename}"}, allow_redirects=False) + assert response.status_code == 307, response.text + + response = test_client.get("/graphql/", params={"query": "{__typename}"}, allow_redirects=True) + assert response.json() == {"data": {"__typename": "DagitQuery"}} + + def test_graphql_invalid_json(instance, test_client: TestClient): # base case response = test_client.post(