From f8cc76bb48d0339359d8953d9c073fa79bc391dd Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Wed, 23 Aug 2017 15:54:45 +0800 Subject: update scenario name url PUT /api/v1/scenarios/ if new_name already exist, return Forbidden if new_name == name, return Forbidden Change-Id: If3b82b3df4a763d60dad110caca2659c5f39ab50 Signed-off-by: SerenaFeng --- testapi/opnfv_testapi/resources/scenario_handlers.py | 15 ++++++++++++++- testapi/opnfv_testapi/resources/scenario_models.py | 6 ++++++ .../opnfv_testapi/tests/unit/resources/test_scenario.py | 17 +++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) (limited to 'testapi/opnfv_testapi') diff --git a/testapi/opnfv_testapi/resources/scenario_handlers.py b/testapi/opnfv_testapi/resources/scenario_handlers.py index 6cdf99e..e9c19a7 100644 --- a/testapi/opnfv_testapi/resources/scenario_handlers.py +++ b/testapi/opnfv_testapi/resources/scenario_handlers.py @@ -114,8 +114,21 @@ class ScenarioGURHandler(GenericScenarioHandler): self._get_one(query={'name': name}) pass + @swagger.operation(nickname="updateScenarioName") def put(self, name): - pass + """ + @description: update scenario, only rename is supported currently + @param body: fields to be updated + @type body: L{ScenarioUpdateRequest} + @in body: body + @rtype: L{Scenario} + @return 200: update success + @raise 404: scenario not exist + @raise 403: nothing to update + """ + query = {'name': name} + db_keys = ['name'] + self._update(query=query, db_keys=db_keys) @swagger.operation(nickname="deleteScenarioByName") def delete(self, name): diff --git a/testapi/opnfv_testapi/resources/scenario_models.py b/testapi/opnfv_testapi/resources/scenario_models.py index c6da76b..d950ed1 100644 --- a/testapi/opnfv_testapi/resources/scenario_models.py +++ b/testapi/opnfv_testapi/resources/scenario_models.py @@ -166,6 +166,12 @@ class ScenarioChangeOwnerRequest(models.ModelBase): self.owner = owner +@swagger.model() +class ScenarioUpdateRequest(models.ModelBase): + def __init__(self, name=None): + self.name = name + + @swagger.model() class Scenario(models.ModelBase): """ diff --git a/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py b/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py index 4f0fad4..1367fc6 100644 --- a/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py +++ b/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py @@ -179,6 +179,8 @@ class TestScenarioUpdate(TestScenarioBase): elif item in ['versions']: locator = 'installer={}'.format( self.installer) + elif item in ['rename']: + self.update_url = self.scenario_url if locator: self.update_url = '{}?{}'.format(self.update_url, locator) @@ -409,6 +411,21 @@ class TestScenarioUpdate(TestScenarioBase): installers) return deletes + @update_url_fixture('rename') + @update_partial('_update', '_success') + def test_renameScenario(self): + new_name = 'new_scenario_name' + update = models.ScenarioUpdateRequest(name=new_name) + self.req_d['name'] = new_name + return update + + @update_url_fixture('rename') + @update_partial('_update', '_forbidden') + def test_renameScenario_exist(self): + new_name = self.req_d['name'] + update = models.ScenarioUpdateRequest(name=new_name) + return update + def _add(self, update_req): return self.post_direct_url(self.update_url, update_req) -- cgit 1.2.3-korg