Skip to content

Commit 217184d

Browse files
authored
Add restore from location option (#37)
1 parent b918d50 commit 217184d

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

aiohasupervisor/models/backups.py

+1
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class FullRestoreOptions(Request):
174174

175175
password: str | None = None
176176
background: bool | None = None
177+
location: str | None = DEFAULT # type: ignore[assignment]
177178

178179

179180
@dataclass(frozen=True, slots=True)

tests/test_backups.py

+29-6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
Folder,
1818
FreezeOptions,
1919
FullBackupOptions,
20+
FullRestoreOptions,
2021
PartialBackupOptions,
2122
PartialRestoreOptions,
2223
RemoveBackupOptions,
@@ -372,31 +373,53 @@ async def test_remove_backup(
372373
}
373374

374375

376+
@pytest.mark.parametrize(
377+
"options",
378+
[
379+
None,
380+
FullRestoreOptions(password="abc123"), # noqa: S106
381+
FullRestoreOptions(background=True),
382+
FullRestoreOptions(location=None),
383+
FullRestoreOptions(location="test"),
384+
],
385+
)
375386
async def test_full_restore(
376-
responses: aioresponses, supervisor_client: SupervisorClient
387+
responses: aioresponses,
388+
supervisor_client: SupervisorClient,
389+
options: FullRestoreOptions | None,
377390
) -> None:
378391
"""Test full restore API."""
379392
responses.post(
380393
f"{SUPERVISOR_URL}/backups/abc123/restore/full",
381394
status=200,
382395
body=load_fixture("backup_restore.json"),
383396
)
384-
result = await supervisor_client.backups.full_restore("abc123")
397+
result = await supervisor_client.backups.full_restore("abc123", options)
385398
assert result.job_id == "dc9dbc16f6ad4de592ffa72c807ca2bf"
386399

387400

401+
@pytest.mark.parametrize(
402+
"options",
403+
[
404+
PartialRestoreOptions(addons={"core_ssh"}),
405+
PartialRestoreOptions(homeassistant=True, location=None),
406+
PartialRestoreOptions(folders={Folder.SHARE, Folder.SSL}, location="test"),
407+
PartialRestoreOptions(addons={"core_ssh"}, background=True),
408+
PartialRestoreOptions(addons={"core_ssh"}, password="abc123"), # noqa: S106
409+
],
410+
)
388411
async def test_partial_restore(
389-
responses: aioresponses, supervisor_client: SupervisorClient
412+
responses: aioresponses,
413+
supervisor_client: SupervisorClient,
414+
options: PartialRestoreOptions,
390415
) -> None:
391416
"""Test partial restore API."""
392417
responses.post(
393418
f"{SUPERVISOR_URL}/backups/abc123/restore/partial",
394419
status=200,
395420
body=load_fixture("backup_restore.json"),
396421
)
397-
result = await supervisor_client.backups.partial_restore(
398-
"abc123", PartialRestoreOptions(addons={"core_ssh"})
399-
)
422+
result = await supervisor_client.backups.partial_restore("abc123", options)
400423
assert result.job_id == "dc9dbc16f6ad4de592ffa72c807ca2bf"
401424

402425

0 commit comments

Comments
 (0)