diff --git a/supervisor/backups/validate.py b/supervisor/backups/validate.py index 0420eeeea..f70a9784c 100644 --- a/supervisor/backups/validate.py +++ b/supervisor/backups/validate.py @@ -67,6 +67,13 @@ def v1_folderlist(folder_data: list[str]) -> list[str]: return folder_data +def v1_protected(protected: bool | str) -> bool: + """Cleanup old protected handling.""" + if isinstance(protected, bool): + return protected + return True + + # pylint: disable=no-value-for-parameter SCHEMA_BACKUP = vol.Schema( { @@ -76,7 +83,9 @@ SCHEMA_BACKUP = vol.Schema( vol.Required(ATTR_NAME): str, vol.Required(ATTR_DATE): str, vol.Optional(ATTR_COMPRESSED, default=True): vol.Boolean(), - vol.Optional(ATTR_PROTECTED, default=False): vol.Boolean(), + vol.Optional(ATTR_PROTECTED, default=False): vol.All( + v1_protected, vol.Boolean() + ), vol.Optional(ATTR_CRYPTO, default=None): vol.Maybe(CRYPTO_AES128), vol.Optional(ATTR_HOMEASSISTANT, default=None): vol.All( v1_homeassistant, diff --git a/tests/backups/test_validate.py b/tests/backups/test_validate.py index 2f4c80663..ae8e28392 100644 --- a/tests/backups/test_validate.py +++ b/tests/backups/test_validate.py @@ -41,3 +41,18 @@ def test_v1_folder_migration(): ) assert data[validate.ATTR_FOLDERS] == [validate.FOLDER_ADDONS] + + +def test_v1_protected(): + """Test v1 protection migration.""" + data = validate.SCHEMA_BACKUP( + { + **VALID_DEFAULT, + **{ + validate.ATTR_PROTECTED: "8", + validate.ATTR_TYPE: validate.BackupType.FULL, + }, + } + ) + + assert data[validate.ATTR_PROTECTED] is True