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=4fef1f26a50a2ed907e7dc80099462aefcf3985b;hp=3caae030e416e0842b3459d3d3997c3276cf8d3e;hb=8070c3c8260010f052ee9fe546c85bed4aa6b2eb;hpb=7faf4eca072c56c5d179207013a436593a14aa9b diff --git a/n2vc/tests/unit/test_n2vc_juju_conn.py b/n2vc/tests/unit/test_n2vc_juju_conn.py index 3caae03..4fef1f2 100644 --- a/n2vc/tests/unit/test_n2vc_juju_conn.py +++ b/n2vc/tests/unit/test_n2vc_juju_conn.py @@ -26,6 +26,7 @@ from osm_common import fslocal from n2vc.exceptions import ( N2VCBadArgumentsException, N2VCException, + JujuApplicationNotFound, ) from n2vc.tests.unit.utils import AsyncMock from n2vc.vca.connection_data import ConnectionData @@ -291,3 +292,88 @@ class AddRelationTest(N2VCJujuConnTestCase): self.loop.run_until_complete( self.n2vc.add_relation(relation_endpoint_1, relation_endpoint_2) ) + + +class UpgradeCharmTest(N2VCJujuConnTestCase): + def setUp(self): + super(UpgradeCharmTest, self).setUp() + self.n2vc._get_libjuju = AsyncMock(return_value=self.n2vc.libjuju) + N2VCJujuConnector._get_ee_id_components = Mock() + self.n2vc.libjuju.upgrade_charm = AsyncMock() + + def test_empty_ee_id(self): + with self.assertRaises(N2VCBadArgumentsException): + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "", "/sample_charm_path", "sample_charm_id", "native-charm", None + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_not_called() + self.n2vc.libjuju.upgrade_charm.assert_not_called() + + def test_wrong_ee_id(self): + N2VCJujuConnector._get_ee_id_components.side_effect = Exception + with self.assertRaises(N2VCBadArgumentsException): + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s", + "/sample_charm_path", + "sample_charm_id", + "native-charm", + 500, + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_called() + self.n2vc.libjuju.upgrade_charm.assert_not_called() + + def test_charm_upgrade_succeded(self): + N2VCJujuConnector._get_ee_id_components.return_value = ( + "sample_model", + "sample_app", + "sample_machine_id", + ) + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s", + "/sample_charm_path", + "sample_charm_id", + "native-charm", + 500, + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_called() + self.n2vc.libjuju.upgrade_charm.assert_called_with( + application_name="sample_app", + path="/sample_charm_path", + model_name="sample_model", + total_timeout=500, + ) + + def test_charm_upgrade_failed(self): + N2VCJujuConnector._get_ee_id_components.return_value = ( + "sample_model", + "sample_app", + "sample_machine_id", + ) + self.n2vc.libjuju.upgrade_charm.side_effect = JujuApplicationNotFound + with self.assertRaises(N2VCException): + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s", + "/sample_charm_path", + "sample_charm_id", + "native-charm", + None, + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_called() + self.n2vc.libjuju.upgrade_charm.assert_called_with( + application_name="sample_app", + path="/sample_charm_path", + model_name="sample_model", + total_timeout=None, + )