import email.parser
+from django.http import Http404
from rest_framework.generics import ListAPIView
from rest_framework.serializers import SerializerMethodField
from patchwork.api.base import PatchworkPermission
from patchwork.api.embedded import PersonSerializer
from patchwork.models import Comment
+from patchwork.models import Submission
class CommentListSerializer(BaseHyperlinkedModelSerializer):
lookup_url_kwarg = 'pk'
def get_queryset(self):
+ if not Submission.objects.filter(pk=self.kwargs['pk']).exists():
+ raise Http404
+
return Comment.objects.filter(
submission=self.kwargs['pk']
).select_related('submitter')
with self.assertRaises(NoReverseMatch):
self.client.get(self.api_url(cover_obj, version='1.0'))
+ def test_list_invalid_cover(self):
+ """Ensure we get a 404 for a non-existent cover letter."""
+ resp = self.client.get(
+ reverse('api-cover-comment-list', kwargs={'pk': '99999'}))
+ self.assertEqual(status.HTTP_404_NOT_FOUND, resp.status_code)
+
@unittest.skipUnless(settings.ENABLE_REST_API, 'requires ENABLE_REST_API')
class TestPatchComments(APITestCase):
# check we can't access comments using the old version of the API
with self.assertRaises(NoReverseMatch):
self.client.get(self.api_url(patch_obj, version='1.0'))
+
+ def test_list_invalid_patch(self):
+ """Ensure we get a 404 for a non-existent patch."""
+ resp = self.client.get(
+ reverse('api-patch-comment-list', kwargs={'pk': '99999'}))
+ self.assertEqual(status.HTTP_404_NOT_FOUND, resp.status_code)