Files
core/tests/components/webdav/test_init.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

60 lines
1.7 KiB
Python
Raw Permalink Normal View History

"""Test WebDAV component setup."""
from unittest.mock import AsyncMock
from aiowebdav2.exceptions import AccessDeniedError, UnauthorizedError
import pytest
from homeassistant.components.webdav.const import CONF_BACKUP_PATH, DOMAIN
from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import CONF_PASSWORD, CONF_URL, CONF_USERNAME
from homeassistant.core import HomeAssistant
from . import setup_integration
from tests.common import MockConfigEntry
@pytest.mark.parametrize(
("error", "expected_message", "expected_state"),
[
(
UnauthorizedError("Unauthorized"),
"Invalid username or password",
ConfigEntryState.SETUP_ERROR,
),
(
AccessDeniedError("/access_denied"),
"Access denied to /access_denied",
ConfigEntryState.SETUP_ERROR,
),
],
ids=["UnauthorizedError", "AccessDeniedError"],
)
async def test_error_during_setup(
hass: HomeAssistant,
webdav_client: AsyncMock,
caplog: pytest.LogCaptureFixture,
error: Exception,
expected_message: str,
expected_state: ConfigEntryState,
) -> None:
"""Test handling of various errors during setup."""
webdav_client.check.side_effect = error
config_entry = MockConfigEntry(
title="user@webdav.demo",
domain=DOMAIN,
data={
CONF_URL: "https://webdav.demo",
CONF_USERNAME: "user",
CONF_PASSWORD: "supersecretpassword",
CONF_BACKUP_PATH: "/backups",
},
entry_id="01JKXV07ASC62D620DGYNG2R8H",
)
await setup_integration(hass, config_entry)
assert expected_message in caplog.text
assert config_entry.state is expected_state