From 531c8fc527fadc6b2188793465e2e28b6b0b9e0f Mon Sep 17 00:00:00 2001 From: Shivam Sandbhor Date: Sun, 14 Feb 2021 12:15:28 +0530 Subject: [PATCH 1/2] Make trailing slash optional in apis Signed-off-by: Shivam Sandbhor --- vulnerablecode/urls.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/vulnerablecode/urls.py b/vulnerablecode/urls.py index bfbc9233e..e7ac96863 100644 --- a/vulnerablecode/urls.py +++ b/vulnerablecode/urls.py @@ -42,7 +42,15 @@ from vulnerabilities.views import VulnerabilityReferenceCreate from vulnerablecode.settings import ENABLE_CURATION -api_router = DefaultRouter() + +# See the comment at https://stackoverflow.com/a/46163870. +class OptionalSlashRouter(DefaultRouter): + def __init__(self, *args, **kwargs): + super(DefaultRouter, self).__init__(*args, **kwargs) + self.trailing_slash = '/?' + + +api_router = OptionalSlashRouter() api_router.register(r"packages", PackageViewSet) # `DefaultRouter` requires `basename` when registering viewsets which don't # define a queryset. From 8ce911a5db986c17239a0f881106b0b736c14459 Mon Sep 17 00:00:00 2001 From: Shivam Sandbhor Date: Sun, 14 Feb 2021 12:41:47 +0530 Subject: [PATCH 2/2] Fix tests for api Signed-off-by: Shivam Sandbhor --- vulnerabilities/tests/test_api.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vulnerabilities/tests/test_api.py b/vulnerabilities/tests/test_api.py index 092349e42..e3904423e 100644 --- a/vulnerabilities/tests/test_api.py +++ b/vulnerabilities/tests/test_api.py @@ -203,31 +203,31 @@ def test_bulk_vulnerabilities_api(self): "resolved_packages": [ OrderedDict( [ - ("url", "http://testserver/api/packages/2/"), + ("url", "http://testserver/api/packages/2"), ("purl", "pkg:deb/debian/mimetex@1.74-1?distro=jessie"), ] ), OrderedDict( [ - ("url", "http://testserver/api/packages/3/"), + ("url", "http://testserver/api/packages/3"), ("purl", "pkg:deb/debian/mimetex@1.50-1.1?distro=jessie"), ] ), ], "unresolved_packages": [], - "url": "http://testserver/api/vulnerabilities/2/", + "url": "http://testserver/api/vulnerabilities/2", }, "CVE-2014-8242": { "resolved_packages": [], "unresolved_packages": [ OrderedDict( [ - ("url", "http://testserver/api/packages/1/"), + ("url", "http://testserver/api/packages/1"), ("purl", "pkg:deb/debian/librsync@0.9.7-10?distro=jessie"), ] ) ], - "url": "http://testserver/api/vulnerabilities/1/", + "url": "http://testserver/api/vulnerabilities/1", }, "RANDOM-CVE": {}, } @@ -253,7 +253,7 @@ def test_bulk_packages_api(self): "unresolved_vulnerabilities": [ OrderedDict( [ - ("url", "http://testserver/api/vulnerabilities/1/"), + ("url", "http://testserver/api/vulnerabilities/1"), ("vulnerability_id", "CVE-2014-8242"), ] ) @@ -263,13 +263,13 @@ def test_bulk_packages_api(self): "resolved_vulnerabilities": [ OrderedDict( [ - ("url", "http://testserver/api/vulnerabilities/2/"), + ("url", "http://testserver/api/vulnerabilities/2"), ("vulnerability_id", "CVE-2009-1382"), ] ), OrderedDict( [ - ("url", "http://testserver/api/vulnerabilities/3/"), + ("url", "http://testserver/api/vulnerabilities/3"), ("vulnerability_id", "CVE-2009-2459"), ] ),