From 235c44e7a5390f7fd4e1c630e98b8294c8a54349 Mon Sep 17 00:00:00 2001 From: Valerii Kovalchuk Date: Thu, 29 Sep 2016 14:52:27 +0300 Subject: [PATCH] Add environment edit API '/environments//model/' endpoint added. GET request responds with the subsection of 's object model located in its . PATCH request applies json-patch from request body to 's model. It does not contain in the URL. Change-Id: I672d43464ed7d5722cc574f1a10700b070664f34 Implements: bp environment-edit --- .../application_catalog_client.py | 22 +++++++++++ .../application_catalog/test_environments.py | 39 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/murano_tempest_tests/services/application_catalog/application_catalog_client.py b/murano_tempest_tests/services/application_catalog/application_catalog_client.py index bb83d8e..9a0d7ca 100644 --- a/murano_tempest_tests/services/application_catalog/application_catalog_client.py +++ b/murano_tempest_tests/services/application_catalog/application_catalog_client.py @@ -155,6 +155,28 @@ class ApplicationCatalogClient(rest_client.RestClient): self.expected_success(200, resp.status) return self._parse_resp(body) + def get_environment_model(self, environment_id, path='/', session_id=None): + headers = self.get_headers() + if session_id: + headers.update( + {'X-Configuration-Session': session_id} + ) + uri = '/v1/environments/{id}/model/{path}'.format( + id=environment_id, path=path) + resp, body = self.get(uri, headers=headers) + self.expected_success(200, resp.status) + return json.loads(body) + + def update_environment_model(self, environment_id, data, session_id): + headers = self.get_headers(send_type='env-model-json-patch') + headers.update( + {'X-Configuration-Session': session_id} + ) + uri = '/v1/environments/{id}/model/'.format(id=environment_id) + resp, body = self.patch(uri, json.dumps(data), headers=headers) + self.expected_success(200, resp.status) + return json.loads(body) + # -----------------------Methods for session manage --------------------------- def create_session(self, environment_id): body = None diff --git a/murano_tempest_tests/tests/api/application_catalog/test_environments.py b/murano_tempest_tests/tests/api/application_catalog/test_environments.py index e0472bc..ed649b0 100644 --- a/murano_tempest_tests/tests/api/application_catalog/test_environments.py +++ b/murano_tempest_tests/tests/api/application_catalog/test_environments.py @@ -84,3 +84,42 @@ class TestEnvironments(base.BaseApplicationCatalogTest): environment = self.application_catalog_client.\ update_environment(self.environment['id']) self.assertIsNot(self.environment['name'], environment['name']) + + @testtools.testcase.attr('smoke') + def test_get_environment_model(self): + model = self.application_catalog_client.\ + get_environment_model(self.environment['id']) + self.assertIsInstance(model, dict) + self.assertIn('defaultNetworks', model) + self.assertEqual(self.environment['name'], model['name']) + self.assertEqual(model['?']['type'], "io.murano.Environment") + + net_name = self.application_catalog_client.\ + get_environment_model(self.environment['id'], + path='/defaultNetworks/environment/name') + self.assertEqual("{0}-network".format(self.environment['name']), + net_name) + + @testtools.testcase.attr('smoke') + def test_update_environment_model(self): + session = self.application_catalog_client. \ + create_session(self.environment['id']) + patch = [{ + "op": "replace", + "path": "/defaultNetworks/flat", + "value": True + }] + new_model = self.application_catalog_client. \ + update_environment_model(self.environment['id'], patch, + session['id']) + self.assertTrue(new_model['defaultNetworks']['flat']) + + value_draft = self.application_catalog_client. \ + get_environment_model(self.environment['id'], + '/defaultNetworks/flat', + session['id']) + self.assertTrue(value_draft) + + model_current = self.application_catalog_client. \ + get_environment_model(self.environment['id']) + self.assertIsNone(model_current['defaultNetworks']['flat'])