Skip to content

Commit b137177

Browse files
committed
add test for abort endpoint
1 parent a35181b commit b137177

File tree

4 files changed

+59
-21
lines changed

4 files changed

+59
-21
lines changed
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
from pathlib import Path
22

33
from pydantic import BaseModel, model_validator
4+
from simcore_service_storage.api.rabbitmq_rpc._zipping import TaskId
45

56

6-
class ZipTaskStart(BaseModel):
7+
class ZipTaskStartInput(BaseModel):
78
paths: list[Path]
89

910
@model_validator(mode="after")
1011
def _check_paths(self, value):
1112
if not value:
1213
raise ValueError("Empty paths error")
1314
return value
15+
16+
17+
class ZipTaskAbortOutput(BaseModel):
18+
result: bool
19+
task_id: TaskId
Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
from typing import Final
22

3-
from models_library.api_schemas_long_running_tasks.tasks import TaskStatus
3+
from models_library.api_schemas_long_running_tasks.base import TaskId
4+
from models_library.api_schemas_long_running_tasks.tasks import TaskGet
45
from models_library.api_schemas_storage import STORAGE_RPC_NAMESPACE
5-
from models_library.api_schemas_storage.zipping_tasks import ZipTaskStart
6+
from models_library.api_schemas_storage.zipping_tasks import (
7+
ZipTaskAbortOutput,
8+
ZipTaskStartInput,
9+
)
610
from models_library.rabbitmq_basic_types import RPCMethodName
711
from pydantic import NonNegativeInt, TypeAdapter
812

@@ -14,13 +18,26 @@
1418

1519

1620
async def start_zipping(
17-
rabbitmq_rpc_client: RabbitMQRPCClient, *, paths: ZipTaskStart
18-
) -> TaskStatus:
21+
rabbitmq_rpc_client: RabbitMQRPCClient, *, paths: ZipTaskStartInput
22+
) -> TaskGet:
1923
result = await rabbitmq_rpc_client.request(
2024
STORAGE_RPC_NAMESPACE,
2125
_RPC_METHOD_NAME_ADAPTER.validate_python("start_zipping"),
2226
paths=paths,
2327
timeout_s=_DEFAULT_TIMEOUT_S,
2428
)
25-
assert isinstance(result, TaskStatus)
29+
assert isinstance(result, TaskGet)
30+
return result
31+
32+
33+
async def abort_zipping(
34+
rabbitmq_rpc_client: RabbitMQRPCClient, *, task_id: TaskId
35+
) -> ZipTaskAbortOutput:
36+
result = await rabbitmq_rpc_client.request(
37+
STORAGE_RPC_NAMESPACE,
38+
_RPC_METHOD_NAME_ADAPTER.validate_python("abort_zipping"),
39+
task_id=task_id,
40+
timeout_s=_DEFAULT_TIMEOUT_S,
41+
)
42+
assert isinstance(result, ZipTaskAbortOutput)
2643
return result
Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
1-
from datetime import datetime
21
from uuid import uuid4
32

43
from fastapi import FastAPI
5-
from models_library.api_schemas_long_running_tasks.base import (
6-
ProgressPercent,
7-
TaskProgress,
4+
from models_library.api_schemas_long_running_tasks.tasks import TaskGet, TaskId
5+
from models_library.api_schemas_storage.zipping_tasks import (
6+
ZipTaskAbortOutput,
7+
ZipTaskStartInput,
88
)
9-
from models_library.api_schemas_long_running_tasks.tasks import TaskStatus
10-
from models_library.api_schemas_storage.zipping_tasks import ZipTaskStart
119
from servicelib.rabbitmq import RPCRouter
1210

1311
router = RPCRouter()
1412

1513

1614
@router.expose()
17-
async def start_zipping(app: FastAPI, paths: ZipTaskStart) -> TaskStatus:
15+
async def start_zipping(app: FastAPI, paths: ZipTaskStartInput) -> TaskGet:
1816

19-
progress = TaskProgress(
17+
return TaskGet(
2018
task_id=f"{uuid4()}",
21-
message=", ".join(str(p) for p in paths.paths),
22-
percent=ProgressPercent(0.5),
19+
task_name=", ".join(str(p) for p in paths.paths),
20+
status_href="status_url",
21+
result_href="result url",
22+
abort_href="abort url",
2323
)
24-
return TaskStatus(task_progress=progress, done=False, started=datetime.now())
24+
25+
26+
@router.expose()
27+
async def abort_zipping(app: FastAPI, task_id: TaskId) -> ZipTaskAbortOutput:
28+
return ZipTaskAbortOutput(result=True, task_id=task_id)

services/storage/tests/unit/test_zipping.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44
import pytest
55
from faker import Faker
66
from fastapi import FastAPI
7-
from models_library.api_schemas_long_running_tasks.tasks import TaskStatus
8-
from models_library.api_schemas_storage.zipping_tasks import ZipTaskStart
7+
from models_library.api_schemas_long_running_tasks.tasks import TaskGet
8+
from models_library.api_schemas_storage.zipping_tasks import (
9+
ZipTaskAbortOutput,
10+
ZipTaskStartInput,
11+
)
912
from pytest_simcore.helpers.monkeypatch_envs import setenvs_from_dict
1013
from pytest_simcore.helpers.typing_env import EnvVarsDict
1114
from servicelib.rabbitmq import RabbitMQRPCClient
1215
from servicelib.rabbitmq.rpc_interfaces.storage import zipping
1316
from settings_library.rabbit import RabbitSettings
17+
from simcore_service_storage.api.rabbitmq_rpc._zipping import TaskId
1418
from simcore_service_storage.core.settings import ApplicationSettings
1519

1620
pytest_plugins = [
@@ -58,6 +62,13 @@ async def rpc_client(
5862

5963
async def test_start_zipping(rpc_client: RabbitMQRPCClient, faker: Faker):
6064
result = await zipping.start_zipping(
61-
rpc_client, paths=ZipTaskStart(paths=[Path(faker.file_path())])
65+
rpc_client, paths=ZipTaskStartInput(paths=[Path(faker.file_path())])
6266
)
63-
assert isinstance(result, TaskStatus)
67+
assert isinstance(result, TaskGet)
68+
69+
70+
async def test_abort_zipping(rpc_client: RabbitMQRPCClient, faker: Faker):
71+
_task_id = TaskId(f"{faker.uuid4()}")
72+
result = await zipping.abort_zipping(rpc_client, task_id=_task_id)
73+
assert isinstance(result, ZipTaskAbortOutput)
74+
assert result.task_id == _task_id

0 commit comments

Comments
 (0)