diff --git a/.gitignore b/.gitignore index fc70b4a3e20e67ecc76c16c1389981ca0c154399..d95d47655ab9bacaa5a937d05998f0783285d419 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ **__pycache__/ -**app/ \ No newline at end of file + +# contains data for local tests +app/ \ No newline at end of file diff --git a/apiserver/__init__.py b/apiserver/__init__.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d7a803fadc48a66e258ab37e1eb01d236f46b239 100644 --- a/apiserver/__init__.py +++ b/apiserver/__init__.py @@ -0,0 +1 @@ +from .main import app \ No newline at end of file diff --git a/apiserver/main.py b/apiserver/main.py index 7a984b90a32f25e6de2a0d12f99cd97d612dc56c..91fd2b513c9a8475664edf344e1b5f370ee580fa 100644 --- a/apiserver/main.py +++ b/apiserver/main.py @@ -6,11 +6,11 @@ from fastapi import HTTPException from pydantic import BaseModel -from LocationStorage import LocationDataType -from LocationStorage import LocationData -from LocationStorage import AbstractLocationDataStorageAdapter +from .storage import JsonFileStorageAdapter -from JsonFileStorageAdapter import JsonFileStorageAdapter +from .storage import AbstractLocationDataStorageAdapter +from .storage import LocationData +from .storage import LocationDataType from enum import Enum @@ -39,7 +39,8 @@ def list_datasets(location_data_type : LocationDataType): # register a new dataset, the response will contain the new dataset and its id @app.put("/{location_data_type}") def add_dataset(location_data_type : LocationDataType, dataset : LocationData): - return adapter.addNew(location_data_type, dataset) + usr: str = "testuser" + return adapter.addNew(location_data_type, dataset, usr) # returns all information about a specific dataset, identified by id @app.get("/{location_data_type}/{dataset_id}") @@ -53,6 +54,6 @@ def get_specific_dataset(location_data_type : LocationDataType, dataset_id: str) @app.put("/{location_data_type}/{dataset_id}") def update_specific_dataset(location_data_type : LocationDataType, dataset_id: str, dataset : LocationData): try: - return adapter.updateDetails(location_data_type, dataset_id, dataset) + return adapter.updateDetails(location_data_type, dataset_id, dataset, usr) except FileNotFoundError: raise HTTPException(status_code=404, detail='The provided id does not exist for this datatype.') diff --git a/apiserver/JsonFileStorageAdapter.py b/apiserver/storage/JsonFileStorageAdapter.py similarity index 96% rename from apiserver/JsonFileStorageAdapter.py rename to apiserver/storage/JsonFileStorageAdapter.py index e65e62d8aac3bfe97456322bd3be0b0c506be0f7..f6dde1fff4069b53efc84669d5d91b473cebfd42 100644 --- a/apiserver/JsonFileStorageAdapter.py +++ b/apiserver/storage/JsonFileStorageAdapter.py @@ -2,7 +2,7 @@ import os import json import uuid -from LocationStorage import AbstractLocationDataStorageAdapter, LocationData, LocationDataType +from .LocationStorage import AbstractLocationDataStorageAdapter, LocationData, LocationDataType from typing import List @@ -85,7 +85,7 @@ class JsonFileStorageAdapter(AbstractLocationDataStorageAdapter): json.dump(data.__dict__, file) return {id : data} - def getOwner(self, type: LocationDataType(), id: str): + def getOwner(self, type: LocationDataType, id: str): raise NotImplementedError() def checkPerm(self, type: LocationDataType, id: str, usr: str): diff --git a/apiserver/LocationStorage.py b/apiserver/storage/LocationStorage.py similarity index 100% rename from apiserver/LocationStorage.py rename to apiserver/storage/LocationStorage.py diff --git a/apiserver/storage/__init__.py b/apiserver/storage/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3d63565e7b7cc56a1939e1b1371edffbfdfd95e9 --- /dev/null +++ b/apiserver/storage/__init__.py @@ -0,0 +1,3 @@ +from .JsonFileStorageAdapter import JsonFileStorageAdapter + +from .LocationStorage import LocationDataType, LocationData, AbstractLocationDataStorageAdapter \ No newline at end of file diff --git a/apiserver_tests/__init__.py b/apiserver_tests/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/apiserver_tests/context.py b/apiserver_tests/context.py new file mode 100644 index 0000000000000000000000000000000000000000..2f8a3617f1bab5c1c03d74afd466644f33f1650c --- /dev/null +++ b/apiserver_tests/context.py @@ -0,0 +1,6 @@ +import os +import sys +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +import apiserver +import apiserver.storage as storage \ No newline at end of file diff --git a/apiserver_tests/test_responsiveness.py b/apiserver_tests/test_responsiveness.py index db58b1685dbd3826de184ce640495ae1fdbb0e9d..b70b0b900fc2587a988881031e6cfe39a03e71e5 100644 --- a/apiserver_tests/test_responsiveness.py +++ b/apiserver_tests/test_responsiveness.py @@ -3,17 +3,19 @@ from fastapi.testclient import TestClient -from apiserver.LocationStorage import LocationDataType -from apiserver import main +from context import apiserver +from context import storage -client = TestClient(main.app) +client = TestClient(apiserver.app) +# get root def test_root(): rsp = client.get('/') assert rsp.status_code >= 200 and rsp.status_code < 300 # any 200 response is fine, as a get to the root should not return any error +# get every type in type enum def test_types(): - for location_type in LocationDataType: + for location_type in storage.LocationDataType: rsp = client.get('/' + location_type.value) assert rsp.status_code >= 200 and rsp.status_code < 300 # any 200 response is fine, as a get to the datatypes should not return any error \ No newline at end of file diff --git a/app/data/.testingdir b/app/data/.testingdir new file mode 100644 index 0000000000000000000000000000000000000000..33b203066e6115f74a910cb25a8ba96079424033 --- /dev/null +++ b/app/data/.testingdir @@ -0,0 +1 @@ +# This file only exists as a placeholder, so that local testing works immediatly after cloning. \ No newline at end of file