Skip to content

Commit

Permalink
Backup not found returns 404 instead of 400 (#5479)
Browse files Browse the repository at this point in the history
  • Loading branch information
mdegat01 authored Dec 10, 2024
1 parent 045454b commit 774aef7
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
4 changes: 2 additions & 2 deletions supervisor/api/backups.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
CoreState,
)
from ..coresys import CoreSysAttributes
from ..exceptions import APIError, APIForbidden
from ..exceptions import APIError, APIForbidden, APINotFound
from ..jobs import JobSchedulerOptions
from ..mounts.const import MountUsage
from ..resolution.const import UnhealthyReason
Expand Down Expand Up @@ -134,7 +134,7 @@ def _extract_slug(self, request):
"""Return backup, throw an exception if it doesn't exist."""
backup = self.sys_backups.get(request.match_info.get("slug"))
if not backup:
raise APIError("Backup does not exist")
raise APINotFound("Backup does not exist")
return backup

def _list_backups(self):
Expand Down
6 changes: 6 additions & 0 deletions supervisor/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,12 @@ class APIForbidden(APIError):
status = 403


class APINotFound(APIError):
"""API not found error."""

status = 404


class APIAddonNotInstalled(APIError):
"""Not installed addon requested at addons API."""

Expand Down
18 changes: 18 additions & 0 deletions tests/api/test_backups.py
Original file line number Diff line number Diff line change
Expand Up @@ -729,3 +729,21 @@ async def test_upload_duplicate_backup_new_location(
".cloud_backup": copy_backup,
}
assert coresys.backups.get("7fed74c8").location is None


@pytest.mark.parametrize(
("method", "url"),
[
("get", "/backups/bad/info"),
("delete", "/backups/bad"),
("post", "/backups/bad/restore/full"),
("post", "/backups/bad/restore/partial"),
("get", "/backups/bad/download"),
],
)
async def test_backup_not_found(api_client: TestClient, method: str, url: str):
"""Test backup not found error."""
resp = await api_client.request(method, url)
assert resp.status == 404
resp = await resp.json()
assert resp["message"] == "Backup does not exist"

0 comments on commit 774aef7

Please sign in to comment.