X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=tests%2Ftest_config.py;h=eee93bd8a06c58f3e14bab31009ac6b2e0d5b110;hb=d67a78c3f86751a551b370c32aaf3934e772825f;hp=99a89f8964918784a7abdbc4735d50f6605391a1;hpb=69c5f0029e140e4471f38e8cae5d07b649263a08;p=mpd-sima.git diff --git a/tests/test_config.py b/tests/test_config.py index 99a89f8..eee93bd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -12,10 +12,16 @@ 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') - def test_XDG_var(self, mock_makedirs, mock_chmod): + @patch('sima.utils.config.ConfMan.control_facc') + def test_XDG_var(self, *args): config_home = '/foo/bar' os.environ['XDG_CONFIG_HOME'] = config_home conf_file = os.path.join(config_home, DIRNAME, CONF_FILE) @@ -28,7 +34,8 @@ class TestConfMan(unittest.TestCase): self.assertEqual(conf.config['sima']['var_dir'], var_dir) @patch('sima.utils.config.isdir') - def test_default_locations(self, mock_isdir): + @patch('sima.utils.config.ConfMan.control_facc') + def test_default_locations(self, mock_isdir, *args): home = '/foo' mock_isdir.return_value = True os.environ.pop('XDG_CONFIG_HOME', None) @@ -44,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