From 061bd008b091fe58d7e87e011eaa77a06276ce3b Mon Sep 17 00:00:00 2001 From: Christian Boettcher <c.boettcher@fz-juelich.de> Date: Mon, 10 May 2021 11:13:40 +0200 Subject: [PATCH] some additional moving around files and restructuring pytest now works, apiserver now a module --- .gitignore | 4 +++- apiserver/__init__.py | 1 + apiserver/main.py | 13 +++++++------ apiserver/{ => storage}/JsonFileStorageAdapter.py | 4 ++-- apiserver/{ => storage}/LocationStorage.py | 0 apiserver/storage/__init__.py | 3 +++ apiserver_tests/__init__.py | 0 apiserver_tests/context.py | 6 ++++++ apiserver_tests/test_responsiveness.py | 10 ++++++---- app/data/.testingdir | 1 + 10 files changed, 29 insertions(+), 13 deletions(-) rename apiserver/{ => storage}/JsonFileStorageAdapter.py (96%) rename apiserver/{ => storage}/LocationStorage.py (100%) create mode 100644 apiserver/storage/__init__.py delete mode 100644 apiserver_tests/__init__.py create mode 100644 apiserver_tests/context.py create mode 100644 app/data/.testingdir diff --git a/.gitignore b/.gitignore index fc70b4a..d95d476 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 e69de29..d7a803f 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 7a984b9..91fd2b5 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 e65e62d..f6dde1f 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 0000000..3d63565 --- /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 e69de29..0000000 diff --git a/apiserver_tests/context.py b/apiserver_tests/context.py new file mode 100644 index 0000000..2f8a361 --- /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 db58b16..b70b0b9 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 0000000..33b2030 --- /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 -- GitLab