Browse Source

fix(api): add URL mapping for subname=*

Peter Thomassen 8 years ago
parent
commit
4f57167efe
2 changed files with 14 additions and 13 deletions
  1. 13 12
      api/desecapi/tests/testrrsets.py
  2. 1 1
      api/desecapi/urls.py

+ 13 - 12
api/desecapi/tests/testrrsets.py

@@ -209,21 +209,22 @@ class AuthenticatedRRsetTests(APITestCase):
         self.assertEqual(response.data['name'], 'test.' + self.ownedDomains[1].name + '.')
         self.assertEqual(response.data['name'], 'test.' + self.ownedDomains[1].name + '.')
 
 
     def testCanGetOwnRRsetWithWildcard(self):
     def testCanGetOwnRRsetWithWildcard(self):
-        url = reverse('rrsets', args=(self.ownedDomains[1].name,))
+        for subname in ('*', '*.foobar'):
+            url = reverse('rrsets', args=(self.ownedDomains[1].name,))
 
 
-        data = {'records': ['"barfoo"'], 'ttl': 120, 'type': 'TXT', 'subname': '*.foobar'}
-        response = self.client.post(url, json.dumps(data), content_type='application/json')
-        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+            data = {'records': ['"barfoo"'], 'ttl': 120, 'type': 'TXT', 'subname': subname}
+            response = self.client.post(url, json.dumps(data), content_type='application/json')
+            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
 
 
-        response1 = self.client.get(url + '?subname=*.foobar')
-        self.assertEqual(response1.status_code, status.HTTP_200_OK)
-        self.assertEqual(response1.data[0]['records'][0], '"barfoo"')
-        self.assertEqual(response1.data[0]['ttl'], 120)
-        self.assertEqual(response1.data[0]['name'], '*.foobar.' + self.ownedDomains[1].name + '.')
+            response1 = self.client.get(url + '?subname=' + subname)
+            self.assertEqual(response1.status_code, status.HTTP_200_OK)
+            self.assertEqual(response1.data[0]['records'][0], '"barfoo"')
+            self.assertEqual(response1.data[0]['ttl'], 120)
+            self.assertEqual(response1.data[0]['name'], subname + '.' + self.ownedDomains[1].name + '.')
 
 
-        url = reverse('rrset', args=(self.ownedDomains[1].name, '*.foobar', 'TXT',))
-        response2 = self.client.get(url)
-        self.assertEqual(response2.data, response1.data[0])
+            url = reverse('rrset', args=(self.ownedDomains[1].name, subname, 'TXT',))
+            response2 = self.client.get(url)
+            self.assertEqual(response2.data, response1.data[0])
 
 
     def testCanPutOwnRRset(self):
     def testCanPutOwnRRset(self):
         url = reverse('rrsets', args=(self.ownedDomains[1].name,))
         url = reverse('rrsets', args=(self.ownedDomains[1].name,))

+ 1 - 1
api/desecapi/urls.py

@@ -11,7 +11,7 @@ apiurls = [
     url(r'^domains/(?P<pk>[0-9]+)/$', DomainDetail.as_view(), name='domain-detail'),
     url(r'^domains/(?P<pk>[0-9]+)/$', DomainDetail.as_view(), name='domain-detail'),
     url(r'^domains/(?P<name>[a-zA-Z\.\-_0-9]+)/$', DomainDetailByName.as_view(), name='domain-detail/byName'),
     url(r'^domains/(?P<name>[a-zA-Z\.\-_0-9]+)/$', DomainDetailByName.as_view(), name='domain-detail/byName'),
     url(r'^domains/(?P<name>[a-zA-Z\.\-_0-9]+)/rrsets/$', RRsetList.as_view(), name='rrsets'),
     url(r'^domains/(?P<name>[a-zA-Z\.\-_0-9]+)/rrsets/$', RRsetList.as_view(), name='rrsets'),
-    url(r'^domains/(?P<name>[a-zA-Z\.\-_0-9]+)/rrsets/(?P<subname>(\*\.)?[a-zA-Z\.\-_0-9=]*)\.\.\./(?P<type>[A-Z][A-Z0-9]*)/$', RRsetDetail.as_view(), name='rrset'),
+    url(r'^domains/(?P<name>[a-zA-Z\.\-_0-9]+)/rrsets/(?P<subname>(\*)?[a-zA-Z\.\-_0-9=]*)\.\.\./(?P<type>[A-Z][A-Z0-9]*)/$', RRsetDetail.as_view(), name='rrset'),
     url(r'^dns$', DnsQuery.as_view(), name='dns-query'),
     url(r'^dns$', DnsQuery.as_view(), name='dns-query'),
     url(r'^dyndns/update$', DynDNS12Update.as_view(), name='dyndns12update'),
     url(r'^dyndns/update$', DynDNS12Update.as_view(), name='dyndns12update'),
     url(r'^donation/', DonationList.as_view(), name='donation'),
     url(r'^donation/', DonationList.as_view(), name='donation'),