Bladeren bron

fix(bulk): PATCH rrsets: check if domain exists, fixes #111

Nils Wisiol 6 jaren geleden
bovenliggende
commit
cdd7ab47ca
2 gewijzigde bestanden met toevoegingen van 18 en 1 verwijderingen
  1. 4 1
      api/desecapi/views.py
  2. 14 0
      test/e2e/spec/api_spec.js

+ 4 - 1
api/desecapi/views.py

@@ -233,7 +233,10 @@ class RRsetList(ListBulkCreateUpdateAPIView):
 
     def get_queryset(self):
         name = self.kwargs['name']
-        rrsets = self.request.user.domains.get(name=name).rrset_set
+        try:
+            rrsets = self.request.user.domains.get(name=name).rrset_set
+        except Domain.DoesNotExist:
+            raise Http404
 
         for filter_field in ('subname', 'type'):
             value = self.request.query_params.get(filter_field)

+ 14 - 0
test/e2e/spec/api_spec.js

@@ -263,6 +263,20 @@ describe("API", function () {
                     itShowsUpInPdnsAs('', domain, 'A', ['127.0.0.1'], 60);
                 });
 
+                it("cannot update RRSets for nonexistent domain name", function () {
+                    return expect(chakram.patch(
+                            '/domains/nonexistent.e2e.domain/rrsets/',
+                            {'subname': '', 'type': 'A', 'records': ['127.0.0.1'], 'ttl': 60}
+                        )).to.have.status(404);
+                });
+
+                it("cannot create RRSets for nonexistent domain name", function () {
+                    return expect(chakram.post(
+                            '/domains/nonexistent.e2e.domain/rrsets/',
+                            {'subname': '', 'type': 'A', 'records': ['127.0.0.1'], 'ttl': 60}
+                        )).to.have.status(404);
+                });
+
                 describe("can set a wildcard AAAA RRset with multiple records", function () {
                     before(function () {
                         return chakram.post(