diff options
Diffstat (limited to 'web-server')
| -rw-r--r-- | web-server/.gitlab-ci.yml | 1 | ||||
| -rw-r--r-- | web-server/opendc/api/v2/simulations/endpoint.py | 3 | ||||
| -rw-r--r-- | web-server/opendc/api/v2/users/endpoint.py | 1 | ||||
| -rw-r--r-- | web-server/opendc/api/v2/users/userId/endpoint.py | 8 | ||||
| -rw-r--r-- | web-server/opendc/api/v2/users/userId/test_endpoint.py | 2 | ||||
| -rw-r--r-- | web-server/opendc/models/topology.py | 5 |
6 files changed, 17 insertions, 3 deletions
diff --git a/web-server/.gitlab-ci.yml b/web-server/.gitlab-ci.yml index c8c07a56..d80ba836 100644 --- a/web-server/.gitlab-ci.yml +++ b/web-server/.gitlab-ci.yml @@ -13,7 +13,6 @@ stages: static-analysis: stage: static-analysis - allow_failure: true script: - python --version - pip install -r requirements.txt diff --git a/web-server/opendc/api/v2/simulations/endpoint.py b/web-server/opendc/api/v2/simulations/endpoint.py index bcdea650..993e317a 100644 --- a/web-server/opendc/api/v2/simulations/endpoint.py +++ b/web-server/opendc/api/v2/simulations/endpoint.py @@ -22,6 +22,9 @@ def POST(request): simulation.set_property('experimentIds', []) simulation.insert() + topology.set_property('simulationId', simulation.get_id()) + topology.update() + user = User.from_google_id(request.google_id) user.obj['authorizations'].append({'simulationId': simulation.get_id(), 'authorizationLevel': 'OWN'}) user.update() diff --git a/web-server/opendc/api/v2/users/endpoint.py b/web-server/opendc/api/v2/users/endpoint.py index c597732f..0dcf2463 100644 --- a/web-server/opendc/api/v2/users/endpoint.py +++ b/web-server/opendc/api/v2/users/endpoint.py @@ -26,4 +26,5 @@ def POST(request): user.check_already_exists() user.insert() + return Response(200, 'Successfully created user.', user.obj) diff --git a/web-server/opendc/api/v2/users/userId/endpoint.py b/web-server/opendc/api/v2/users/userId/endpoint.py index eedb2e3c..7a4fb104 100644 --- a/web-server/opendc/api/v2/users/userId/endpoint.py +++ b/web-server/opendc/api/v2/users/userId/endpoint.py @@ -1,3 +1,4 @@ +from opendc.models.simulation import Simulation from opendc.models.user import User from opendc.util.rest import Response @@ -46,6 +47,13 @@ def DELETE(request): user.check_exists() user.check_correct_user(request.google_id) + for authorization in user.obj['authorizations']: + if authorization['authorizationLevel'] != 'OWN': + continue + + simulation = Simulation.from_id(authorization['simulationId']) + simulation.delete() + old_object = user.delete() return Response(200, 'Successfully deleted user.', old_object) diff --git a/web-server/opendc/api/v2/users/userId/test_endpoint.py b/web-server/opendc/api/v2/users/userId/test_endpoint.py index 0d590129..cdff2229 100644 --- a/web-server/opendc/api/v2/users/userId/test_endpoint.py +++ b/web-server/opendc/api/v2/users/userId/test_endpoint.py @@ -46,7 +46,7 @@ def test_delete_user_different_user(client, mocker): def test_delete_user(client, mocker): - mocker.patch.object(DB, 'fetch_one', return_value={'_id': '1', 'googleId': 'test'}) + mocker.patch.object(DB, 'fetch_one', return_value={'_id': '1', 'googleId': 'test', 'authorizations': []}) mocker.patch.object(DB, 'delete_one', return_value={'googleId': 'test'}) res = client.delete('/api/v2/users/1') assert 'googleId' in res.json['content'] diff --git a/web-server/opendc/models/topology.py b/web-server/opendc/models/topology.py index 1c717221..0ceecec5 100644 --- a/web-server/opendc/models/topology.py +++ b/web-server/opendc/models/topology.py @@ -18,7 +18,10 @@ class Topology(Model): :param edit_access: True when edit access should be checked, otherwise view access. """ user = User.from_google_id(google_id) + if 'simulationId' not in self.obj: + raise ClientError(Response(400, 'Missing simulationId in topology.')) + authorizations = list( filter(lambda x: str(x['simulationId']) == str(self.obj['simulationId']), user.obj['authorizations'])) if len(authorizations) == 0 or (edit_access and authorizations[0]['authorizationLevel'] == 'VIEW'): - raise ClientError(Response(403, "Forbidden from retrieving topology.")) + raise ClientError(Response(403, 'Forbidden from retrieving topology.')) |
