| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- import pytest
 
- from flexmock import flexmock
 
- from borgmatic.config import constants as module
 
- @pytest.mark.parametrize(
 
-     'value,expected_value',
 
-     (
 
-         ('3', 3),
 
-         ('0', 0),
 
-         ('-3', -3),
 
-         ('1234', 1234),
 
-         ('true', True),
 
-         ('True', True),
 
-         ('false', False),
 
-         ('False', False),
 
-         ('thing', 'thing'),
 
-         ({}, {}),
 
-         ({'foo': 'bar'}, {'foo': 'bar'}),
 
-         ([], []),
 
-         (['foo', 'bar'], ['foo', 'bar']),
 
-     ),
 
- )
 
- def test_coerce_scalar_converts_value(value, expected_value):
 
-     assert module.coerce_scalar(value) == expected_value
 
- def test_apply_constants_with_empty_constants_passes_through_value():
 
-     assert module.apply_constants(value='thing', constants={}) == 'thing'
 
- @pytest.mark.parametrize(
 
-     'value,expected_value',
 
-     (
 
-         (None, None),
 
-         ('thing', 'thing'),
 
-         ('{foo}', 'bar'),
 
-         ('abc{foo}', 'abcbar'),
 
-         ('{foo}xyz', 'barxyz'),
 
-         ('{foo}{baz}', 'barquux'),
 
-         ('{int}', '3'),
 
-         ('{bool}', 'True'),
 
-         (['thing', 'other'], ['thing', 'other']),
 
-         (['thing', '{foo}'], ['thing', 'bar']),
 
-         (['{foo}', '{baz}'], ['bar', 'quux']),
 
-         ({'key': 'value'}, {'key': 'value'}),
 
-         ({'key': '{foo}'}, {'key': 'bar'}),
 
-         ({'key': '{inject}'}, {'key': 'echo hi; naughty-command'}),
 
-         ({'before_backup': '{inject}'}, {'before_backup': "'echo hi; naughty-command'"}),
 
-         ({'after_backup': '{inject}'}, {'after_backup': "'echo hi; naughty-command'"}),
 
-         ({'on_error': '{inject}'}, {'on_error': "'echo hi; naughty-command'"}),
 
-         (
 
-             {
 
-                 'before_backup': '{env_pass}',
 
-                 'postgresql_databases': [{'name': 'users', 'password': '{env_pass}'}],
 
-             },
 
-             {
 
-                 'before_backup': "'${PASS}'",
 
-                 'postgresql_databases': [{'name': 'users', 'password': '${PASS}'}],
 
-             },
 
-         ),
 
-         (3, 3),
 
-         (True, True),
 
-         (False, False),
 
-     ),
 
- )
 
- def test_apply_constants_makes_string_substitutions(value, expected_value):
 
-     flexmock(module).should_receive('coerce_scalar').replace_with(lambda value: value)
 
-     constants = {
 
-         'foo': 'bar',
 
-         'baz': 'quux',
 
-         'int': 3,
 
-         'bool': True,
 
-         'inject': 'echo hi; naughty-command',
 
-         'env_pass': '${PASS}',
 
-     }
 
-     assert module.apply_constants(value, constants) == expected_value
 
 
  |