mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
"""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
|