Exemplo n.º 1
0
    def test_find_updated_nonexistent_data(self):
        '''
        Test whether added data for a query that would originally result
        in NXDOMAIN works
        '''
        diff = Diff(self, Name('example.org'), single_update_mode=True)
        diff.add_data(self.__rrset_soa)
        diff.delete_data(self.__rrset_soa)

        # override the actual find method
        self.__create_find(ZoneFinder.NXDOMAIN, None, 0)

        # Sanity check
        self.__check_find_call(diff.find_updated, self.__rrset3,
                               ZoneFinder.NXDOMAIN)
        self.__check_find_call(diff.find, self.__rrset3,
                               ZoneFinder.NXDOMAIN)

        # Add data and see it is returned
        diff.add_data(self.__rrset3)
        self.__check_find_call(diff.find_updated, self.__rrset3,
                               ZoneFinder.SUCCESS, self.__rrset3.get_rdata())
        self.__check_find_call(diff.find, self.__rrset3,
                               ZoneFinder.NXDOMAIN)

        # Add unrelated data, result should be the same
        diff.add_data(self.__rrset2)
        self.__check_find_call(diff.find_updated, self.__rrset3,
                               ZoneFinder.SUCCESS, self.__rrset3.get_rdata())
        self.__check_find_call(diff.find, self.__rrset3,
                               ZoneFinder.NXDOMAIN)

        # Remove, result should now be NXDOMAIN again
        diff.delete_data(self.__rrset3)
        result, rrset, _ = diff.find_updated(self.__rrset3.get_name(),
                                             self.__rrset3.get_type())
        self.__check_find_call(diff.find_updated, self.__rrset3,
                               ZoneFinder.NXDOMAIN)
        self.__check_find_call(diff.find, self.__rrset3,
                               ZoneFinder.NXDOMAIN)