mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-04-22 20:27:16 +00:00
98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
"""Test Store API."""
|
|
from unittest.mock import patch
|
|
|
|
from aiohttp.test_utils import TestClient
|
|
import pytest
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.store.addon import AddonStore
|
|
from supervisor.store.repository import Repository
|
|
|
|
REPO_URL = "https://github.com/awesome-developer/awesome-repo"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_api_store(
|
|
api_client: TestClient, store_addon: AddonStore, repository: Repository
|
|
):
|
|
"""Test /store REST API."""
|
|
resp = await api_client.get("/store")
|
|
result = await resp.json()
|
|
|
|
assert result["data"]["addons"][-1]["slug"] == store_addon.slug
|
|
assert result["data"]["repositories"][-1]["slug"] == repository.slug
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_api_store_addons(api_client: TestClient, store_addon: AddonStore):
|
|
"""Test /store/addons REST API."""
|
|
print("test")
|
|
resp = await api_client.get("/store/addons")
|
|
result = await resp.json()
|
|
print(result)
|
|
|
|
assert result["data"][-1]["slug"] == store_addon.slug
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_api_store_addons_addon(api_client: TestClient, store_addon: AddonStore):
|
|
"""Test /store/addons/{addon} REST API."""
|
|
resp = await api_client.get(f"/store/addons/{store_addon.slug}")
|
|
result = await resp.json()
|
|
assert result["data"]["slug"] == store_addon.slug
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_api_store_addons_addon_version(
|
|
api_client: TestClient, store_addon: AddonStore
|
|
):
|
|
"""Test /store/addons/{addon}/{version} REST API."""
|
|
resp = await api_client.get(f"/store/addons/{store_addon.slug}/1.0.0")
|
|
result = await resp.json()
|
|
assert result["data"]["slug"] == store_addon.slug
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_api_store_repositories(api_client: TestClient, repository: Repository):
|
|
"""Test /store/repositories REST API."""
|
|
resp = await api_client.get("/store/repositories")
|
|
result = await resp.json()
|
|
|
|
assert result["data"][-1]["slug"] == repository.slug
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_api_store_repositories_repository(
|
|
api_client: TestClient, repository: Repository
|
|
):
|
|
"""Test /store/repositories/{repository} REST API."""
|
|
resp = await api_client.get(f"/store/repositories/{repository.slug}")
|
|
result = await resp.json()
|
|
|
|
assert result["data"]["slug"] == repository.slug
|
|
|
|
|
|
async def test_api_store_add_repository(api_client: TestClient, coresys: CoreSys):
|
|
"""Test POST /store/repositories REST API."""
|
|
with patch("supervisor.store.repository.Repository.load", return_value=None), patch(
|
|
"supervisor.store.repository.Repository.validate", return_value=True
|
|
):
|
|
response = await api_client.post(
|
|
"/store/repositories", json={"repository": REPO_URL}
|
|
)
|
|
|
|
assert response.status == 200
|
|
assert REPO_URL in coresys.store.repository_urls
|
|
assert isinstance(coresys.store.get_from_url(REPO_URL), Repository)
|
|
|
|
|
|
async def test_api_store_remove_repository(
|
|
api_client: TestClient, coresys: CoreSys, repository: Repository
|
|
):
|
|
"""Test DELETE /store/repositories/{repository} REST API."""
|
|
response = await api_client.delete(f"/store/repositories/{repository.slug}")
|
|
|
|
assert response.status == 200
|
|
assert repository.source not in coresys.store.repository_urls
|
|
assert repository.slug not in coresys.store.repositories
|