From 29fc94118417b5411f7f5a07597d516b2ccab244 Mon Sep 17 00:00:00 2001 From: liushuai Date: Mon, 25 Mar 2019 15:29:53 +0800 Subject: [PATCH] add validation for trigger update Change-Id: I4a191759013136c4a8577a446df495990d9dc8e4 Closes-Bug: #1747559 --- karbor/api/v1/triggers.py | 1 + karbor/tests/unit/api/v1/test_triggers.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/karbor/api/v1/triggers.py b/karbor/api/v1/triggers.py index 7fd7054c..2e541859 100644 --- a/karbor/api/v1/triggers.py +++ b/karbor/api/v1/triggers.py @@ -170,6 +170,7 @@ class TriggersController(wsgi.Controller): raise exc.HTTPBadRequest(explanation=msg) try: trigger.properties = trigger_property + self.operationengine_api.verify_trigger(context, trigger) self.operationengine_api.update_trigger(context, trigger) except exception.InvalidInput as ex: raise exc.HTTPBadRequest(explanation=ex.msg) diff --git a/karbor/tests/unit/api/v1/test_triggers.py b/karbor/tests/unit/api/v1/test_triggers.py index 59ae1c95..9ab0b5e6 100644 --- a/karbor/tests/unit/api/v1/test_triggers.py +++ b/karbor/tests/unit/api/v1/test_triggers.py @@ -10,6 +10,7 @@ # License for the specific language governing permissions and limitations # under the License. from datetime import datetime +import mock from webob import exc from karbor.api.v1 import triggers as trigger_api @@ -127,6 +128,22 @@ class TriggerApiTest(base.TestCase): self.assertEqual(10, int( trigger1['trigger_info']['properties']['window'])) + @mock.patch('karbor.services.operationengine.engine.triggers.timetrigger.' + 'time_trigger.utils.check_trigger_definition') + def test_update_trigger_invalid_windows(self, + mock_check_trigger_definition): + trigger = self._create_one_trigger() + + name = 'every minutes' + param = self.default_create_trigger_param.copy() + param['name'] = name + param['properties']['window'] = 'abc' + body = self._get_create_trigger_request_body(param) + mock_check_trigger_definition.return_value = exception.InvalidInput + self.assertRaises(exception.ValidationError, + self.controller.update, + self.req, trigger['trigger_info']['id'], body=body) + def test_show_trigger_not_exist(self): self.assertRaises(exc.HTTPNotFound, self.controller.show,