示例#1
0
def test_not_started(coresys):
    """Test if supervisor not fully started."""
    coresys.config.diagnostics = True

    coresys.core.state = CoreState.INITIALIZE
    assert filter_data(coresys, SAMPLE_EVENT, {}) == SAMPLE_EVENT

    coresys.core.state = CoreState.SETUP
    assert filter_data(coresys, SAMPLE_EVENT, {}) == SAMPLE_EVENT
示例#2
0
def test_sanitize(coresys):
    """Test event sanitation."""
    event = {
        "tags": [["url", "https://mydomain.com"]],
        "request": {
            "url":
            "https://mydomain.com",
            "headers": [
                ["Host", "mydomain.com"],
                [
                    "Referer",
                    "https://mydomain.com/api/hassio_ingress/xxx-xxx/"
                ],
                ["X-Forwarded-Host", "mydomain.com"],
                ["X-Hassio-Key", "xxx"],
            ],
        },
    }
    coresys.config.diagnostics = True

    coresys.core.state = CoreState.RUNNING
    with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0**3))):
        filtered = filter_data(coresys, event, {})

    assert ["url", "https://example.com"] in filtered["tags"]

    assert filtered["request"]["url"] == "https://example.com"

    assert ["Host", "example.com"] in filtered["request"]["headers"]
    assert ["Referer", "https://example.com/api/hassio_ingress/xxx-xxx/"
            ] in filtered["request"]["headers"]
    assert ["X-Forwarded-Host",
            "example.com"] in filtered["request"]["headers"]
    assert ["X-Hassio-Key",
            "XXXXXXXXXXXXXXXXXXX"] in filtered["request"]["headers"]
示例#3
0
def test_suggestions_on_report(coresys):
    """Attach suggestion to report."""

    coresys.resolution.create_issue(
        IssueType.FATAL_ERROR,
        ContextType.SYSTEM,
        suggestions=[SuggestionType.EXECUTE_RELOAD],
    )

    coresys.config.diagnostics = True
    coresys.core.state = CoreState.RUNNING

    with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0**3))):
        event = filter_data(coresys, SAMPLE_EVENT, {})

    assert "issues" in event["contexts"]["resolution"]
    assert event["contexts"]["resolution"]["issues"][0]["type"] == IssueType.FATAL_ERROR
    assert event["contexts"]["resolution"]["issues"][0]["context"] == ContextType.SYSTEM
    assert (
        event["contexts"]["resolution"]["suggestions"][0]["type"]
        == SuggestionType.EXECUTE_RELOAD
    )
    assert (
        event["contexts"]["resolution"]["suggestions"][0]["context"]
        == ContextType.SYSTEM
    )
示例#4
0
def test_unhealthy_on_report(coresys):
    """Attach unhealthy to report."""

    coresys.config.diagnostics = True
    coresys.core.state = CoreState.RUNNING
    coresys.resolution.unhealthy = UnhealthyReason.DOCKER

    with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0**3))):
        event = filter_data(coresys, SAMPLE_EVENT, {})

    assert "issues" in event["contexts"]
    assert event["contexts"]["unhealthy"][-1] == UnhealthyReason.DOCKER
示例#5
0
def test_images_report(coresys):
    """Attach image to report."""

    coresys.config.diagnostics = True
    coresys.core.state = CoreState.RUNNING
    coresys.resolution.evaluate.cached_images.add("my/test:image")

    with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0**3))):
        event = filter_data(coresys, SAMPLE_EVENT, {})

    assert "issues" in event["contexts"]["resolution"]
    assert event["contexts"]["host"]["images"] == ["my/test:image"]
示例#6
0
def test_defaults(coresys):
    """Test event defaults."""
    coresys.config.diagnostics = True

    coresys.core.state = CoreState.RUNNING
    with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0**3))):
        filtered = filter_data(coresys, SAMPLE_EVENT, {})

    assert ["installation_type", "supervised"] in filtered["tags"]
    assert filtered["contexts"]["host"]["arch"] == "amd64"
    assert filtered["contexts"]["host"]["machine"] == "qemux86-64"
    assert filtered["contexts"]["versions"]["supervisor"] == SUPERVISOR_VERSION
    assert filtered["user"]["id"] == coresys.machine_id
示例#7
0
def test_is_dev(coresys):
    """Test if dev."""
    coresys.config.diagnostics = True
    with patch("os.environ", return_value=[("ENV_SUPERVISOR_DEV", "1")]):
        assert filter_data(coresys, SAMPLE_EVENT, {}) is None
示例#8
0
def test_not_supported(coresys):
    """Test if not supported."""
    coresys.config.diagnostics = True
    coresys.resolution.unsupported = UnsupportedReason.DOCKER_VERSION
    assert filter_data(coresys, SAMPLE_EVENT, {}) is None
示例#9
0
def test_diagnostics_disabled(coresys):
    """Test if diagnostics is disabled."""
    coresys.config.diagnostics = False
    assert filter_data(coresys, SAMPLE_EVENT, {}) is None
示例#10
0
def test_ignored_exception(coresys):
    """Test ignored exceptions."""
    hint = {"exc_info": (None, AddonConfigurationError(), None)}
    assert filter_data(coresys, SAMPLE_EVENT, hint) is None
def test_not_supported(coresys):
    """Test if not supported."""
    coresys.config.diagnostics = True
    coresys.core.supported = False
    assert filter_data(coresys, SAMPLE_EVENT, {}) is None