예제 #1
0
def test_log_exception():
    """Test logged output."""
    script_obj = script.Script(
        None, cv.SCRIPT_SCHEMA([{"service": "test.script"}, {"event": "test_event"}])
    )
    script_obj._exception_step = 1

    for exc, msg in (
        (vol.Invalid("Invalid number"), "Invalid data"),
        (
            exceptions.TemplateError(jinja2.TemplateError("Unclosed bracket")),
            "Error rendering template",
        ),
        (exceptions.Unauthorized(), "Unauthorized"),
        (exceptions.ServiceNotFound("light", "turn_on"), "Service not found"),
        (ValueError("Cannot parse JSON"), "Unknown error"),
    ):
        logger = mock.Mock()
        script_obj.async_log_exception(logger, "Test error", exc)

        assert len(logger.mock_calls) == 1
        _, _, p_error_desc, p_action_type, p_step, p_error = logger.mock_calls[0][1]

        assert p_error_desc == msg
        assert p_action_type == script.ACTION_FIRE_EVENT
        assert p_step == 2
        if isinstance(exc, ValueError):
            assert p_error == ""
        else:
            assert p_error == str(exc)
예제 #2
0
def test_log_exception():
    """Test logged output."""
    script_obj = script.Script(None, cv.SCRIPT_SCHEMA([
        {'service': 'test.script'},
        {'event': 'test_event'}]))
    script_obj._exception_step = 1

    for exc, msg in (
            (vol.Invalid("Invalid number"), 'Invalid data'),
            (exceptions.TemplateError(
                jinja2.TemplateError('Unclosed bracket')),
             'Error rendering template'),
            (exceptions.Unauthorized(), 'Unauthorized'),
            (exceptions.ServiceNotFound('light', 'turn_on'),
             'Service not found'),
            (ValueError("Cannot parse JSON"), 'Unknown error'),
    ):
        logger = mock.Mock()
        script_obj.async_log_exception(logger, 'Test error', exc)

        assert len(logger.mock_calls) == 1
        _, _, p_error_desc, p_action_type, p_step, p_error = \
            logger.mock_calls[0][1]

        assert p_error_desc == msg
        assert p_action_type == script.ACTION_FIRE_EVENT
        assert p_step == 2
        if isinstance(exc, ValueError):
            assert p_error == ""
        else:
            assert p_error == str(exc)