From eb82c4b678d60d74816d46df0f3b18b1760b7c6e Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Tue, 30 Jun 2020 19:33:19 +0200 Subject: Revamp web server instructions --- .../api/v2/topologies/topologyId/endpoint.py | 11 ++---- .../api/v2/topologies/topologyId/test_endpoint.py | 41 ++++++++++------------ web-server/opendc/models/simulation.py | 4 +-- 3 files changed, 24 insertions(+), 32 deletions(-) (limited to 'web-server/opendc') diff --git a/web-server/opendc/api/v2/topologies/topologyId/endpoint.py b/web-server/opendc/api/v2/topologies/topologyId/endpoint.py index 824bb12b..a4f71ed6 100644 --- a/web-server/opendc/api/v2/topologies/topologyId/endpoint.py +++ b/web-server/opendc/api/v2/topologies/topologyId/endpoint.py @@ -6,7 +6,6 @@ from opendc.models.topology import Topology from opendc.util.rest import Response - def GET(request): """Get this Topology.""" @@ -19,15 +18,10 @@ def GET(request): return Response(200, 'Successfully retrieved topology.', topology.obj) + def PUT(request): """Update this topology""" - request.check_required_parameters(path={'topologyId': 'int'}, - body={ - 'topology': { - 'name': 'string', - 'rooms': {} - } - }) + request.check_required_parameters(path={'topologyId': 'int'}, body={'topology': {'name': 'string', 'rooms': {}}}) topology = Topology.from_id(request.params_path['topologyId']) topology.check_exists() @@ -41,6 +35,7 @@ def PUT(request): return Response(200, 'Successfully updated topology.', topology.obj) + def DELETE(request): """Delete this topology""" request.check_required_parameters(path={'topologyId': 'int'}) diff --git a/web-server/opendc/api/v2/topologies/topologyId/test_endpoint.py b/web-server/opendc/api/v2/topologies/topologyId/test_endpoint.py index ac0d02aa..fa88c497 100644 --- a/web-server/opendc/api/v2/topologies/topologyId/test_endpoint.py +++ b/web-server/opendc/api/v2/topologies/topologyId/test_endpoint.py @@ -49,18 +49,15 @@ def test_get_topology_no_authorizations(client, mocker): PUT /topologies/{topologyId} ''' + def test_update_topology_missing_parameter(client): assert '400' in client.put('/api/v2/topologies/1').status + def test_update_topology_non_existent(client, mocker): mocker.patch.object(DB, 'fetch_one', return_value=None) - assert '404' in client.put('/api/v2/topologies/1', - json={ - 'topology': { - 'name': 'test_topology', - 'rooms': {} - } - }).status + assert '404' in client.put('/api/v2/topologies/1', json={'topology': {'name': 'test_topology', 'rooms': {}}}).status + def test_update_topology_not_authorized(client, mocker): mocker.patch.object(DB, @@ -74,13 +71,13 @@ def test_update_topology_not_authorized(client, mocker): }] }) mocker.patch.object(DB, 'update', return_value={}) - assert '403' in client.put('/api/v2/topologies/1', - json={ - 'topology': { - 'name': 'updated_topology', - 'rooms': {} - } - }).status + assert '403' in client.put('/api/v2/topologies/1', json={ + 'topology': { + 'name': 'updated_topology', + 'rooms': {} + } + }).status + def test_update_topology(client, mocker): mocker.patch.object(DB, @@ -95,19 +92,19 @@ def test_update_topology(client, mocker): }) mocker.patch.object(DB, 'update', return_value={}) - assert '200' in client.put('/api/v2/topologies/1', - json={ - 'topology': { - 'name': 'updated_topology', - 'rooms': {} - } - }).status + assert '200' in client.put('/api/v2/topologies/1', json={ + 'topology': { + 'name': 'updated_topology', + 'rooms': {} + } + }).status ''' DELETE /topologies/{topologyId} ''' + def test_delete_topology(client, mocker): mocker.patch.object(DB, 'fetch_one', @@ -126,7 +123,7 @@ def test_delete_topology(client, mocker): res = client.delete('/api/v2/topologies/1') assert '200' in res.status + def test_delete_nonexistent_topology(client, mocker): mocker.patch.object(DB, 'fetch_one', return_value=None) assert '404' in client.delete('/api/v2/topologies/1').status - diff --git a/web-server/opendc/models/simulation.py b/web-server/opendc/models/simulation.py index dbe1e800..86aa4726 100644 --- a/web-server/opendc/models/simulation.py +++ b/web-server/opendc/models/simulation.py @@ -17,8 +17,8 @@ class Simulation(Model): :param edit_access: True when edit access should be checked, otherwise view access. """ user = User.from_google_id(google_id) - authorizations = list( - filter(lambda x: str(x['simulationId']) == str(self.get_id()), user.obj['authorizations'])) + authorizations = list(filter(lambda x: str(x['simulationId']) == str(self.get_id()), + user.obj['authorizations'])) if len(authorizations) == 0 or (edit_access and authorizations[0]['authorizationLevel'] == 'VIEW'): raise ClientError(Response(403, "Forbidden from retrieving simulation.")) -- cgit v1.2.3