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=40446370b9830e02ef2673af98e450c3f5ad36d2;hb=19da2b852804c27c7d04484eea89feb212874254;hpb=85755d17a807df83d0e472e6e73500a4d743296b diff --git a/n2vc/tests/unit/test_n2vc_juju_conn.py b/n2vc/tests/unit/test_n2vc_juju_conn.py index 4044637..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 @@ -26,6 +29,7 @@ from n2vc.exceptions import ( class N2VCJujuConnTestCase(asynctest.TestCase): + @asynctest.mock.patch("n2vc.libjuju.Libjuju._create_health_check_task") @asynctest.mock.patch("juju.controller.Controller.update_endpoints") @asynctest.mock.patch("juju.client.connector.Connector.connect") @asynctest.mock.patch("juju.controller.Controller.connection") @@ -36,7 +40,9 @@ class N2VCJujuConnTestCase(asynctest.TestCase): mock_connection=None, mock_connect=None, mock_update_endpoints=None, + mock__create_health_check_task=None, ): + mock__get_api_endpoints_db.return_value = ["2.2.2.2:17070"] loop = asyncio.get_event_loop() db = {} vca_config = { @@ -48,6 +54,7 @@ class N2VCJujuConnTestCase(asynctest.TestCase): logging.disable(logging.CRITICAL) + N2VCJujuConnector.get_public_key = Mock() self.n2vc = N2VCJujuConnector( db=db, fs=fslocal.FsLocal(), @@ -58,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") @@ -78,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 @@ -89,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( @@ -99,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", @@ -124,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): @@ -135,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( @@ -146,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( @@ -157,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): @@ -169,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()