Merge "Validate audit template UUID on audit create"
This commit is contained in:
@@ -57,6 +57,7 @@ import wsme
|
|||||||
from wsme import types as wtypes
|
from wsme import types as wtypes
|
||||||
import wsmeext.pecan as wsme_pecan
|
import wsmeext.pecan as wsme_pecan
|
||||||
|
|
||||||
|
from watcher._i18n import _
|
||||||
from watcher.api.controllers import base
|
from watcher.api.controllers import base
|
||||||
from watcher.api.controllers import link
|
from watcher.api.controllers import link
|
||||||
from watcher.api.controllers.v1 import collection
|
from watcher.api.controllers.v1 import collection
|
||||||
@@ -355,6 +356,11 @@ class AuditsController(rest.RestController):
|
|||||||
if self.from_audits:
|
if self.from_audits:
|
||||||
raise exception.OperationNotPermitted
|
raise exception.OperationNotPermitted
|
||||||
|
|
||||||
|
if not audit._audit_template_uuid:
|
||||||
|
raise exception.Invalid(
|
||||||
|
message=_('The audit template UUID or name specified is '
|
||||||
|
'invalid'))
|
||||||
|
|
||||||
audit_dict = audit.as_dict()
|
audit_dict = audit.as_dict()
|
||||||
context = pecan.request.context
|
context = pecan.request.context
|
||||||
new_audit = objects.Audit(context, **audit_dict)
|
new_audit = objects.Audit(context, **audit_dict)
|
||||||
|
|||||||
@@ -451,6 +451,24 @@ class TestPost(api_base.FunctionalTest):
|
|||||||
response.json['created_at']).replace(tzinfo=None)
|
response.json['created_at']).replace(tzinfo=None)
|
||||||
self.assertEqual(test_time, return_created_at)
|
self.assertEqual(test_time, return_created_at)
|
||||||
|
|
||||||
|
@mock.patch('oslo_utils.timeutils.utcnow')
|
||||||
|
def test_create_audit_invalid_audit_template_uuid(self, mock_utcnow):
|
||||||
|
test_time = datetime.datetime(2000, 1, 1, 0, 0)
|
||||||
|
mock_utcnow.return_value = test_time
|
||||||
|
|
||||||
|
audit_dict = post_get_test_audit()
|
||||||
|
# Make the audit template UUID some garbage value
|
||||||
|
audit_dict['audit_template_uuid'] = (
|
||||||
|
'01234567-8910-1112-1314-151617181920')
|
||||||
|
|
||||||
|
response = self.post_json('/audits', audit_dict, expect_errors=True)
|
||||||
|
self.assertEqual(400, response.status_int)
|
||||||
|
self.assertEqual("application/json", response.content_type)
|
||||||
|
expected_error_msg = ('The audit template UUID or name specified is '
|
||||||
|
'invalid')
|
||||||
|
self.assertTrue(response.json['error_message'])
|
||||||
|
self.assertTrue(expected_error_msg in response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(deapi.DecisionEngineAPI, 'trigger_audit')
|
@mock.patch.object(deapi.DecisionEngineAPI, 'trigger_audit')
|
||||||
def test_create_audit_doesnt_contain_id(self, mock_trigger_audit):
|
def test_create_audit_doesnt_contain_id(self, mock_trigger_audit):
|
||||||
mock_trigger_audit.return_value = mock.ANY
|
mock_trigger_audit.return_value = mock.ANY
|
||||||
|
|||||||
Reference in New Issue
Block a user