|
@@ -2577,61 +2577,64 @@ class TestXfrin(unittest.TestCase):
|
|
|
self.common_ixfr_setup('refresh', False)
|
|
|
self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
|
|
|
|
|
|
- def test_memory_zones(self):
|
|
|
+class TextXfrinMemoryZones(unittest.TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ self.xfr = MockXfrin()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 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' }
|
|
|
- ]
|
|
|
- }
|
|
|
- ] }
|
|
|
-
|
|
|
+ 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(config, None)
|
|
|
+ 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 config['datasources'][1]
|
|
|
- self.xfr._set_memory_zones(config, None)
|
|
|
+
|
|
|
+ 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 config['datasources'][0]['zones'][1]
|
|
|
- self.xfr._set_memory_zones(config, None)
|
|
|
+ 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"))
|
|
@@ -2640,13 +2643,70 @@ class TestXfrin(unittest.TestCase):
|
|
|
self.assertFalse(self.xfr._is_memory_zone("example.com", "CH"))
|
|
|
|
|
|
|
|
|
- config['datasources'][0]['zones'] = []
|
|
|
- self.xfr._set_memory_zones(config, None)
|
|
|
+ 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("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()
|
|
|
|