|
@@ -139,6 +139,9 @@ class MockCC(MockModuleCCSession):
|
|
|
if identifier == "zones/use_ixfr":
|
|
|
return False
|
|
|
|
|
|
+ def remove_remote_config(self, module_name):
|
|
|
+ pass
|
|
|
+
|
|
|
class MockDataSourceClient():
|
|
|
'''A simple mock data source client.
|
|
|
|
|
@@ -2574,6 +2577,134 @@ class TestXfrin(unittest.TestCase):
|
|
|
self.common_ixfr_setup('refresh', False)
|
|
|
self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
|
|
|
|
|
|
+class TextXfrinMemoryZones(unittest.TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ self.xfr = MockXfrin()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ self.config = { 'datasources': [
|
|
|
+ { 'type': 'memory',
|
|
|
+ 'class': 'IN',
|
|
|
+ 'zones': [
|
|
|
+ { 'origin': 'example.com',
|
|
|
+ 'filetype': 'sqlite3' },
|
|
|
+ { 'origin': 'EXAMPLE2.com.',
|
|
|
+ 'filetype': 'sqlite3' },
|
|
|
+ { 'origin': 'example3.com',
|
|
|
+ 'filetype': 'text' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ { 'type': 'memory',
|
|
|
+ 'class': 'ch',
|
|
|
+ 'zones': [
|
|
|
+ { 'origin': 'example.com',
|
|
|
+ 'filetype': 'sqlite3' }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ] }
|
|
|
+
|
|
|
+ def test_updates(self):
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+
|
|
|
+ del self.config['datasources'][1]
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+
|
|
|
+ del self.config['datasources'][0]['zones'][1]
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ self.xfr._set_memory_zones({}, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+
|
|
|
+ self.config['datasources'][0]['zones'] = []
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+ def test_normalization(self):
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+
|
|
|
+
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("EXAMPLE.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "in"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com.", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "CLASS3"))
|
|
|
+
|
|
|
+ def test_bad_name(self):
|
|
|
+
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+
|
|
|
+
|
|
|
+ self.config['datasources'][1]['zones'][0]['origin'] = ".."
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+ def test_bad_class(self):
|
|
|
+
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+
|
|
|
+
|
|
|
+ self.config['datasources'][1]['class'] = "Foo"
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+ def test_no_filetype(self):
|
|
|
+
|
|
|
+
|
|
|
+ del self.config['datasources'][1]['zones'][0]['filetype']
|
|
|
+ self.xfr._set_memory_zones(self.config, None)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
+ def test_class_filetype(self):
|
|
|
+
|
|
|
+
|
|
|
+ AuthConfigData = isc.config.config_data.ConfigData(
|
|
|
+ isc.config.module_spec_from_file(xfrin.AUTH_SPECFILE_LOCATION))
|
|
|
+ del self.config['datasources'][0]['class']
|
|
|
+ self.xfr._set_memory_zones(self.config, AuthConfigData)
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example2.com", "IN"))
|
|
|
+ self.assertFalse(self.xfr._is_memory_zone("example3.com", "IN"))
|
|
|
+ self.assertTrue(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
+
|
|
|
def raise_interrupt():
|
|
|
raise KeyboardInterrupt()
|
|
|
|