X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Ftests%2Funit%2Ftest_n2vc_juju_conn.py;h=e5e26be1d291ce3bda04cace2a51313ad84da615;hp=663f2ba958c05180ef8efc9c7a84e193ea6f2755;hb=19da2b852804c27c7d04484eea89feb212874254;hpb=a4f57d6260e6520aa6a89e86f9d1b2ca5e0a3a08 diff --git a/n2vc/tests/unit/test_n2vc_juju_conn.py b/n2vc/tests/unit/test_n2vc_juju_conn.py index 663f2ba..e5e26be 100644 --- a/n2vc/tests/unit/test_n2vc_juju_conn.py +++ b/n2vc/tests/unit/test_n2vc_juju_conn.py @@ -15,6 +15,9 @@ import asyncio import logging +from unittest.mock import Mock + + import asynctest from n2vc.n2vc_juju_conn import N2VCJujuConnector from osm_common import fslocal @@ -51,6 +54,7 @@ class N2VCJujuConnTestCase(asynctest.TestCase): logging.disable(logging.CRITICAL) + N2VCJujuConnector.get_public_key = Mock() self.n2vc = N2VCJujuConnector( db=db, fs=fslocal.FsLocal(), @@ -61,6 +65,7 @@ class N2VCJujuConnTestCase(asynctest.TestCase): vca_config=vca_config, on_update_db=None, ) + N2VCJujuConnector.get_public_key.assert_not_called() @asynctest.mock.patch("n2vc.libjuju.Libjuju.get_metrics") @@ -81,6 +86,51 @@ class GetMetricssTest(N2VCJujuConnTestCase): mock_get_metrics.assert_called_once() +@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_controller") +@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_model") +@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_executed_actions") +@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_actions") +@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_application_configs") +@asynctest.mock.patch("n2vc.libjuju.Libjuju._get_application") +class UpdateVcaStatusTest(N2VCJujuConnTestCase): + def setUp(self): + super(UpdateVcaStatusTest, self).setUp() + + def test_success( + self, + mock_get_application, + mock_get_application_configs, + mock_get_actions, + mock_get_executed_actions, + mock_get_model, + mock_get_controller, + ): + self.loop.run_until_complete(self.n2vc.update_vca_status( + {"model": {"applications": {"app": {"actions": {}}}}})) + mock_get_executed_actions.assert_called_once() + mock_get_actions.assert_called_once() + mock_get_application_configs.assert_called_once() + + def test_exception( + self, + mock_get_application, + mock_get_application_configs, + mock_get_actions, + mock_get_executed_actions, + mock_get_model, + mock_get_controller, + ): + mock_get_model.return_value = None + mock_get_executed_actions.side_effect = Exception() + with self.assertRaises(Exception): + self.loop.run_until_complete(self.n2vc.update_vca_status( + {"model": {"applications": {"app": {"actions": {}}}}})) + mock_get_executed_actions.assert_not_called() + mock_get_actions.assert_not_called_once() + mock_get_application_configs.assert_not_called_once() + + +@asynctest.mock.patch("n2vc.libjuju.Libjuju.model_exists") @asynctest.mock.patch("osm_common.fslocal.FsLocal.file_exists") @asynctest.mock.patch( "osm_common.fslocal.FsLocal.path", new_callable=asynctest.PropertyMock, create=True @@ -92,8 +142,9 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): super(K8sProxyCharmsTest, self).setUp() def test_success( - self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, + self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists ): + mock_model_exists.return_value = None mock_file_exists.return_value = True mock_path.return_value = "/path" ee_id = self.loop.run_until_complete( @@ -102,7 +153,11 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): ) ) - mock_add_model.assert_called_once_with("ns-id-k8s", "k8s_cloud") + mock_add_model.assert_called_once_with( + "ns-id-k8s", + cloud_name=self.n2vc.k8s_cloud, + credential_name=self.n2vc.k8s_cloud + ) mock_deploy_charm.assert_called_once_with( model_name="ns-id-k8s", application_name="app-vnf-vnf-id-vdu-vdu", @@ -127,6 +182,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): mock_deploy_charm, mock_path, mock_file_exists, + mock_model_exists, ): mock_k8s_cloud.return_value = None with self.assertRaises(JujuK8sProxycharmNotSupported): @@ -138,7 +194,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.assertIsNone(ee_id) def test_no_artifact_path( - self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, + self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists, ): with self.assertRaises(N2VCBadArgumentsException): ee_id = self.loop.run_until_complete( @@ -149,7 +205,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.assertIsNone(ee_id) def test_no_db( - self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, + self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists, ): with self.assertRaises(N2VCBadArgumentsException): ee_id = self.loop.run_until_complete( @@ -160,7 +216,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.assertIsNone(ee_id) def test_file_not_exists( - self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, + self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists, ): mock_file_exists.return_value = False with self.assertRaises(N2VCBadArgumentsException): @@ -172,8 +228,9 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.assertIsNone(ee_id) def test_exception( - self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, + self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists, ): + mock_model_exists.return_value = None mock_file_exists.return_value = True mock_path.return_value = "/path" mock_deploy_charm.side_effect = Exception()