summaryrefslogtreecommitdiffstats
path: root/testapi/opnfv_testapi/tests
diff options
context:
space:
mode:
authorSerenaFeng <feng.xiaowei@zte.com.cn>2017-08-23 14:04:59 +0800
committerSerenaFeng <feng.xiaowei@zte.com.cn>2017-08-25 13:54:16 +0800
commit3fbd55c9b9550c0248827eb705d60ec2ce4cc658 (patch)
treead23ede8955e4ac439ae34e57f8f5ecde871e8fa /testapi/opnfv_testapi/tests
parent2eb503cb2e3496131c21954506da58b056c8fb46 (diff)
update versions under scenario
1. post, add one or more new versions 2. update, replace existed version as a totality 3. delete, delete one or more versions by name 4. in post&update, if schema is not consistent with ScenarioVersion model, BadRequest will be raised(only extra keys will be detected currently) 5. in post, if project already exist, return Conflict with already exist message 6. in update, if a version appears more than once, also return Conflict with already exist message 7. add update with conflict unittest for projects Change-Id: I0d2c8a5567f3abce7b0313a64e18303af02cc002 Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
Diffstat (limited to 'testapi/opnfv_testapi/tests')
-rw-r--r--testapi/opnfv_testapi/tests/unit/resources/test_scenario.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py b/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py
index 50a8c8d..360b4fa 100644
--- a/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py
+++ b/testapi/opnfv_testapi/tests/unit/resources/test_scenario.py
@@ -175,6 +175,10 @@ class TestScenarioUpdate(TestScenarioBase):
locator = 'installer={}&version={}'.format(
self.installer,
self.version)
+ elif item in ['versions']:
+ locator = 'installer={}'.format(
+ self.installer)
+
self.update_url = '{}/{}?{}'.format(self.scenario_url,
item,
locator)
@@ -276,6 +280,15 @@ class TestScenarioUpdate(TestScenarioBase):
return [update], scenario
@update_url_fixture('projects')
+ @update_partial('_update', '_conflict')
+ def test_updateProjects_duplicated(self, scenario):
+ update1 = models.ScenarioProject(project='qtip').format()
+ update2 = models.ScenarioProject(project='qtip').format()
+ scenario['installers'][0]['versions'][0]['projects'] = [update1,
+ update2]
+ return [update1, update2], scenario
+
+ @update_url_fixture('projects')
@update_partial('_update', '_bad_request')
def test_updateProjects_bad_schema(self, scenario):
update = models.ScenarioProject(project='functest').format()
@@ -301,6 +314,61 @@ class TestScenarioUpdate(TestScenarioBase):
scenario['installers'][0]['versions'][0]['owner'] = new_owner
return update, scenario
+ @update_url_fixture('versions')
+ @update_partial('_add', '_success')
+ def test_addVersions_succ(self, scenario):
+ add = models.ScenarioVersion(version='Euphrates').format()
+ scenario['installers'][0]['versions'].append(add)
+ return [add], scenario
+
+ @update_url_fixture('versions')
+ @update_partial('_add', '_conflict')
+ def test_addVersions_already_exist(self, scenario):
+ add = models.ScenarioVersion(version='master').format()
+ scenario['installers'][0]['versions'].append(add)
+ return [add], scenario
+
+ @update_url_fixture('versions')
+ @update_partial('_add', '_bad_request')
+ def test_addVersions_bad_schema(self, scenario):
+ add = models.ScenarioVersion(version='euphrates').format()
+ add['notexist'] = None
+ scenario['installers'][0]['versions'].append(add)
+ return [add], scenario
+
+ @update_url_fixture('versions')
+ @update_partial('_update', '_success')
+ def test_updateVersions_succ(self, scenario):
+ update = models.ScenarioVersion(version='euphrates').format()
+ scenario['installers'][0]['versions'] = [update]
+ return [update], scenario
+
+ @update_url_fixture('versions')
+ @update_partial('_update', '_conflict')
+ def test_updateVersions_duplicated(self, scenario):
+ update1 = models.ScenarioVersion(version='euphrates').format()
+ update2 = models.ScenarioVersion(version='euphrates').format()
+ scenario['installers'][0]['versions'] = [update1, update2]
+ return [update1, update2], scenario
+
+ @update_url_fixture('versions')
+ @update_partial('_update', '_bad_request')
+ def test_updateVersions_bad_schema(self, scenario):
+ update = models.ScenarioVersion(version='euphrates').format()
+ update['not_owner'] = 'Iam'
+ scenario['installers'][0]['versions'] = [update]
+ return [update], scenario
+
+ @update_url_fixture('versions')
+ @update_partial('_delete', '_success')
+ def test_deleteVersions(self, scenario):
+ deletes = ['master']
+ versions = scenario['installers'][0]['versions']
+ scenario['installers'][0]['versions'] = filter(
+ lambda f: f['version'] != 'master',
+ versions)
+ return deletes, scenario
+
def _add(self, update_req, new_scenario):
return self.post_direct_url(self.update_url, update_req)