Don't allow google calendar create/delete for yaml/search calendars (#83604)
* Update tests/components/google/test_calendar.py Co-authored-by: Martin Hjelmare <marhje52@gmail.com> * Don't allow google calendar create/delete for yaml/search calendars * Revert incorrect docstring update Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
4e1b399efd
commit
d41fe01736
2 changed files with 54 additions and 1 deletions
|
@ -212,6 +212,7 @@ async def async_setup_entry(
|
|||
# Prefer calendar sync down of resources when possible. However, sync does not work
|
||||
# for search. Also free-busy calendars denormalize recurring events as individual
|
||||
# events which is not efficient for sync
|
||||
support_write = calendar_item.access_role.is_writer
|
||||
if (
|
||||
search := data.get(CONF_SEARCH)
|
||||
or calendar_item.access_role == AccessRole.FREE_BUSY_READER
|
||||
|
@ -223,6 +224,7 @@ async def async_setup_entry(
|
|||
calendar_id,
|
||||
search,
|
||||
)
|
||||
support_write = False
|
||||
else:
|
||||
request_template = SyncEventsRequest(
|
||||
calendar_id=calendar_id,
|
||||
|
@ -246,7 +248,7 @@ async def async_setup_entry(
|
|||
generate_entity_id(ENTITY_ID_FORMAT, entity_name, hass=hass),
|
||||
unique_id,
|
||||
entity_enabled,
|
||||
calendar_item.access_role.is_writer,
|
||||
support_write,
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
@ -1091,6 +1091,57 @@ async def test_readonly_websocket_create(
|
|||
assert result["error"].get("code") == "not_supported"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"calendars_config",
|
||||
[
|
||||
[
|
||||
{
|
||||
"cal_id": CALENDAR_ID,
|
||||
"entities": [
|
||||
{
|
||||
"device_id": "backyard_light",
|
||||
"name": "Backyard Light",
|
||||
"search": "#Backyard",
|
||||
},
|
||||
],
|
||||
}
|
||||
],
|
||||
],
|
||||
)
|
||||
async def test_readonly_search_calendar(
|
||||
hass: HomeAssistant,
|
||||
component_setup: ComponentSetup,
|
||||
mock_calendars_yaml,
|
||||
mock_insert_event: Callable[[str, dict[str, Any]], None],
|
||||
mock_events_list: ApiResult,
|
||||
aioclient_mock: AiohttpClientMocker,
|
||||
ws_client: ClientFixture,
|
||||
) -> None:
|
||||
"""Test calendar configured with yaml/search does not support mutation."""
|
||||
mock_events_list({})
|
||||
assert await component_setup()
|
||||
|
||||
aioclient_mock.clear_requests()
|
||||
mock_insert_event(
|
||||
calendar_id=CALENDAR_ID,
|
||||
)
|
||||
|
||||
client = await ws_client()
|
||||
result = await client.cmd(
|
||||
"create",
|
||||
{
|
||||
"entity_id": TEST_YAML_ENTITY,
|
||||
"event": {
|
||||
"summary": "Bastille Day Party",
|
||||
"dtstart": "1997-07-14T17:00:00+00:00",
|
||||
"dtend": "1997-07-15T04:00:00+00:00",
|
||||
},
|
||||
},
|
||||
)
|
||||
assert result.get("error")
|
||||
assert result["error"].get("code") == "not_supported"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("calendar_access_role", ["reader", "freeBusyReader"])
|
||||
async def test_all_day_reader_access(hass, mock_events_list_items, component_setup):
|
||||
"""Test that reader / freebusy reader access can load properly."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue