"""Tests for the Backup integration.""" from collections.abc import Awaitable, Callable from unittest.mock import patch from aiohttp import ClientSession, web from homeassistant.core import HomeAssistant from .common import TEST_BACKUP, setup_backup_integration from tests.common import MockUser async def test_downloading_backup( hass: HomeAssistant, hass_client: Callable[..., Awaitable[ClientSession]], ) -> None: """Test downloading a backup file.""" await setup_backup_integration(hass) client = await hass_client() with patch( "homeassistant.components.backup.http.BackupManager.get_backup", return_value=TEST_BACKUP, ), patch("pathlib.Path.exists", return_value=True), patch( "homeassistant.components.backup.http.FileResponse", return_value=web.Response(text=""), ): resp = await client.get("/api/backup/download/abc123") assert resp.status == 200 async def test_downloading_backup_not_found( hass: HomeAssistant, hass_client: Callable[..., Awaitable[ClientSession]], ) -> None: """Test downloading a backup file that does not exist.""" await setup_backup_integration(hass) client = await hass_client() resp = await client.get("/api/backup/download/abc123") assert resp.status == 404 async def test_non_admin( hass: HomeAssistant, hass_client: Callable[..., Awaitable[ClientSession]], hass_admin_user: MockUser, ) -> None: """Test downloading a backup file that does not exist.""" hass_admin_user.groups = [] await setup_backup_integration(hass) client = await hass_client() resp = await client.get("/api/backup/download/abc123") assert resp.status == 401