Skip to content

Commit 90c0dd1

Browse files
committed
Merge pull request #448 from helgi/fix_domain_removal
fix(views): return a 404 when trying to query on an object that does not exist
2 parents 9c2ae1a + 875ef1d commit 90c0dd1

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

rootfs/api/tests/test_domain.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ def test_manage_domain(self):
109109
)
110110
self.assertEqual(0, response.data['count'], msg)
111111

112+
def test_delete_domain_does_not_exist(self):
113+
"""Remove a domain that does not exist"""
114+
url = '/v2/apps/{app_id}/domains'.format(app_id=self.app_id)
115+
116+
url = '/v2/apps/{app_id}/domains/{domain}'.format(domain='test-domain.example.com',
117+
app_id=self.app_id)
118+
response = self.client.delete(url, content_type='application/json',
119+
HTTP_AUTHORIZATION='token {}'.format(self.token))
120+
self.assertEqual(response.status_code, 404)
121+
112122
def test_delete_domain_does_not_remove_latest(self):
113123
"""https://github.com/deis/deis/issues/3239"""
114124
url = '/v2/apps/{app_id}/domains'.format(app_id=self.app_id)

rootfs/api/views.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ def get_queryset(self, **kwargs):
330330

331331
def get_object(self, **kwargs):
332332
qs = self.get_queryset(**kwargs)
333-
return qs.get(num=self.kwargs['num'])
333+
return get_object_or_404(qs, num=self.kwargs['num'])
334334

335335
def restart(self, *args, **kwargs):
336336
try:
@@ -378,7 +378,7 @@ class DomainViewSet(AppResourceViewSet):
378378

379379
def get_object(self, **kwargs):
380380
qs = self.get_queryset(**kwargs)
381-
return qs.get(domain=self.kwargs['domain'])
381+
return get_object_or_404(qs, domain=self.kwargs['domain'])
382382

383383

384384
class CertificateViewSet(BaseDeisViewSet):
@@ -389,7 +389,7 @@ class CertificateViewSet(BaseDeisViewSet):
389389
def get_object(self, **kwargs):
390390
"""Retrieve domain certificate by its name"""
391391
qs = self.get_queryset(**kwargs)
392-
return qs.get(name=self.kwargs['name'])
392+
return get_object_or_404(qs, name=self.kwargs['name'])
393393

394394
def attach(self, request, *args, **kwargs):
395395
try:
@@ -430,7 +430,8 @@ class ReleaseViewSet(AppResourceViewSet):
430430

431431
def get_object(self, **kwargs):
432432
"""Get release by version always"""
433-
return self.get_queryset(**kwargs).get(version=self.kwargs['version'])
433+
qs = self.get_queryset(**kwargs)
434+
return get_object_or_404(qs, version=self.kwargs['version'])
434435

435436
def rollback(self, request, **kwargs):
436437
"""

0 commit comments

Comments
 (0)