Support for nested config env variable expansion

This commit is contained in:
Ross McFarland
2023-12-05 10:29:49 -08:00
parent d6e3f75a92
commit 4c09f4bc71
3 changed files with 90 additions and 3 deletions
+74
View File
@@ -1071,6 +1071,80 @@ class TestManager(TestCase):
manager.sync()
self.assertTrue('does not support `list_zones`' in str(ctx.exception))
def test_build_kwargs(self):
manager = Manager(get_config_filename('simple.yaml'))
environ['OCTODNS_TEST_1'] = '42'
environ['OCTODNS_TEST_2'] = 'string'
# empty
self.assertEqual({}, manager._build_kwargs({}))
# simple, no expansion
self.assertEqual(
{'key': 'val', 'a': 42, 'x': None},
manager._build_kwargs({'key': 'val', 'a': 42, 'x': None}),
)
# top-level expansion
self.assertEqual(
{'secret': 42, 'another': 'string'},
manager._build_kwargs(
{
'secret': 'env/OCTODNS_TEST_1',
'another': 'env/OCTODNS_TEST_2',
}
),
)
# 2nd-level expansion
self.assertEqual(
{
'parent': {
'secret': 42,
'another': 'string',
'key': 'value',
'f': 43,
}
},
manager._build_kwargs(
{
'parent': {
'secret': 'env/OCTODNS_TEST_1',
'another': 'env/OCTODNS_TEST_2',
'key': 'value',
'f': 43,
}
}
),
)
# 3rd-level expansion
self.assertEqual(
{
'parent': {
'child': {
'secret': 42,
'another': 'string',
'key': 'value',
'f': 43,
}
}
},
manager._build_kwargs(
{
'parent': {
'child': {
'secret': 'env/OCTODNS_TEST_1',
'another': 'env/OCTODNS_TEST_2',
'key': 'value',
'f': 43,
}
}
}
),
)
class TestMainThreadExecutor(TestCase):
def test_success(self):