Recently functions were added to zaza.model for adding and removing models. These duplicated existing functions in zaza.controller. Given these functions act against the controller, zaza.controller feels like the correct location. In addition the implementations in zaza.controller correctly handle disconnects which the new ones did not. This PR removes the duplicates and points any existing references from zaza.model to zaza.controller. Finally, docstrings were added and documentation links.
93 lines
3.0 KiB
Python
93 lines
3.0 KiB
Python
import mock
|
|
|
|
import unit_tests.utils as ut_utils
|
|
|
|
import zaza.controller as controller
|
|
|
|
|
|
class TestController(ut_utils.BaseTestCase):
|
|
|
|
def setUp(self):
|
|
super(TestController, self).setUp()
|
|
|
|
async def _disconnect():
|
|
return
|
|
|
|
async def _connect():
|
|
return
|
|
|
|
async def _list_models():
|
|
return self.models
|
|
|
|
async def _add_model(model_name, config=None):
|
|
return self.model1
|
|
|
|
async def _destroy_model(model_name):
|
|
return
|
|
|
|
async def _get_cloud():
|
|
return self.cloud
|
|
|
|
# Cloud
|
|
self.cloud = "FakeCloud"
|
|
|
|
# Model
|
|
self.Model_mock = mock.MagicMock()
|
|
self.Model_mock.connect.side_effect = _connect
|
|
self.Model_mock.disconnect.side_effect = _disconnect
|
|
self.Model_mock.disconnect.side_effect = _disconnect
|
|
self.model1 = self.Model_mock
|
|
self.model2 = mock.MagicMock()
|
|
self.model1.info.name = "model1"
|
|
self.model2.info.name = "model2"
|
|
self.models = [self.model1.info.name, self.model2.info.name]
|
|
|
|
# Controller
|
|
self.Controller_mock = mock.MagicMock()
|
|
self.Controller_mock.connect.side_effect = _connect
|
|
self.Controller_mock.disconnect.side_effect = _disconnect
|
|
self.Controller_mock.add_model.side_effect = _add_model
|
|
self.Controller_mock.destroy_model.side_effect = _destroy_model
|
|
self.Controller_mock.list_models.side_effect = _list_models
|
|
self.Controller_mock.get_cloud.side_effect = _get_cloud
|
|
self.controller_name = "testcontroller"
|
|
self.Controller_mock.info.name = self.controller_name
|
|
self.patch_object(controller, 'Controller')
|
|
self.Controller.return_value = self.Controller_mock
|
|
|
|
def test_add_model(self):
|
|
self.assertEqual(controller.add_model(self.model1.info.name),
|
|
self.model1.info.name)
|
|
self.Controller_mock.add_model.assert_called_once_with(
|
|
self.model1.info.name,
|
|
config=None)
|
|
self.model1.connect.assert_called_once()
|
|
|
|
def test_add_model_config(self):
|
|
self.assertEqual(
|
|
controller.add_model(
|
|
self.model1.info.name,
|
|
{'run-faster': 'true'}),
|
|
self.model1.info.name)
|
|
self.Controller_mock.add_model.assert_called_once_with(
|
|
self.model1.info.name,
|
|
config={'run-faster': 'true'})
|
|
self.model1.connect.assert_called_once()
|
|
|
|
def test_destroy_model(self):
|
|
controller.destroy_model(self.model1.info.name)
|
|
self.Controller_mock.destroy_model.assert_called_once_with(
|
|
self.model1.info.name)
|
|
|
|
def test_get_cloud(self):
|
|
self.assertEqual(
|
|
controller.get_cloud(),
|
|
self.cloud)
|
|
self.Controller_mock.get_cloud.assert_called_once()
|
|
|
|
def test_list_models(self):
|
|
self.assertEqual(
|
|
controller.list_models(),
|
|
self.models)
|
|
self.Controller_mock.list_models.assert_called_once()
|