diff --git a/geoengine/permissions.py b/geoengine/permissions.py index 23e0a746..2de9c4fe 100644 --- a/geoengine/permissions.py +++ b/geoengine/permissions.py @@ -4,7 +4,6 @@ from __future__ import annotations -import ast from enum import Enum from uuid import UUID @@ -255,11 +254,7 @@ def add_role(name: str, timeout: int = 60) -> RoleId: user_api = geoengine_openapi_client.UserApi(api_client) response = user_api.add_role_handler(geoengine_openapi_client.AddRole(name=name, _request_timeout=timeout)) - # TODO: find out why JSON string is faulty - # parsed_response = json.loads(response) - parsed_response: dict[str, str] = ast.literal_eval(response) - - return RoleId.from_response(parsed_response) + return RoleId(response.id) def remove_role(role: RoleId, timeout: int = 60): diff --git a/geoengine/tasks.py b/geoengine/tasks.py index 6669e7ba..b917ca89 100644 --- a/geoengine/tasks.py +++ b/geoengine/tasks.py @@ -267,7 +267,6 @@ def get_status(self, timeout: int = 3600) -> TaskStatusInfo: with geoengine_openapi_client.ApiClient(session.configuration) as api_client: tasks_api = geoengine_openapi_client.TasksApi(api_client) - print(task_id) response = tasks_api.status_handler(task_id, _request_timeout=timeout) return TaskStatusInfo.from_response(response) diff --git a/pyproject.toml b/pyproject.toml index 1a40d151..a199beda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ readme = { file = "README.md", content-type = "text/markdown" } license-files = ["LICENSE"] requires-python = ">=3.10" dependencies = [ - "geoengine-openapi-client == 0.0.29", + "geoengine-openapi-client == 0.0.30", "geopandas >=1.0,<2.0", "matplotlib >=3.5,<3.11", "numpy >=1.21,<2.5", diff --git a/tests/test_workflow_storage.py b/tests/test_workflow_storage.py index a3eaa564..bb97d935 100644 --- a/tests/test_workflow_storage.py +++ b/tests/test_workflow_storage.py @@ -1,15 +1,13 @@ """Tests for WMS calls""" import unittest -from uuid import UUID import geoengine_openapi_client import geoengine as ge from geoengine.datasets import DatasetName, StoredDataset -from geoengine.resource_identifier import UploadId - -from . import UrllibMocker +from geoengine.tasks import TaskStatus +from tests.ge_test import GeoEngineTestInstance class WorkflowStorageTests(unittest.TestCase): @@ -19,63 +17,11 @@ def setUp(self) -> None: ge.reset(False) def test_storing_workflow(self): - expected_request_text = { - "asCog": True, - "description": "Bar", - "displayName": "Foo", - "query": { - "spatialBounds": { - "lowerRightCoordinate": {"x": 180, "y": -90}, - "upperLeftCoordinate": {"x": -180, "y": 90}, - }, - "spatialResolution": {"x": 1.8, "y": 1.8}, - "timeInterval": {"end": 1396353600000, "start": 1396353600000}, - }, - } - - with UrllibMocker() as m: - m.post( - "http://mock-instance/anonymous", - json={"id": "c4983c3e-9b53-47ae-bda9-382223bd5081", "project": None, "view": None}, - ) - - m.post( - "http://mock-instance/workflow", - json={"id": "5b9508a8-bd34-5a1c-acd6-75bb832d2d38"}, - request_headers={"Authorization": "Bearer c4983c3e-9b53-47ae-bda9-382223bd5081"}, - ) - - m.get( - "http://mock-instance/workflow/5b9508a8-bd34-5a1c-acd6-75bb832d2d38/metadata", - json={ - "type": "raster", - "dataType": "U8", - "spatialReference": "EPSG:4326", - "bands": [{"name": "band", "measurement": {"type": "unitless"}}], - }, - request_headers={"Authorization": "Bearer c4983c3e-9b53-47ae-bda9-382223bd5081"}, - ) + # TODO: use `enterContext(cm)` instead of `with cm: ` in Python 3.11 + with GeoEngineTestInstance() as ge_instance: + ge_instance.wait_for_ready() - m.post( - "http://mock-instance/datasetFromWorkflow/5b9508a8-bd34-5a1c-acd6-75bb832d2d38", - expected_request_body=expected_request_text, - json={"taskId": "9ec828ef-c3da-4016-8cc7-79e5556267fc"}, - request_headers={"Authorization": "Bearer c4983c3e-9b53-47ae-bda9-382223bd5081"}, - ) - - m.get( - "http://mock-instance/tasks/9ec828ef-c3da-4016-8cc7-79e5556267fc/status", - json={ - "status": "completed", - "info": {"dataset": "my_new_dataset", "upload": "3086f494-d5a4-4b51-a14b-3b29f8bf7bb0"}, - "timeTotal": "00:00:00", - "taskType": "create-dataset", - "description": "Creating dataset Foo from workflow 5b9508a8-bd34-5a1c-acd6-75bb832d2d38", - "timeStarted": "2023-02-16T15:25:45.390Z", - }, - ) - - ge.initialize("http://mock-instance") + ge.initialize(ge_instance.address()) workflow_definition = {"type": "Raster", "operator": {"type": "GdalSource", "params": {"data": "ndvi"}}} @@ -89,14 +35,17 @@ def test_storing_workflow(self): ) workflow = ge.register_workflow(workflow_definition) + + dataset_name = f"{ge.get_session().user_id}:my_new_dataset" task = workflow.save_as_dataset( query, - None, - "Foo", - "Bar", + name=dataset_name, + display_name="Foo", + description="Bar", ) + task.wait_for_finish() task_status = task.get_status() - stored_dataset = StoredDataset.from_response(task_status.info) + self.assertEqual(task_status.status, TaskStatus.COMPLETED) - self.assertEqual(stored_dataset.dataset_name, DatasetName("my_new_dataset")) - self.assertEqual(stored_dataset.upload_id, UploadId(UUID("3086f494-d5a4-4b51-a14b-3b29f8bf7bb0"))) + stored_dataset = StoredDataset.from_response(task_status.info) + self.assertEqual(stored_dataset.dataset_name, DatasetName(dataset_name))