From b50e16a79b3cd8c33b028c43844f135a52ce3611 Mon Sep 17 00:00:00 2001 From: Agate Date: Mon, 18 Jul 2022 15:39:45 +0200 Subject: [PATCH] =?UTF-8?q?misc:=20return=20HTTP=C2=A0404=20instead=20of?= =?UTF-8?q?=20500=20for=20GET=20requests=20on=20nonexistant=20connectors?= =?UTF-8?q?=20(#67414)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- passerelle/views.py | 4 ++-- tests/test_views.py | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tests/test_views.py diff --git a/passerelle/views.py b/passerelle/views.py index 5311f770..c284b48d 100644 --- a/passerelle/views.py +++ b/passerelle/views.py @@ -33,7 +33,7 @@ from django.core.exceptions import PermissionDenied from django.db import transaction from django.db.models import Q from django.http import Http404, HttpResponse, HttpResponseRedirect -from django.shortcuts import resolve_url +from django.shortcuts import get_object_or_404, resolve_url from django.urls import reverse from django.utils.encoding import force_bytes, force_text from django.utils.timezone import is_naive, make_aware @@ -238,7 +238,7 @@ class GenericViewLogsConnectorView(GenericConnectorMixin, ListView): return context def get_object(self): - return self.model.objects.get(slug=self.kwargs['slug']) + return get_object_or_404(self.model.objects.all(), slug=self.kwargs['slug']) def get_queryset(self): self.form = ResourceLogSearchForm(data=self.request.GET) diff --git a/tests/test_views.py b/tests/test_views.py new file mode 100644 index 00000000..b1d77140 --- /dev/null +++ b/tests/test_views.py @@ -0,0 +1,9 @@ +from tests.test_manager import login + + +def test_get_does_not_crash_on_unknown_connector(app, db, admin_user): + app = login(app) + + resp = app.get('/manage/opengis/noop/logs/', status="*") + + assert resp.status_code == 404