diff --git a/homeassistant/components/backup/manager.py b/homeassistant/components/backup/manager.py index 81826ffcb24..37408459940 100644 --- a/homeassistant/components/backup/manager.py +++ b/homeassistant/components/backup/manager.py @@ -1461,9 +1461,11 @@ class CoreBackupReaderWriter(BackupReaderWriter): backup_id = _generate_backup_id(date_str, backup_name) if include_addons or include_all_addons or include_folders: - raise BackupReaderWriterError( - "Addons and folders are not supported by core backup" - ) + if not extra_metadata.get("with_automatic_settings"): + raise BackupReaderWriterError( + "Addons and folders are not supported by core backup" + ) + LOGGER.debug("Ignoring addons and folders in automatic backup") if not include_homeassistant: raise BackupReaderWriterError("Home Assistant must be included in backup") diff --git a/tests/components/backup/test_websocket.py b/tests/components/backup/test_websocket.py index 8632fb1e957..7bd3fd8e8e4 100644 --- a/tests/components/backup/test_websocket.py +++ b/tests/components/backup/test_websocket.py @@ -422,6 +422,50 @@ async def test_generate_wrong_parameters( } +@pytest.mark.parametrize( + ("parameters", "expected_error"), + [ + ( + {"include_addons": ["blah"]}, + "Ignoring addons and folders in automatic backup", + ), + ( + {"include_all_addons": True}, + "Ignoring addons and folders in automatic backup", + ), + ( + {"include_folders": ["ssl"]}, + "Ignoring addons and folders in automatic backup", + ), + ], +) +async def test_generate_wrong_parameters_automatic_settings( + hass: HomeAssistant, + hass_ws_client: WebSocketGenerator, + parameters: dict[str, Any], + expected_error: str, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test generating a backup.""" + await setup_backup_integration(hass, with_hassio=False) + + client = await hass_ws_client(hass) + + await client.send_json_auto_id( + { + "type": "backup/config/update", + "create_backup": {"agent_ids": ["backup.local"]} | parameters, + } + ) + response = await client.receive_json() + assert response["success"] + + await client.send_json_auto_id({"type": "backup/generate_with_automatic_settings"}) + response = await client.receive_json() + assert response["success"] + assert expected_error in caplog.text + + @pytest.mark.usefixtures("mock_backup_generation") @pytest.mark.parametrize( ("params", "expected_extra_call_params"),