Skip to content

Commit c514bd4

Browse files
committed
Return HTTP 400 when attempting to post an event with an unregistered schema
1 parent 74655ce commit c514bd4

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

jupyter_server/services/events/handlers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ async def post(self):
121121
self.finish()
122122
except web.HTTPError:
123123
raise
124+
except KeyError as e:
125+
message = f"Unregistered event schema: ${str(e)}"
126+
raise web.HTTPError(400, message) from e
124127
except Exception as e:
125128
raise web.HTTPError(500, str(e)) from e
126129

tests/services/events/test_api.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,26 @@ async def test_post_event(jp_fetch, event_logger_sink, payload):
117117
}
118118
"""
119119

120+
payload_7 = """\
121+
{
122+
"schema_id": "http://event.mock.jupyter.org/UNREGISTERED-SCHEMA",
123+
"version": 1,
124+
"data": {
125+
"event_message": "Hello, world!"
126+
}
127+
}
128+
"""
129+
120130

121-
@pytest.mark.parametrize("payload", [payload_3, payload_4, payload_5, payload_6])
131+
@pytest.mark.parametrize("payload", [payload_3, payload_4, payload_5, payload_6, payload_7])
122132
async def test_post_event_400(jp_fetch, event_logger, payload):
123133
with pytest.raises(tornado.httpclient.HTTPClientError) as e:
124134
await jp_fetch("api", "events", method="POST", body=payload)
125135

126136
assert expected_http_error(e, 400)
127137

128138

129-
payload_7 = """\
139+
payload_8 = """\
130140
{
131141
"schema_id": "http://event.mock.jupyter.org/message",
132142
"version": 1,
@@ -136,7 +146,7 @@ async def test_post_event_400(jp_fetch, event_logger, payload):
136146
}
137147
"""
138148

139-
payload_8 = """\
149+
payload_9 = """\
140150
{
141151
"schema_id": "http://event.mock.jupyter.org/message",
142152
"version": 2,
@@ -147,7 +157,7 @@ async def test_post_event_400(jp_fetch, event_logger, payload):
147157
"""
148158

149159

150-
@pytest.mark.parametrize("payload", [payload_7, payload_8])
160+
@pytest.mark.parametrize("payload", [payload_8, payload_9])
151161
async def test_post_event_500(jp_fetch, event_logger, payload):
152162
with pytest.raises(tornado.httpclient.HTTPClientError) as e:
153163
await jp_fetch("api", "events", method="POST", body=payload)

0 commit comments

Comments
 (0)