Merge "Increase unit test coverage for Static Actions API."
This commit is contained in:
commit
a8800d9b14
@ -1,4 +1,5 @@
|
|||||||
# Copyright (c) 2016 Mirantis, Inc.
|
# Copyright (c) 2016 Mirantis, Inc.
|
||||||
|
# Copyright (c) 2016 AT&T Corp
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@ -15,7 +16,9 @@
|
|||||||
|
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
from oslo_messaging.rpc import client
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
|
from webob import exc
|
||||||
|
|
||||||
from murano.api.v1 import static_actions
|
from murano.api.v1 import static_actions
|
||||||
from murano.common import policy
|
from murano.common import policy
|
||||||
@ -63,3 +66,69 @@ class TestStaticActionsApi(tb.ControllerTest, tb.MuranoApiTestCase):
|
|||||||
pass
|
pass
|
||||||
self.mock_engine_rpc.call_static_action.assert_called_once_with(
|
self.mock_engine_rpc.call_static_action.assert_called_once_with(
|
||||||
rpc_task)
|
rpc_task)
|
||||||
|
|
||||||
|
def test_execute_static_action_handle_bad_data_exc(self, _):
|
||||||
|
request_data = {
|
||||||
|
"className": None,
|
||||||
|
"methodName": 'TestAction'
|
||||||
|
}
|
||||||
|
req = self._post('/actions', jsonutils.dump_as_bytes(request_data))
|
||||||
|
self.assertRaises(exc.HTTPBadRequest, self.controller.execute, req,
|
||||||
|
request_data)
|
||||||
|
|
||||||
|
request_data = {
|
||||||
|
"className": 'TestClass',
|
||||||
|
"methodName": None
|
||||||
|
}
|
||||||
|
req = self._post('/actions', jsonutils.dump_as_bytes(request_data))
|
||||||
|
self.assertRaises(exc.HTTPBadRequest, self.controller.execute, req,
|
||||||
|
request_data)
|
||||||
|
|
||||||
|
@mock.patch('murano.services.static_actions.StaticActionServices.execute')
|
||||||
|
def test_execute_static_action_handle_execute_excs(self, mock_execute, _):
|
||||||
|
"""Test whether execute handles all exceptions thrown correctly."""
|
||||||
|
request_data = {
|
||||||
|
"className": 'TestClass',
|
||||||
|
"methodName": 'TestAction',
|
||||||
|
"packageName": 'TestPackage',
|
||||||
|
"classVersion": '=0',
|
||||||
|
"parameters": {'name': 'John'}
|
||||||
|
}
|
||||||
|
|
||||||
|
exc_types = ['NoClassFound', 'NoMethodFound',
|
||||||
|
'NoPackageFound', 'NoPackageForClassFound',
|
||||||
|
'MethodNotExposed', 'NoMatchingMethodException']
|
||||||
|
for exc_type in exc_types:
|
||||||
|
mock_execute.side_effect = client.RemoteError(exc_type=exc_type)
|
||||||
|
req = self._post('/actions', jsonutils.dump_as_bytes(request_data))
|
||||||
|
self.assertRaises(exc.HTTPNotFound, self.controller.execute, req,
|
||||||
|
request_data)
|
||||||
|
self.assertEqual(mock_execute.call_count, len(exc_types))
|
||||||
|
|
||||||
|
exc_type = 'ContractViolationException'
|
||||||
|
mock_execute.side_effect = client.RemoteError(exc_type=exc_type)
|
||||||
|
req = self._post('/actions', jsonutils.dump_as_bytes(request_data))
|
||||||
|
self.assertRaises(exc.HTTPBadRequest, self.controller.execute, req,
|
||||||
|
request_data)
|
||||||
|
exc_types.append(exc_type)
|
||||||
|
self.assertEqual(mock_execute.call_count, len(exc_types))
|
||||||
|
|
||||||
|
exc_type = 'ThisIsARandomTestException'
|
||||||
|
mock_execute.side_effect = client.RemoteError(exc_type=exc_type)
|
||||||
|
req = self._post('/actions', jsonutils.dump_as_bytes(request_data))
|
||||||
|
self.assertRaises(exc.HTTPServiceUnavailable, self.controller.execute,
|
||||||
|
req, request_data)
|
||||||
|
exc_types.append(exc_type)
|
||||||
|
self.assertEqual(mock_execute.call_count, len(exc_types))
|
||||||
|
|
||||||
|
try:
|
||||||
|
int('this will throw a value error')
|
||||||
|
except ValueError as e:
|
||||||
|
setattr(e, 'message', None)
|
||||||
|
exc_type = e
|
||||||
|
mock_execute.side_effect = exc_type
|
||||||
|
req = self._post('/actions', jsonutils.dump_as_bytes(request_data))
|
||||||
|
self.assertRaises(exc.HTTPBadRequest, self.controller.execute,
|
||||||
|
req, request_data)
|
||||||
|
exc_types.append(exc_type)
|
||||||
|
self.assertEqual(mock_execute.call_count, len(exc_types))
|
||||||
|
Loading…
Reference in New Issue
Block a user