]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1455] rfc2136 check for name_not_in_use
authorJelte Jansen <jelte@isc.org>
Mon, 21 May 2012 15:23:58 +0000 (17:23 +0200)
committerJelte Jansen <jelte@isc.org>
Tue, 22 May 2012 19:20:09 +0000 (21:20 +0200)
src/lib/python/isc/ddns/session.py
src/lib/python/isc/ddns/tests/session_tests.py

index 65b9eb8353c3b288ffacd5c1b3129127bb504e7c..9fd1219a7f2eee54a40b196fa997c07d7bf96d6f 100644 (file)
@@ -242,8 +242,12 @@ class UpdateSession:
             return True
         return False
 
-    def __check_prerequisite_name_not_in_use(self):
-        pass
+    def __check_prerequisite_name_not_in_use(self, datasrc_client, rrset):
+        '''Check whether the name of the given RRset is not in use (i.e. does
+           not exist at all, or is an empty nonterminal.
+           RFC2136 Section 2.4.5
+        '''
+        return not self.__check_prerequisite_name_in_use(datasrc_client, rrset)
 
     def __check_prerequisites(self, datasrc_client):
         pass
index 343ac6fa058cd945d5900d80377161b396eb9a52..2ed9f61cd546aefd245a09afd3907fd2294c68f8 100644 (file)
@@ -188,6 +188,15 @@ class SessionTest(unittest.TestCase):
                  _UpdateSession__check_prerequisite_name_in_use(client,
                                                                 rrset))
 
+    def __check_prerequisite_name_not_in_use(self, expected, client, rrset):
+        '''Similar to __check_prerequisite_exists(), but for checking
+           the result of __check_prerequisite_name_in_use().
+        '''
+        self.assertEqual(expected,
+            self.__session.
+                 _UpdateSession__check_prerequisite_name_not_in_use(client,
+                                                                    rrset))
+
     def test_check_prerequisite_exists(self):
         # Basic existence checks
         # www.example.org should have an A, but not an MX
@@ -424,7 +433,40 @@ class SessionTest(unittest.TestCase):
         self.__check_prerequisite_name_in_use(True, self.__datasrc_client, rrset)
 
     def test_check_prerequisite_name_not_in_use(self):
-        pass
+        rrset = isc.dns.RRset(isc.dns.Name("example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(False, self.__datasrc_client, rrset)
+
+        rrset = isc.dns.RRset(isc.dns.Name("www.example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(False, self.__datasrc_client, rrset)
+
+        rrset = isc.dns.RRset(isc.dns.Name("doesnotexist.example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(True, self.__datasrc_client, rrset)
+
+        rrset = isc.dns.RRset(isc.dns.Name("belowdelegation.sub.example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(True, self.__datasrc_client, rrset)
+
+        rrset = isc.dns.RRset(isc.dns.Name("foo.wildcard.example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(True, self.__datasrc_client, rrset)
+
+        # empty nonterminal should not match
+        rrset = isc.dns.RRset(isc.dns.Name("nonterminal.example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(True, self.__datasrc_client, rrset)
+        rrset = isc.dns.RRset(isc.dns.Name("empty.nonterminal.example.org"),
+                              isc.dns.RRClass.NONE(), isc.dns.RRType.ANY(),
+                              isc.dns.RRTTL(0))
+        self.__check_prerequisite_name_not_in_use(False, self.__datasrc_client, rrset)
 
     def test_check_prerequisites(self):
         pass