From: Jelte Jansen Date: Mon, 21 May 2012 15:23:58 +0000 (+0200) Subject: [1455] rfc2136 check for name_not_in_use X-Git-Tag: trac2351_base~226^2~67^2~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=12b5bdfc8b484bdfba69d6d93e7aa64ce147d6fe;p=thirdparty%2Fkea.git [1455] rfc2136 check for name_not_in_use --- diff --git a/src/lib/python/isc/ddns/session.py b/src/lib/python/isc/ddns/session.py index 65b9eb8353..9fd1219a7f 100644 --- a/src/lib/python/isc/ddns/session.py +++ b/src/lib/python/isc/ddns/session.py @@ -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 diff --git a/src/lib/python/isc/ddns/tests/session_tests.py b/src/lib/python/isc/ddns/tests/session_tests.py index 343ac6fa05..2ed9f61cd5 100644 --- a/src/lib/python/isc/ddns/tests/session_tests.py +++ b/src/lib/python/isc/ddns/tests/session_tests.py @@ -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