api: fix multiple events endpoint with bad slots param (#72249) #17

Merged
lguerin merged 1 commits from wip/72249-api-fix-multiple-events-endpoint into main 2022-12-12 09:56:28 +01:00
2 changed files with 20 additions and 1 deletions

View File

@ -2150,7 +2150,10 @@ class MultipleAgendasEvents(APIView):
slots = serializer.validated_data['slots']
events_by_agenda = collections.defaultdict(list)
for slot in slots:
agenda, event = slot.split('@')
try:
agenda, event = slot.split('@')
except ValueError:
raise APIErrorBadRequest(N_('invalid slugs: %s'), slot)
events_by_agenda[agenda].append(event)
agendas = get_objects_from_slugs(events_by_agenda.keys(), qs=Agenda.objects.filter(kind='events'))

View File

@ -907,6 +907,22 @@ def test_events(app, user):
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'invalid slugs: foo@recurring-event-slug'
# bad event format
resp = app.get(
'/api/agendas/events/',
params={'slots': ['bar']},
status=400,
)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'invalid slugs: bar'
resp = app.get(
'/api/agendas/events/',
params={'slots': ['bar@bar@bar']},
status=400,
)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'invalid slugs: bar@bar@bar'
# ok
resp = app.get(
'/api/agendas/events/',