api: fix multiple events endpoint with bad slots param (#72249)
gitea-wip/chrono/pipeline/pr-main This commit looks good Details

This commit is contained in:
Lauréline Guérin 2022-12-12 09:08:05 +01:00
parent 46ff62a6a8
commit dca88c5900
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
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/',