Backup not found returns 404 instead of 400 (#5479)

This commit is contained in:
Mike Degatano 2024-12-10 16:30:07 -05:00 committed by GitHub
parent 045454b597
commit 774aef74e8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 2 deletions

View File

@ -46,7 +46,7 @@ from ..const import (
CoreState, CoreState,
) )
from ..coresys import CoreSysAttributes from ..coresys import CoreSysAttributes
from ..exceptions import APIError, APIForbidden from ..exceptions import APIError, APIForbidden, APINotFound
from ..jobs import JobSchedulerOptions from ..jobs import JobSchedulerOptions
from ..mounts.const import MountUsage from ..mounts.const import MountUsage
from ..resolution.const import UnhealthyReason from ..resolution.const import UnhealthyReason
@ -134,7 +134,7 @@ class APIBackups(CoreSysAttributes):
"""Return backup, throw an exception if it doesn't exist.""" """Return backup, throw an exception if it doesn't exist."""
backup = self.sys_backups.get(request.match_info.get("slug")) backup = self.sys_backups.get(request.match_info.get("slug"))
if not backup: if not backup:
raise APIError("Backup does not exist") raise APINotFound("Backup does not exist")
return backup return backup
def _list_backups(self): def _list_backups(self):

View File

@ -336,6 +336,12 @@ class APIForbidden(APIError):
status = 403 status = 403
class APINotFound(APIError):
"""API not found error."""
status = 404
class APIAddonNotInstalled(APIError): class APIAddonNotInstalled(APIError):
"""Not installed addon requested at addons API.""" """Not installed addon requested at addons API."""

View File

@ -729,3 +729,21 @@ async def test_upload_duplicate_backup_new_location(
".cloud_backup": copy_backup, ".cloud_backup": copy_backup,
} }
assert coresys.backups.get("7fed74c8").location is None 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"