From 9fb27d959baecac0d92ffdb874b782d1501706d6 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Thu, 9 Sep 2021 00:49:07 +0300 Subject: [PATCH] move update under add --- src/ahriman/core/spawn.py | 7 --- src/ahriman/web/routes.py | 7 ++- src/ahriman/web/views/service/add.py | 2 +- src/ahriman/web/views/service/update.py | 50 ------------------- tests/ahriman/core/test_spawn.py | 9 ---- .../views/service/test_views_service_add.py | 17 +++++-- .../service/test_views_service_update.py | 24 --------- 7 files changed, 18 insertions(+), 98 deletions(-) delete mode 100644 src/ahriman/web/views/service/update.py delete mode 100644 tests/ahriman/web/views/service/test_views_service_update.py diff --git a/src/ahriman/core/spawn.py b/src/ahriman/core/spawn.py index 2664f74f..eb094d54 100644 --- a/src/ahriman/core/spawn.py +++ b/src/ahriman/core/spawn.py @@ -89,13 +89,6 @@ class Spawn(Thread): """ self.spawn_process("remove", *packages) - def packages_update(self, packages: Iterable[str]) -> None: - """ - update packages - :param packages: packages list to update - """ - self.spawn_process("update", *packages) - def spawn_process(self, command: str, *args: str, **kwargs: str) -> None: """ spawn external ahriman process with supplied arguments diff --git a/src/ahriman/web/routes.py b/src/ahriman/web/routes.py index 214b1911..17c22d5c 100644 --- a/src/ahriman/web/routes.py +++ b/src/ahriman/web/routes.py @@ -23,7 +23,6 @@ from ahriman.web.views.index import IndexView from ahriman.web.views.service.add import AddView from ahriman.web.views.service.remove import RemoveView from ahriman.web.views.service.search import SearchView -from ahriman.web.views.service.update import UpdateView from ahriman.web.views.status.ahriman import AhrimanView from ahriman.web.views.status.package import PackageView from ahriman.web.views.status.packages import PackagesView @@ -45,9 +44,9 @@ def setup_routes(application: Application) -> None: POST /service-api/v1/remove remove existing package from repository - GET /service-api/v1/search search for substring in AUR + POST /service-api/v1/update update packages in repository, actually it is just alias for add - POST /service-api/v1/update update existing package in repository + GET /service-api/v1/search search for substring in AUR GET /status-api/v1/ahriman get current service status POST /status-api/v1/ahriman update service status @@ -75,7 +74,7 @@ def setup_routes(application: Application) -> None: application.router.add_get("/service-api/v1/search", SearchView, allow_head=False) - application.router.add_post("/service-api/v1/update", UpdateView) + application.router.add_post("/service-api/v1/update", AddView) application.router.add_get("/status-api/v1/ahriman", AhrimanView, allow_head=True) application.router.add_post("/status-api/v1/ahriman", AhrimanView) diff --git a/src/ahriman/web/views/service/add.py b/src/ahriman/web/views/service/add.py index 0527c3ca..19a3ba2c 100644 --- a/src/ahriman/web/views/service/add.py +++ b/src/ahriman/web/views/service/add.py @@ -42,7 +42,7 @@ class AddView(BaseView): data = await self.extract_data(["packages"]) try: - now = data.get("build_now") or False + now = data.get("build_now", True) packages = data["packages"] except Exception as e: return json_response(text=str(e), status=400) diff --git a/src/ahriman/web/views/service/update.py b/src/ahriman/web/views/service/update.py deleted file mode 100644 index 92aa16ec..00000000 --- a/src/ahriman/web/views/service/update.py +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright (c) 2021 ahriman team. -# -# This file is part of ahriman -# (see https://github.com/arcan1s/ahriman). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -from aiohttp.web import HTTPFound, Response, json_response - -from ahriman.web.views.base import BaseView - - -class UpdateView(BaseView): - """ - update package web view - """ - - async def post(self) -> Response: - """ - update existing packages - - JSON body must be supplied, the following model is used: - { - "packages": "ahriman", # either list of packages or package name - } - - :return: redirect to main page on success - """ - data = await self.extract_data(["packages"]) - - try: - packages = data["packages"] - except Exception as e: - return json_response(text=str(e), status=400) - - self.spawner.packages_update(packages) - - return HTTPFound("/") diff --git a/tests/ahriman/core/test_spawn.py b/tests/ahriman/core/test_spawn.py index 2cce5b89..a64579d8 100644 --- a/tests/ahriman/core/test_spawn.py +++ b/tests/ahriman/core/test_spawn.py @@ -63,15 +63,6 @@ def test_packages_remove(spawner: Spawn, mocker: MockerFixture) -> None: spawn_mock.assert_called_with("remove", "ahriman", "linux") -def test_packages_update(spawner: Spawn, mocker: MockerFixture) -> None: - """ - must call package updates - """ - spawn_mock = mocker.patch("ahriman.core.spawn.Spawn.spawn_process") - spawner.packages_update(["ahriman", "linux"]) - spawn_mock.assert_called_with("update", "ahriman", "linux") - - def test_spawn_process(spawner: Spawn, mocker: MockerFixture) -> None: """ must correctly spawn child process diff --git a/tests/ahriman/web/views/service/test_views_service_add.py b/tests/ahriman/web/views/service/test_views_service_add.py index 4a24c6b9..24c750c9 100644 --- a/tests/ahriman/web/views/service/test_views_service_add.py +++ b/tests/ahriman/web/views/service/test_views_service_add.py @@ -10,7 +10,7 @@ async def test_post(client: TestClient, mocker: MockerFixture) -> None: response = await client.post("/service-api/v1/add", json={"packages": ["ahriman"]}) assert response.status == 200 - add_mock.assert_called_with(["ahriman"], False) + add_mock.assert_called_with(["ahriman"], True) async def test_post_now(client: TestClient, mocker: MockerFixture) -> None: @@ -18,10 +18,10 @@ async def test_post_now(client: TestClient, mocker: MockerFixture) -> None: must call post and run build """ add_mock = mocker.patch("ahriman.core.spawn.Spawn.packages_add") - response = await client.post("/service-api/v1/add", json={"packages": ["ahriman"], "build_now": True}) + response = await client.post("/service-api/v1/add", json={"packages": ["ahriman"], "build_now": False}) assert response.status == 200 - add_mock.assert_called_with(["ahriman"], True) + add_mock.assert_called_with(["ahriman"], False) async def test_post_exception(client: TestClient, mocker: MockerFixture) -> None: @@ -33,3 +33,14 @@ async def test_post_exception(client: TestClient, mocker: MockerFixture) -> None assert response.status == 400 add_mock.assert_not_called() + + +async def test_post_update(client: TestClient, mocker: MockerFixture) -> None: + """ + must call post request correctly for alias + """ + add_mock = mocker.patch("ahriman.core.spawn.Spawn.packages_add") + response = await client.post("/service-api/v1/update", json={"packages": ["ahriman"]}) + + assert response.status == 200 + add_mock.assert_called_with(["ahriman"], True) diff --git a/tests/ahriman/web/views/service/test_views_service_update.py b/tests/ahriman/web/views/service/test_views_service_update.py deleted file mode 100644 index 6e9a3b7b..00000000 --- a/tests/ahriman/web/views/service/test_views_service_update.py +++ /dev/null @@ -1,24 +0,0 @@ -from aiohttp.test_utils import TestClient -from pytest_mock import MockerFixture - - -async def test_post(client: TestClient, mocker: MockerFixture) -> None: - """ - must call post request correctly - """ - add_mock = mocker.patch("ahriman.core.spawn.Spawn.packages_update") - response = await client.post("/service-api/v1/update", json={"packages": ["ahriman"]}) - - assert response.status == 200 - add_mock.assert_called_with(["ahriman"]) - - -async def test_post_exception(client: TestClient, mocker: MockerFixture) -> None: - """ - must raise exception on missing packages payload - """ - add_mock = mocker.patch("ahriman.core.spawn.Spawn.packages_update") - response = await client.post("/service-api/v1/update") - - assert response.status == 400 - add_mock.assert_not_called()