X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=n2vc%2Ftests%2Funit%2Ftest_n2vc_juju_conn.py;h=3caae030e416e0842b3459d3d3997c3276cf8d3e;hb=refs%2Fchanges%2F67%2F12167%2F2;hp=d89de3fb77d538ed144ef6b2482045d5631ce794;hpb=eb8943a887e2fb8cce0240382811f9e504f3c7fb;p=osm%2FN2VC.git diff --git a/n2vc/tests/unit/test_n2vc_juju_conn.py b/n2vc/tests/unit/test_n2vc_juju_conn.py index d89de3f..3caae03 100644 --- a/n2vc/tests/unit/test_n2vc_juju_conn.py +++ b/n2vc/tests/unit/test_n2vc_juju_conn.py @@ -16,9 +16,11 @@ import asyncio import logging from unittest.mock import Mock +from unittest.mock import patch import asynctest +from n2vc.definitions import Offer, RelationEndpoint from n2vc.n2vc_juju_conn import N2VCJujuConnector from osm_common import fslocal from n2vc.exceptions import ( @@ -143,8 +145,13 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.n2vc.libjuju.deploy_charm = AsyncMock() self.n2vc.libjuju.model_exists.return_value = False + @patch( + "n2vc.n2vc_juju_conn.generate_random_alfanum_string", + **{"return_value": "random"} + ) def test_success( self, + mock_generate_random_alfanum_string, mock_path, mock_file_exists, ): @@ -162,7 +169,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.n2vc.libjuju.add_model.assert_called_once() self.n2vc.libjuju.deploy_charm.assert_called_once_with( model_name="ns-id-k8s", - application_name="app-vnf-vnf-id-vdu-vdu", + application_name="app-vnf-vnf-id-vdu-vdu-random", path="/path/path/", machine_id=None, db_dict={}, @@ -170,7 +177,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): total_timeout=None, config=None, ) - self.assertEqual(ee_id, "ns-id-k8s.app-vnf-vnf-id-vdu-vdu.k8s") + self.assertEqual(ee_id, "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s") def test_no_artifact_path( self, @@ -239,3 +246,48 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): ) ) self.assertIsNone(ee_id) + + +class AddRelationTest(N2VCJujuConnTestCase): + def setUp(self): + super(AddRelationTest, self).setUp() + self.n2vc.libjuju.add_relation = AsyncMock() + self.n2vc.libjuju.offer = AsyncMock() + self.n2vc.libjuju.get_controller = AsyncMock() + self.n2vc.libjuju.consume = AsyncMock() + + def test_standard_relation(self): + relation_endpoint_1 = RelationEndpoint("model-1.app1.0", None, "endpoint") + relation_endpoint_2 = RelationEndpoint("model-1.app2.1", None, "endpoint") + self.loop.run_until_complete( + self.n2vc.add_relation(relation_endpoint_1, relation_endpoint_2) + ) + self.n2vc.libjuju.add_relation.assert_called_once_with( + model_name="model-1", endpoint_1="app1:endpoint", endpoint_2="app2:endpoint" + ) + self.n2vc.libjuju.offer.assert_not_called() + self.n2vc.libjuju.consume.assert_not_called() + + def test_cmr_relation_same_controller(self): + relation_endpoint_1 = RelationEndpoint("model-1.app1.0", None, "endpoint") + relation_endpoint_2 = RelationEndpoint("model-2.app2.1", None, "endpoint") + offer = Offer("admin/model-1.app1") + self.n2vc.libjuju.offer.return_value = offer + self.n2vc.libjuju.consume.return_value = "saas" + self.loop.run_until_complete( + self.n2vc.add_relation(relation_endpoint_1, relation_endpoint_2) + ) + self.n2vc.libjuju.offer.assert_called_once_with(relation_endpoint_1) + self.n2vc.libjuju.consume.assert_called_once() + self.n2vc.libjuju.add_relation.assert_called_once_with( + "model-2", "app2:endpoint", "saas" + ) + + def test_relation_exception(self): + relation_endpoint_1 = RelationEndpoint("model-1.app1.0", None, "endpoint") + relation_endpoint_2 = RelationEndpoint("model-2.app2.1", None, "endpoint") + self.n2vc.libjuju.offer.side_effect = Exception() + with self.assertRaises(N2VCException): + self.loop.run_until_complete( + self.n2vc.add_relation(relation_endpoint_1, relation_endpoint_2) + )