diff options
author | SerenaFeng <feng.xiaowei@zte.com.cn> | 2017-08-23 14:04:59 +0800 |
---|---|---|
committer | SerenaFeng <feng.xiaowei@zte.com.cn> | 2017-08-25 13:54:16 +0800 |
commit | 3fbd55c9b9550c0248827eb705d60ec2ce4cc658 (patch) | |
tree | ad23ede8955e4ac439ae34e57f8f5ecde871e8fa /testapi/opnfv_testapi/tests | |
parent | 2eb503cb2e3496131c21954506da58b056c8fb46 (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.py | 68 |
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) |