]> kaliko git repositories - mpd-sima.git/blobdiff - tests/test_config.py
Add abstract unix socket support for MPD connection
[mpd-sima.git] / tests / test_config.py
index 36ba2accf0bf9d5da101acfd1cb6b40f439720fe..eee93bd8a06c58f3e14bab31009ac6b2e0d5b110 100644 (file)
@@ -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