Skip to content

Commit a87068c

Browse files
committed
Only respond to .zim files in webhooks
1 parent 7c138d7 commit a87068c

File tree

2 files changed

+59
-5
lines changed

2 files changed

+59
-5
lines changed

wp1/web/builders.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,8 @@ def update_zimfarm_status():
319319

320320
files = data.get("files", {})
321321
for key, value in files.items():
322-
if value["status"] == "uploaded":
322+
file_status = value.get("status")
323+
if file_status == "uploaded" and key.endswith(".zim"):
323324
# Update the status as FILE_READY and return.
324325
logic_selection.update_zimfarm_task(
325326
wp10db, task_id, "FILE_READY", set_updated_now=True

wp1/web/builders_test.py

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,7 +1010,7 @@ def test_update_zimfarm_status_file_scheduled(
10101010
"id": "task-id-1234",
10111011
"foo": "bar",
10121012
"status": "succeeded",
1013-
"files": {"zimfile.1234": {"status": "uploaded"}},
1013+
"files": {"zimfile.1234.zim": {"status": "uploaded"}},
10141014
},
10151015
)
10161016
self.assertEqual("204 NO CONTENT", rv.status)
@@ -1054,7 +1054,7 @@ def test_update_zimfarm_status_file_scheduled_no_email(
10541054
"id": "task-id-1234",
10551055
"foo": "bar",
10561056
"status": "succeeded",
1057-
"files": {"zimfile.1234": {"status": "uploaded"}},
1057+
"files": {"zimfile.1234.zim": {"status": "uploaded"}},
10581058
},
10591059
)
10601060
self.assertEqual("204 NO CONTENT", rv.status)
@@ -1091,7 +1091,7 @@ def test_update_zimfarm_status_file_missing_schedule(
10911091
"id": "task-id-1234",
10921092
"foo": "bar",
10931093
"status": "succeeded",
1094-
"files": {"zimfile.1234": {"status": "uploaded"}},
1094+
"files": {"zimfile.1234.zim": {"status": "uploaded"}},
10951095
},
10961096
)
10971097
self.assertEqual("500 INTERNAL SERVER ERROR", rv.status)
@@ -1120,7 +1120,7 @@ def test_update_zimfarm_status_file_ready(self, patched_utcnow):
11201120
"id": "task-id-1234",
11211121
"foo": "bar",
11221122
"status": "succeeded",
1123-
"files": {"zimfile.1234": {"status": "uploaded"}},
1123+
"files": {"zimfile.1234.zim": {"status": "uploaded"}},
11241124
},
11251125
)
11261126
self.assertEqual("204 NO CONTENT", rv.status)
@@ -1184,6 +1184,59 @@ def test_update_zimfarm_status_not_found_task_id(self):
11841184
)
11851185
self.assertEqual("204 NO CONTENT", rv.status)
11861186

1187+
@patch(
1188+
"wp1.logic.selection.utcnow",
1189+
return_value=datetime.datetime(2022, 12, 25, 0, 1, 2),
1190+
)
1191+
def test_update_zimfarm_status_non_zim_file_uploaded(self, patched_utcnow):
1192+
"""Test that non-.zim files don't trigger FILE_READY status"""
1193+
builder_id = self._insert_builder()
1194+
1195+
with self.wp10db.cursor() as cursor:
1196+
cursor.execute(
1197+
"""INSERT INTO selections
1198+
(s_id, s_builder_id, s_content_type, s_updated_at, s_version, s_object_key)
1199+
VALUES (1, %s, 'text/tab-separated-values', '20201225105544', 1, 'object_key')""",
1200+
(builder_id,),
1201+
)
1202+
cursor.execute(
1203+
"""INSERT INTO zim_tasks
1204+
(z_id, z_selection_id, z_task_id, z_status, z_zim_schedule_id)
1205+
VALUES (1, 1, 'task-id-non-zim', 'REQUESTED', 'schedule_456')"""
1206+
)
1207+
1208+
self._insert_zim_schedule(
1209+
schedule_id=b"schedule_456",
1210+
builder_id=builder_id.encode("utf-8"),
1211+
rq_job_id=b"task-id-non-zim",
1212+
last_updated_at="20221225000102",
1213+
remaining_generations=None,
1214+
)
1215+
self.wp10db.commit()
1216+
1217+
self.app = create_app()
1218+
with self.override_db(self.app), self.app.test_client() as client:
1219+
with client.session_transaction() as sess:
1220+
sess["user"] = self.USER
1221+
rv = client.post(
1222+
"/v1/builders/zim/status?token=hook-token-abc",
1223+
json={
1224+
"id": "task-id-non-zim",
1225+
"status": "succeeded",
1226+
"files": {"zimcheck-report.txt": {"status": "uploaded"}},
1227+
},
1228+
)
1229+
self.assertEqual("204 NO CONTENT", rv.status)
1230+
1231+
with self.wp10db.cursor() as cursor:
1232+
cursor.execute(
1233+
"SELECT z_status FROM zim_tasks WHERE z_task_id = 'task-id-non-zim'"
1234+
)
1235+
status = cursor.fetchone()
1236+
1237+
self.assertIsNotNone(status)
1238+
self.assertEqual(b"REQUESTED", status["z_status"])
1239+
11871240
def test_zimfarm_status(self):
11881241
builder_id = self._insert_builder()
11891242
self._insert_selections(builder_id)

0 commit comments

Comments
 (0)