Skip to content

Commit

Permalink
Fix no changelog API response (#5064)
Browse files Browse the repository at this point in the history
* Fix no changelog API response

* Add comment reasoning HTTP 200 for no changelog

Co-authored-by: Stefan Agner <[email protected]>

* Apply suggestions from code review

Co-authored-by: Jan Čermák <[email protected]>

---------

Co-authored-by: Jan Čermák <[email protected]>
Co-authored-by: Stefan Agner <[email protected]>
  • Loading branch information
3 people authored May 7, 2024
1 parent 1a700c3 commit c05984c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
3 changes: 2 additions & 1 deletion supervisor/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,6 @@ def _register_store(self) -> None:
web.get("/store", api_store.store_info),
web.get("/store/addons", api_store.addons_list),
web.get("/store/addons/{addon}", api_store.addons_addon_info),
web.get("/store/addons/{addon}/{version}", api_store.addons_addon_info),
web.get("/store/addons/{addon}/icon", api_store.addons_addon_icon),
web.get("/store/addons/{addon}/logo", api_store.addons_addon_logo),
web.get(
Expand All @@ -719,6 +718,8 @@ def _register_store(self) -> None:
"/store/addons/{addon}/update/{version}",
api_store.addons_addon_update,
),
# Must be below others since it has a wildcard in resource path
web.get("/store/addons/{addon}/{version}", api_store.addons_addon_info),
web.post("/store/reload", api_store.reload),
web.get("/store/repositories", api_store.repositories_list),
web.get(
Expand Down
2 changes: 1 addition & 1 deletion supervisor/api/store.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ async def addons_addon_changelog(self, request: web.Request) -> str:
"""Return changelog from add-on."""
addon = self._extract_addon(request)
if not addon.with_changelog:
raise APIError(f"No changelog found for add-on {addon.slug}!")
return f"No changelog found for add-on {addon.slug}!"

with addon.path_changelog.open("r") as changelog:
return changelog.read()
Expand Down
15 changes: 15 additions & 0 deletions tests/api/test_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,3 +188,18 @@ async def container_events_task(*args, **kwargs):
assert resp.status == 200

await _container_events_task


@pytest.mark.parametrize("resource", ["store/addons", "addons"])
async def test_api_store_addons_no_changelog(
api_client: TestClient, coresys: CoreSys, store_addon: AddonStore, resource: str
):
"""Test /store/addons/{addon}/changelog REST API.
Currently the frontend expects a valid body even in the error case. Make sure that is
what the API returns.
"""
resp = await api_client.get(f"/{resource}/{store_addon.slug}/changelog")
assert resp.status == 200
result = await resp.text()
assert result == "No changelog found for add-on test_store_addon!"

0 comments on commit c05984c

Please sign in to comment.