123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- # coding: utf-8
- # Python libs
- from __future__ import absolute_import
- # Salt libs
- import salt.beacons.glxinfo as glxinfo
- # Import test suite libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import Mock, patch
- # Salt testing libs
- from tests.support.unit import TestCase
- class GLXInfoBeaconTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test case for salt.beacons.glxinfo
- """
- def setup_loader_modules(self):
- return {glxinfo: {"last_state": {}}}
- def test_no_glxinfo_command(self):
- with patch("salt.utils.path.which") as mock:
- mock.return_value = None
- ret = glxinfo.__virtual__()
- mock.assert_called_once_with("glxinfo")
- self.assertFalse(ret)
- def test_with_glxinfo_command(self):
- with patch("salt.utils.path.which") as mock:
- mock.return_value = "/usr/bin/glxinfo"
- ret = glxinfo.__virtual__()
- mock.assert_called_once_with("glxinfo")
- self.assertEqual(ret, "glxinfo")
- def test_non_list_config(self):
- config = {}
- ret = glxinfo.validate(config)
- self.assertEqual(
- ret, (False, "Configuration for glxinfo beacon must be a list.")
- )
- def test_no_user(self):
- config = [{"screen_event": True}]
- _expected = (
- False,
- "Configuration for glxinfo beacon must "
- "include a user as glxinfo is not "
- "available to root.",
- )
- ret = glxinfo.validate(config)
- self.assertEqual(ret, _expected)
- def test_screen_state(self):
- config = [{"screen_event": True, "user": "frank"}]
- mock = Mock(return_value=0)
- with patch.dict(glxinfo.__salt__, {"cmd.retcode": mock}):
- ret = glxinfo.validate(config)
- self.assertEqual(ret, (True, "Valid beacon configuration"))
- ret = glxinfo.beacon(config)
- self.assertEqual(ret, [{"tag": "screen_event", "screen_available": True}])
- mock.assert_called_once_with(
- "DISPLAY=:0 glxinfo", runas="frank", python_shell=True
- )
- def test_screen_state_missing(self):
- config = [{"screen_event": True, "user": "frank"}]
- mock = Mock(return_value=255)
- with patch.dict(glxinfo.__salt__, {"cmd.retcode": mock}):
- ret = glxinfo.validate(config)
- self.assertEqual(ret, (True, "Valid beacon configuration"))
- ret = glxinfo.beacon(config)
- self.assertEqual(ret, [{"tag": "screen_event", "screen_available": False}])
- def test_screen_state_no_repeat(self):
- config = [{"screen_event": True, "user": "frank"}]
- mock = Mock(return_value=255)
- with patch.dict(glxinfo.__salt__, {"cmd.retcode": mock}):
- ret = glxinfo.validate(config)
- self.assertEqual(ret, (True, "Valid beacon configuration"))
- ret = glxinfo.beacon(config)
- self.assertEqual(ret, [{"tag": "screen_event", "screen_available": False}])
- ret = glxinfo.beacon(config)
- self.assertEqual(ret, [])
- def test_screen_state_change(self):
- config = [{"screen_event": True, "user": "frank"}]
- mock = Mock(side_effect=[255, 0])
- with patch.dict(glxinfo.__salt__, {"cmd.retcode": mock}):
- ret = glxinfo.validate(config)
- self.assertEqual(ret, (True, "Valid beacon configuration"))
- ret = glxinfo.beacon(config)
- self.assertEqual(ret, [{"tag": "screen_event", "screen_available": False}])
- ret = glxinfo.beacon(config)
- self.assertEqual(ret, [{"tag": "screen_event", "screen_available": True}])
|