X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Ftests%2Funit%2Ftest_k8s_juju_conn.py;fp=n2vc%2Ftests%2Funit%2Ftest_k8s_juju_conn.py;h=e0faaf0405c231d7e563fb74d5efa5a0b8b43f0e;hp=1423c61a82b4ea6eddab7f0ed59b8ab2b42e52e7;hb=582b923b8f3f7104411c39ebdba63949d606ecd1;hpb=7114f65ca3ba581281fa03639f21db61a111b53e diff --git a/n2vc/tests/unit/test_k8s_juju_conn.py b/n2vc/tests/unit/test_k8s_juju_conn.py index 1423c61..e0faaf0 100644 --- a/n2vc/tests/unit/test_k8s_juju_conn.py +++ b/n2vc/tests/unit/test_k8s_juju_conn.py @@ -17,6 +17,7 @@ import asyncio import logging import asynctest from unittest.mock import Mock +from n2vc.definitions import Offer, RelationEndpoint from n2vc.k8s_juju_conn import K8sJujuConnector, RBAC_LABEL_KEY_NAME from osm_common import fslocal from .utils import kubeconfig, FakeModel, FakeFileWrapper, AsyncMock, FakeApplication @@ -721,3 +722,50 @@ class GetScaleCount(K8sJujuConnTestCase): ) self.assertIsNone(status) self.k8s_juju_conn.libjuju.get_model_status.assert_called_once() + + +class AddRelationTest(K8sJujuConnTestCase): + def setUp(self): + super(AddRelationTest, self).setUp() + self.k8s_juju_conn.libjuju.add_relation = AsyncMock() + self.k8s_juju_conn.libjuju.offer = AsyncMock() + self.k8s_juju_conn.libjuju.get_controller = AsyncMock() + self.k8s_juju_conn.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.k8s_juju_conn.add_relation(relation_endpoint_1, relation_endpoint_2) + ) + self.k8s_juju_conn.libjuju.add_relation.assert_called_once_with( + model_name="model-1", endpoint_1="app1:endpoint", endpoint_2="app2:endpoint" + ) + self.k8s_juju_conn.libjuju.offer.assert_not_called() + self.k8s_juju_conn.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.k8s_juju_conn.libjuju.offer.return_value = offer + self.k8s_juju_conn.libjuju.consume.return_value = "saas" + self.loop.run_until_complete( + self.k8s_juju_conn.add_relation(relation_endpoint_1, relation_endpoint_2) + ) + self.k8s_juju_conn.libjuju.offer.assert_called_once_with(relation_endpoint_1) + self.k8s_juju_conn.libjuju.consume.assert_called_once() + self.k8s_juju_conn.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.k8s_juju_conn.libjuju.offer.side_effect = Exception() + with self.assertRaises(Exception): + self.loop.run_until_complete( + self.k8s_juju_conn.add_relation( + relation_endpoint_1, relation_endpoint_2 + ) + )