212 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| 
 | |
| from ostack_validator.config_model import Configuration
 | |
| 
 | |
| 
 | |
| class ConfigurationTests(unittest.TestCase):
 | |
|     section = 'section1'
 | |
|     param = 'param1'
 | |
|     fullparam = '%s.%s' % (section, param)
 | |
|     value = 'foobar'
 | |
|     default_value = 'bar123'
 | |
| 
 | |
|     def test_empty(self):
 | |
|         c = Configuration()
 | |
|         self.assertIsNone(c.get('section1.param1'))
 | |
| 
 | |
|     def test_storage(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         self.assertEqual(self.value, c.get(self.fullparam))
 | |
| 
 | |
|     def test_parameter_names_containing_sections(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         self.assertEqual(
 | |
|             self.value, c.get('%s.%s' %
 | |
|                               (self.section, self.param)))
 | |
| 
 | |
|     def test_parameter_with_default_section(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.param, self.value)
 | |
| 
 | |
|         self.assertEqual(self.value, c.get(self.param))
 | |
| 
 | |
|     def test_explicit_default_on_get(self):
 | |
|         c = Configuration()
 | |
|         override_value = '12345'
 | |
| 
 | |
|         self.assertEqual(
 | |
|             override_value,
 | |
|             c.get(self.fullparam,
 | |
|                   default=override_value))
 | |
| 
 | |
|     def test_default(self):
 | |
|         c = Configuration()
 | |
|         c.set_default(self.fullparam, self.default_value)
 | |
| 
 | |
|         self.assertEqual(self.default_value, c.get(self.fullparam))
 | |
| 
 | |
|     def test_normal_overrides_default(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
|         c.set_default(self.fullparam, self.default_value)
 | |
| 
 | |
|         self.assertEqual(self.value, c.get(self.fullparam))
 | |
| 
 | |
|     def test_contains(self):
 | |
|         c = Configuration()
 | |
|         self.assertFalse(c.contains(self.fullparam))
 | |
| 
 | |
|     def test_contains_default(self):
 | |
|         c = Configuration()
 | |
|         c.set_default(self.fullparam, self.default_value)
 | |
| 
 | |
|         self.assertTrue(c.contains(self.fullparam))
 | |
|         self.assertFalse(c.contains(self.fullparam, ignoreDefault=True))
 | |
| 
 | |
|     def test_contains_normal(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         self.assertTrue(c.contains(self.fullparam))
 | |
|         self.assertTrue(c.contains(self.fullparam, ignoreDefault=True))
 | |
| 
 | |
|     def test_is_default_returns_false_if_param_missing(self):
 | |
|         c = Configuration()
 | |
|         self.assertFalse(c.is_default(self.fullparam))
 | |
| 
 | |
|     def test_is_default_returns_true_if_only_default_value_set(self):
 | |
|         c = Configuration()
 | |
|         c.set_default(self.fullparam, self.default_value)
 | |
| 
 | |
|         self.assertTrue(c.is_default(self.fullparam))
 | |
| 
 | |
|     def test_is_default_returns_false_if_normal_value_set(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         self.assertFalse(c.is_default(self.fullparam))
 | |
| 
 | |
|     def test_is_default_returns_false_if_both_values_set(self):
 | |
|         c = Configuration()
 | |
|         c.set_default(self.fullparam, self.default_value)
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         self.assertFalse(c.is_default(self.fullparam))
 | |
| 
 | |
|     def test_subsection_set(self):
 | |
|         c = Configuration()
 | |
|         c.section(self.section).set(self.param, self.value)
 | |
| 
 | |
|         self.assertEqual(self.value, c.get(self.fullparam))
 | |
| 
 | |
|     def test_keys(self):
 | |
|         c = Configuration()
 | |
|         c.set_default('section1.param1', '123')
 | |
|         c.set('section2.param1', '456')
 | |
| 
 | |
|         self.assertEqual(['section1', 'section2'], sorted(c.keys()))
 | |
| 
 | |
|     def test_subsection_keys(self):
 | |
|         c = Configuration()
 | |
|         c.set_default('%s.param1' % self.section, '123')
 | |
|         c.set('%s.param2' % self.section, '456')
 | |
| 
 | |
|         self.assertEqual(
 | |
|             ['param1', 'param2'], sorted(c.section(self.section).keys()))
 | |
| 
 | |
|     def test_subsection_items(self):
 | |
|         c = Configuration()
 | |
|         c.set('%s.param1' % self.section, 'value1')
 | |
|         c.set_default('%s.param2' % self.section, 'value2')
 | |
| 
 | |
|         self.assertEqual(
 | |
|             [('param1', 'value1'), ('param2', 'value2')], sorted(c.section(self.section).items()))
 | |
| 
 | |
|     def test_subsection_get(self):
 | |
|         c = Configuration()
 | |
| 
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         cs = c.section(self.section)
 | |
|         self.assertEqual(self.value, cs.get(self.param))
 | |
| 
 | |
|     def test_getitem(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         self.assertEqual(self.value, c[self.fullparam])
 | |
| 
 | |
|     def test_subsection_getitem(self):
 | |
|         c = Configuration()
 | |
|         c.set(self.fullparam, self.value)
 | |
| 
 | |
|         cs = c.section(self.section)
 | |
| 
 | |
|         self.assertEqual(self.value, cs[self.param])
 | |
| 
 | |
|     def test_setitem(self):
 | |
|         c = Configuration()
 | |
| 
 | |
|         c[self.fullparam] = self.value
 | |
| 
 | |
|         self.assertEqual(self.value, c.get(self.fullparam))
 | |
| 
 | |
|     def test_subsection_setitem(self):
 | |
|         c = Configuration()
 | |
| 
 | |
|         cs = c.section(self.section)
 | |
| 
 | |
|         cs[self.param] = self.value
 | |
| 
 | |
|         self.assertEqual(self.value, c.get(self.fullparam))
 | |
| 
 | |
|     def test_contains(self):
 | |
|         c = Configuration()
 | |
| 
 | |
|         self.assertFalse(self.section in c)
 | |
| 
 | |
|         c.set(self.fullparam, self.value)
 | |
|         self.assertTrue(self.section in c)
 | |
| 
 | |
|     def test_subsection_contains(self):
 | |
|         c = Configuration()
 | |
| 
 | |
|         c.set('section1.param1', '123')
 | |
|         c.set_default('section2.param2', '234')
 | |
| 
 | |
|         self.assertTrue('param1' in c.section('section1'))
 | |
|         self.assertTrue('param2' in c.section('section2'))
 | |
|         self.assertFalse('param1' in c.section('section2'))
 | |
| 
 | |
|     def test_returns_section_object_even_if_section_doesnot_exist(self):
 | |
|         c = Configuration()
 | |
|         self.assertIsNotNone(c.section('foo'))
 | |
| 
 | |
|     def test_template_substitution(self):
 | |
|         c = Configuration()
 | |
|         c.set('a', 'x')
 | |
|         c.set('b', '$a')
 | |
|         c.set('c', '$b')
 | |
| 
 | |
|         self.assertEqual('x', c.get('c'))
 | |
| 
 | |
|     def test_cycle_template_substitution_resolves_in_empty_string(self):
 | |
|         c = Configuration()
 | |
|         c.set('a', 'a$c')
 | |
|         c.set('b', 'b$a')
 | |
|         c.set('c', 'c$b')
 | |
| 
 | |
|         self.assertEqual('cba', c.get('c'))
 | |
| 
 | |
|     def test_getting_raw_values(self):
 | |
|         c = Configuration()
 | |
| 
 | |
|         c.set('a', '$b')
 | |
|         c.set('b', 'x')
 | |
| 
 | |
|         self.assertEqual('$b', c.get('a', raw=True))
 | 
