From 45ba0fb69f1641e81ba1ff86ed4f0bf7b52296b7 Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Wed, 22 May 2024 14:27:06 -0700 Subject: [PATCH] Protocol.send_task: handle missing url or protocol param --- protocol.py | 8 ++++++-- tests/test_protocol.py | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/protocol.py b/protocol.py index 05c1a21..23893b0 100644 --- a/protocol.py +++ b/protocol.py @@ -1531,8 +1531,12 @@ def send_task(): logger.info(f'Params: {list(form.items())}') # prepare - url = form['url'] - protocol = form['protocol'] + url = form.get('url') + protocol = form.get('protocol') + if not url or not protocol: + logger.warning(f'Missing protocol or url; got {protocol} {url}') + return '', 204 + target = Target(uri=url, protocol=protocol) obj = ndb.Key(urlsafe=form['obj']).get() diff --git a/tests/test_protocol.py b/tests/test_protocol.py index aafe766..d426fba 100644 --- a/tests/test_protocol.py +++ b/tests/test_protocol.py @@ -2363,3 +2363,13 @@ class ProtocolReceiveTest(TestCase): 'user': self.user.key.urlsafe(), }, headers={CLOUD_TASKS_QUEUE_HEADER: ''}) self.assertEqual(200, resp.status_code) + + def test_send_task_missing_url(self): + obj = self.store_object(id='fake:post') + resp = self.client.post('/queue/send', data={ + 'protocol': 'fake', + 'obj': obj.key.urlsafe(), + 'url': None, + 'user': self.user.key.urlsafe(), + }, headers={CLOUD_TASKS_QUEUE_HEADER: ''}) + self.assertEqual(204, resp.status_code)