X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=tests%2Ftest_config.py;h=eee93bd8a06c58f3e14bab31009ac6b2e0d5b110;hb=d67a78c3f86751a551b370c32aaf3934e772825f;hp=36ba2accf0bf9d5da101acfd1cb6b40f439720fe;hpb=24bfc0a6fceb390f4b967be0b83d412dcad44ca5;p=mpd-sima.git diff --git a/tests/test_config.py b/tests/test_config.py index 36ba2ac..eee93bd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -12,6 +12,11 @@ from sima.lib.logger import set_logger class TestConfMan(unittest.TestCase): + """For some tests we don't care about file access check, then to ensure + checks are properly mocked run test forcing non existent locations: + + XDG_DATA_HOME=/non/existent/ XDG_HOME_CONFIG=/non/existent/ python3 -m unittest -vf tests/test_config.py + """ @patch('sima.utils.config.makedirs') @patch('sima.utils.config.chmod') @@ -46,5 +51,63 @@ class TestConfMan(unittest.TestCase): expected_config = os.path.join(home, '.config', DIRNAME, CONF_FILE) self.assertEqual(constructed_config_location, expected_config) + @patch('sima.utils.config.makedirs') + @patch('sima.utils.config.chmod') + @patch('sima.utils.config.ConfMan.control_facc') + def test_MPD_env_var(self, *args): + host = 'example.org' + passwd = 's2cr34!' + port = '6601' + os.environ.pop('MPD_HOST', None) + os.environ.pop('MPD_PORT', None) + # Test defaults + conf = ConfMan({}) + self.assertEqual(dict(conf.config['MPD']), + {'host': 'localhost', 'port': '6600'}) + # Test provided env. var. + os.environ['MPD_HOST'] = host + conf = ConfMan({}) + self.assertEqual(dict(conf.config['MPD']), + {'host': host, 'port': '6600'}) + os.environ['MPD_HOST'] = f'{passwd}@{host}' + conf = ConfMan({}) + self.assertEqual(dict(conf.config['MPD']), + {'host': host, + 'password': passwd, + 'port': '6600'}) + # Test abstract unix socket support with password + os.environ['MPD_HOST'] = f'{passwd}@@/{host}' + conf = ConfMan({}) + self.assertEqual(dict(conf.config['MPD']), + {'host': f'@/{host}', + 'password': passwd, + 'port': '6600'}) + # Test abstract unix socket support only + os.environ['MPD_HOST'] = f'@/{host}' + conf = ConfMan({}) + self.assertEqual(dict(conf.config['MPD']), + {'host': f'@/{host}', + 'port': '6600'}) + # Test port + os.environ['MPD_PORT'] = f'{port}' + conf = ConfMan({}) + self.assertEqual(conf.config['MPD']['port'], port) + + @patch('sima.utils.config.makedirs') + @patch('sima.utils.config.chmod') + @patch('sima.utils.config.ConfMan.control_facc') + def test_config_origin_priority(self, *args): + # cli provided host overrides env. var. + os.environ['MPD_HOST'] = 'baz.foo' + conf = ConfMan({'host': 'cli.host'}) + self.assertEqual(conf.config['MPD']['host'], 'cli.host') + # cli provided abstract socket overrides env. var. + conf = ConfMan({'host': '@/abstract'}) + self.assertEqual(conf.config['MPD']['host'], '@/abstract') + # cli provided passord and abstract socket overrides env. var. + conf = ConfMan({'host': 'pass!@@/abstract'}) + self.assertEqual(conf.config['MPD']['host'], '@/abstract') + self.assertEqual(conf.config['MPD']['password'], 'pass!') + # VIM MODLINE # vim: ai ts=4 sw=4 sts=4 expandtab fileencoding=utf8