| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- from unittest.mock import patch
- import pytest
- from homeassistant.config_entries import SOURCE_USER
- from homeassistant.core import HomeAssistant
- from custom_components.room_cal_ha.const import (
- CONF_CALDAV_ENABLED,
- CONF_CALDAV_URL,
- CONF_CALENDAR_NAME,
- CONF_CURRENT_NAME,
- CONF_NEXT_NAME,
- CONF_ROOM_STATE_NAME,
- DEFAULT_CURRENT_NAME,
- DEFAULT_NEXT_NAME,
- DEFAULT_ROOM_STATE_NAME,
- DOMAIN,
- )
- async def test_user_step_shows_defaults(hass: HomeAssistant):
- result = await hass.config_entries.flow.async_init(
- DOMAIN, context={"source": SOURCE_USER}
- )
- assert result["type"] == "form"
- assert result["step_id"] == "user"
- schema = result["data_schema"].schema
- keys = {str(k): k for k in schema}
- assert keys[CONF_ROOM_STATE_NAME].default() == DEFAULT_ROOM_STATE_NAME
- assert keys[CONF_CURRENT_NAME].default() == DEFAULT_CURRENT_NAME
- assert keys[CONF_NEXT_NAME].default() == DEFAULT_NEXT_NAME
- async def test_user_step_creates_entry(hass: HomeAssistant):
- result = await hass.config_entries.flow.async_init(
- DOMAIN, context={"source": SOURCE_USER}
- )
- result = await hass.config_entries.flow.async_configure(
- result["flow_id"],
- user_input={
- CONF_ROOM_STATE_NAME: "My Room",
- CONF_CURRENT_NAME: "Staying Now",
- CONF_NEXT_NAME: "Coming Up",
- },
- )
- assert result["type"] == "create_entry"
- assert result["data"][CONF_ROOM_STATE_NAME] == "My Room"
- assert result["data"][CONF_CURRENT_NAME] == "Staying Now"
- assert result["data"][CONF_NEXT_NAME] == "Coming Up"
- async def test_options_flow_caldav_disabled(hass: HomeAssistant, mock_entry):
- mock_entry.add_to_hass(hass)
- result = await hass.config_entries.options.async_init(mock_entry.entry_id)
- assert result["type"] == "form"
- assert result["step_id"] == "caldav"
- result = await hass.config_entries.options.async_configure(
- result["flow_id"],
- user_input={CONF_CALDAV_ENABLED: False, CONF_CALDAV_URL: "", CONF_CALENDAR_NAME: ""},
- )
- assert result["type"] == "create_entry"
- assert result["data"][CONF_CALDAV_ENABLED] is False
- async def test_options_flow_caldav_enabled_tests_connection(hass: HomeAssistant, mock_entry):
- mock_entry.add_to_hass(hass)
- result = await hass.config_entries.options.async_init(mock_entry.entry_id)
- with patch(
- "custom_components.room_cal_ha.config_flow._test_caldav_auth",
- return_value=None,
- ):
- result = await hass.config_entries.options.async_configure(
- result["flow_id"],
- user_input={
- CONF_CALDAV_ENABLED: True,
- CONF_CALDAV_URL: "https://cal.example.com",
- CONF_CALENDAR_NAME: "Room",
- },
- )
- assert result["type"] == "create_entry"
- assert result["data"][CONF_CALDAV_ENABLED] is True
- async def test_options_flow_bad_credentials_shows_error(hass: HomeAssistant, mock_entry):
- import caldav.lib.error as caldav_error
- mock_entry.add_to_hass(hass)
- result = await hass.config_entries.options.async_init(mock_entry.entry_id)
- with patch(
- "custom_components.room_cal_ha.config_flow._test_caldav_auth",
- side_effect=caldav_error.AuthorizationError,
- ):
- result = await hass.config_entries.options.async_configure(
- result["flow_id"],
- user_input={
- CONF_CALDAV_ENABLED: True,
- CONF_CALDAV_URL: "https://cal.example.com",
- CONF_CALENDAR_NAME: "Room",
- },
- )
- assert result["type"] == "form"
- assert result["errors"]["base"] == "invalid_auth"
|