Beispiel #1
0
 def __init__(self):
     self.config = Config()
     logger.info("Initializing listener")
     if len(self.config.PINS) < 4:
         logger.critical("ERROR - please configure all 4 pins")
         raise SystemExit(1)
     self.write_files = True
     self.current_values = []
Beispiel #2
0
 def setup(self):
     with patch("%s._load_settings" % pb):
         with patch("%s._set_defaults" % pb):
             self.cls = Config()
Beispiel #3
0
class TestConfig(object):
    def setup(self):
        with patch("%s._load_settings" % pb):
            with patch("%s._set_defaults" % pb):
                self.cls = Config()

    def test_load_settings(self):
        mock_settings = Container()
        mock_settings.FOO = 1
        mock_settings.BAR = 2

        self.cls.FOO = 0

        env = {"foo": "bar"}
        with patch("%s.os.environ" % pbm, env):
            with patch("%s._load_module" % pb) as mock_load:
                with patch("%s.logger" % pbm) as mock_logger:
                    mock_load.return_value = mock_settings
                    self.cls._load_settings()
        assert mock_logger.mock_calls == [call.debug("Loading settings from %s", "piface_webhooks.settings")]
        assert mock_load.mock_calls == [call("piface_webhooks.settings")]
        assert self.cls.FOO == 1
        assert self.cls.BAR == 2

    def test_load_settings_env_var(self):
        mock_settings = Container()
        mock_settings.FOO = 1
        mock_settings.BAR = 2

        self.cls.FOO = 0

        env = {"foo": "bar", "PIFACE_WEBHOOKS_SETTINGS_MODULE": "foo.bar"}
        with patch("%s.os.environ" % pbm, env):
            with patch("%s._load_module" % pb) as mock_load:
                with patch("%s.logger" % pbm) as mock_logger:
                    mock_load.return_value = mock_settings
                    self.cls._load_settings()
        assert mock_logger.mock_calls == [call.debug("Loading settings from %s", "foo.bar")]
        assert mock_load.mock_calls == [call("foo.bar")]
        assert self.cls.FOO == 1
        assert self.cls.BAR == 2

    def test_load_settings_no_settings(self):
        self.cls.FOO = 0

        env = {"foo": "bar"}
        with patch("%s.os.environ" % pbm, env):
            with patch("%s._load_module" % pb) as mock_load:
                with patch("%s.logger" % pbm) as mock_logger:
                    mock_load.return_value = None
                    self.cls._load_settings()
        assert mock_logger.mock_calls == [
            call.debug("Loading settings from %s", "piface_webhooks.settings"),
            call.error(
                "Settings module %s could not be loaded; using default " "settings!", "piface_webhooks.settings"
            ),
        ]
        assert mock_load.mock_calls == [call("piface_webhooks.settings")]
        assert self.cls.FOO == 0

    def test_load_module(self):
        mock_mod = Mock()
        with patch("%s.importlib.import_module" % pbm) as mock_load:
            mock_load.return_value = mock_mod
            res = self.cls._load_module("foo")
        assert res == mock_mod
        assert mock_load.mock_calls == [call("foo")]

    def test_load_module_exception(self):
        def se_load(m):
            raise Exception("foo")

        with patch("%s.importlib.import_module" % pbm) as mock_load:
            mock_load.side_effect = se_load
            res = self.cls._load_module("foo")
        assert res is None
        assert mock_load.mock_calls == [call("foo")]

    def test_set_defaults(self):
        self.cls._set_defaults()
        assert self.cls.QUEUE_PATH == "/var/spool/piface-webhooks"
        assert self.cls.NO_LEDS is False
        assert self.cls.INVERT_LED is False
        assert self.cls.PINS == [
            {"name": "Pin 0", "states": ["off", "on"]},
            {"name": "Pin 1", "states": ["off", "on"]},
            {"name": "Pin 2", "states": ["off", "on"]},
            {"name": "Pin 3", "states": ["off", "on"]},
        ]
        assert self.cls.CALLBACKS == []
Beispiel #4
0
 def setup(self):
     with patch('%s._load_settings' % pb):
         with patch('%s._set_defaults' % pb):
             self.cls = Config()
