forked from ITISFoundation/osparc-simcore
-
Notifications
You must be signed in to change notification settings - Fork 1
/
test_route_files.py
74 lines (65 loc) · 2.19 KB
/
test_route_files.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# pylint: disable=redefined-outer-name
# pylint: disable=unused-argument
# pylint: disable=unused-variable
from typing import Iterator
from unittest.mock import Mock
import httpx
import pytest
from pydantic import parse_obj_as
from simcore_service_datcore_adapter.models.domains.files import FileDownloadOut
from starlette import status
pytestmark = pytest.mark.asyncio
@pytest.fixture
async def pennsieve_files_mock(
pennsieve_subsystem_mock: Mock, pennsieve_file_id: str
) -> Iterator[Mock]:
mock = pennsieve_subsystem_mock
if mock:
FAKE_FILE_ID = "123434"
# get packages files
mock.get(url__regex=r"https://api.pennsieve.io/packages/.+/files$").respond(
status.HTTP_200_OK,
json=[{"content": {"size": 12345, "id": FAKE_FILE_ID}}],
)
# get presigned url
mock.get(
f"https://api.pennsieve.io/packages/{pennsieve_file_id}/files/{FAKE_FILE_ID}"
).respond(
status.HTTP_200_OK,
json={"url": "http://www.example.com/index.html"},
)
# mock delete object
mock.post("https://api.pennsieve.io/data/delete").respond(
status.HTTP_200_OK, json={"success": [], "failures": []}
)
yield mock
async def test_download_file_entrypoint(
async_client: httpx.AsyncClient,
pennsieve_subsystem_mock: Mock,
pennsieve_files_mock: Mock,
pennsieve_api_headers: dict[str, str],
pennsieve_file_id: str,
):
file_id = pennsieve_file_id
response = await async_client.get(
f"v0/files/{file_id}",
headers=pennsieve_api_headers,
)
assert response.status_code == status.HTTP_200_OK
data = response.json()
assert data
parse_obj_as(FileDownloadOut, data)
async def test_delete_file_entrypoint(
async_client: httpx.AsyncClient,
pennsieve_subsystem_mock: Mock,
pennsieve_files_mock: Mock,
pennsieve_api_headers: dict[str, str],
pennsieve_file_id: str,
):
file_id = pennsieve_file_id
response = await async_client.delete(
f"v0/files/{file_id}",
headers=pennsieve_api_headers,
)
assert response.status_code == status.HTTP_204_NO_CONTENT
assert response.num_bytes_downloaded == 0