From 676ccde281841005e3f318bf267ea1dbcdf6fc87 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Tue, 30 Jun 2020 11:43:07 +0200 Subject: Add experiment POST --- .../simulationId/experiments/test_endpoint.py | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py (limited to 'web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py') diff --git a/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py b/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py new file mode 100644 index 00000000..6a459a3c --- /dev/null +++ b/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py @@ -0,0 +1,75 @@ +from opendc.util.database import DB + + +def test_add_experiment_missing_parameter(client): + assert '400' in client.post('/api/v2/simulations/1/experiments').status + + +def test_add_experiment_non_existing_simulation(client, mocker): + mocker.patch.object(DB, 'fetch_one', return_value=None) + assert '404' in client.post('/api/v2/simulations/1/experiments', + json={ + 'experiment': { + 'topologyId': '1', + 'traceId': '1', + 'schedulerName': 'default', + 'name': 'test', + } + }).status + + +def test_add_experiment_not_authorized(client, mocker): + mocker.patch.object(DB, + 'fetch_one', + return_value={ + '_id': '1', + 'simulationId': '1', + 'authorizations': [{ + 'simulationId': '1', + 'authorizationLevel': 'VIEW' + }] + }) + assert '403' in client.post('/api/v2/simulations/1/experiments', + json={ + 'experiment': { + 'topologyId': '1', + 'traceId': '1', + 'schedulerName': 'default', + 'name': 'test', + } + }).status + + +def test_add_experiment(client, mocker): + mocker.patch.object(DB, + 'fetch_one', + return_value={ + '_id': '1', + 'simulationId': '1', + 'authorizations': [{ + 'simulationId': '1', + 'authorizationLevel': 'EDIT' + }] + }) + mocker.patch.object(DB, + 'insert', + return_value={ + 'topologyId': '1', + 'traceId': '1', + 'schedulerName': 'default', + 'name': 'test', + 'state': 'QUEUED', + 'lastSimulatedTick': 0, + }) + res = client.post( + '/api/v2/simulations/1/experiments', + json={'experiment': { + 'topologyId': '1', + 'traceId': '1', + 'schedulerName': 'default', + 'name': 'test', + }}) + assert 'topologyId' in res.json['content'] + assert 'state' in res.json['content'] + assert 'lastSimulatedTick' in res.json['content'] + assert '200' in res.status -- cgit v1.2.3 From 1c58ae3b25120ac670b897665bac7d8f18156220 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Tue, 30 Jun 2020 14:01:17 +0200 Subject: Fix more violations and ensure experimentIds handling --- .../api/v2/simulations/simulationId/experiments/test_endpoint.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py') diff --git a/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py b/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py index 6a459a3c..1fe09b10 100644 --- a/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py +++ b/web-server/opendc/api/v2/simulations/simulationId/experiments/test_endpoint.py @@ -46,6 +46,7 @@ def test_add_experiment(client, mocker): return_value={ '_id': '1', 'simulationId': '1', + 'experimentIds': ['1'], 'authorizations': [{ 'simulationId': '1', 'authorizationLevel': 'EDIT' @@ -54,6 +55,7 @@ def test_add_experiment(client, mocker): mocker.patch.object(DB, 'insert', return_value={ + '_id': '1', 'topologyId': '1', 'traceId': '1', 'schedulerName': 'default', @@ -61,6 +63,7 @@ def test_add_experiment(client, mocker): 'state': 'QUEUED', 'lastSimulatedTick': 0, }) + mocker.patch.object(DB, 'update', return_value=None) res = client.post( '/api/v2/simulations/1/experiments', json={'experiment': { -- cgit v1.2.3