Beispiel #5
0
class TestConfig(object):
    def setup(self):
        with patch('%s._load_settings' % pb):
            with patch('%s._set_defaults' % pb):
                self.cls = Config()

    def test_load_settings(self):
        mock_settings = Container()
        mock_settings.FOO = 1
        mock_settings.BAR = 2

        self.cls.FOO = 0

        env = {'foo': 'bar'}
        with patch('%s.os.environ' % pbm, env):
            with patch('%s._load_module' % pb) as mock_load:
                with patch('%s.logger' % pbm) as mock_logger:
                    mock_load.return_value = mock_settings
                    self.cls._load_settings()
        assert mock_logger.mock_calls == [
            call.debug("Loading settings from %s", 'piface_webhooks.settings')
        ]
        assert mock_load.mock_calls == [call('piface_webhooks.settings')]
        assert self.cls.FOO == 1
        assert self.cls.BAR == 2

    def test_load_settings_env_var(self):
        mock_settings = Container()
        mock_settings.FOO = 1
        mock_settings.BAR = 2

        self.cls.FOO = 0

        env = {
            'foo': 'bar',
            'PIFACE_WEBHOOKS_SETTINGS_MODULE': 'foo.bar',
        }
        with patch('%s.os.environ' % pbm, env):
            with patch('%s._load_module' % pb) as mock_load:
                with patch('%s.logger' % pbm) as mock_logger:
                    mock_load.return_value = mock_settings
                    self.cls._load_settings()
        assert mock_logger.mock_calls == [
            call.debug("Loading settings from %s", 'foo.bar')
        ]
        assert mock_load.mock_calls == [call('foo.bar')]
        assert self.cls.FOO == 1
        assert self.cls.BAR == 2

    def test_load_settings_no_settings(self):
        self.cls.FOO = 0

        env = {'foo': 'bar'}
        with patch('%s.os.environ' % pbm, env):
            with patch('%s._load_module' % pb) as mock_load:
                with patch('%s.logger' % pbm) as mock_logger:
                    mock_load.return_value = None
                    self.cls._load_settings()
        assert mock_logger.mock_calls == [
            call.debug("Loading settings from %s", 'piface_webhooks.settings'),
            call.error(
                'Settings module %s could not be loaded; using default '
                'settings!', 'piface_webhooks.settings')
        ]
        assert mock_load.mock_calls == [call('piface_webhooks.settings')]
        assert self.cls.FOO == 0

    def test_load_module(self):
        mock_mod = Mock()
        with patch('%s.importlib.import_module' % pbm) as mock_load:
            mock_load.return_value = mock_mod
            res = self.cls._load_module('foo')
        assert res == mock_mod
        assert mock_load.mock_calls == [call('foo')]

    def test_load_module_exception(self):
        def se_load(m):
            raise Exception("foo")

        with patch('%s.importlib.import_module' % pbm) as mock_load:
            mock_load.side_effect = se_load
            res = self.cls._load_module('foo')
        assert res is None
        assert mock_load.mock_calls == [call('foo')]

    def test_set_defaults(self):
        self.cls._set_defaults()
        assert self.cls.QUEUE_PATH == '/var/spool/piface-webhooks'
        assert self.cls.NO_LEDS is False
        assert self.cls.INVERT_LED is False
        assert self.cls.PINS == [
            {
                'name': 'Pin 0',
                'states': ['off', 'on']
            },
            {
                'name': 'Pin 1',
                'states': ['off', 'on']
            },
            {
                'name': 'Pin 2',
                'states': ['off', 'on']
            },
            {
                'name': 'Pin 3',
                'states': ['off', 'on']
            },
        ]
        assert self.cls.CALLBACKS == []
Beispiel #6
0
 def test_init(self):
     with patch('%s._load_settings' % pb) as mock_load:
         with patch('%s._set_defaults' % pb) as mock_defaults:
             Config()
     assert mock_load.mock_calls == [call()]
     assert mock_defaults.mock_calls == [call()]
Beispiel #7
0
 def __init__(self):
     self.config = Config()
     logger.info("Initializing worker")
     self.process_events = True