mock_add_relation.side_effect = JujuAPIError(result)
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_warning.assert_called_with("Relation not found: not found")
mock_add_relation.side_effect = JujuAPIError(result)
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_warning.assert_called_with("Relation already exists: already exists")
with self.assertRaises(JujuAPIError):
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_disconnect_controller.assert_called_once()
mock_get_model.return_value = juju.model.Model()
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_add_relation.assert_called_with(
- relation1="app1:relation1", relation2="app2:relation2"
+ "app1:relation1", "app2:relation2"
+ )
+ mock_disconnect_controller.assert_called_once()
+ mock_disconnect_model.assert_called_once()
+
+ def test_saas(
+ self,
+ mock_add_relation,
+ mock_disconnect_controller,
+ mock_disconnect_model,
+ mock_get_model,
+ mock_get_controller,
+ ):
+ mock_get_model.return_value = juju.model.Model()
+
+ self.loop.run_until_complete(
+ self.libjuju.add_relation("model", "app1:relation1", "saas_name",)
+ )
+
+ mock_add_relation.assert_called_with(
+ "app1:relation1", "saas_name"
)
mock_disconnect_controller.assert_called_once()
mock_disconnect_model.assert_called_once()
mock_disconnect_controller.assert_called_once()
self.assertEquals(models, ["existingmodel", "model"])
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.list_models")
+class ModelsExistTest(LibjujuTestCase):
+ def setUp(self):
+ super(ModelsExistTest, self).setUp()
+
+ def test_model_names_none(self, mock_list_models):
+ mock_list_models.return_value = []
+ with self.assertRaises(Exception):
+ self.loop.run_until_complete(self.libjuju.models_exist(None))
+
+ def test_model_names_empty(self, mock_list_models):
+ mock_list_models.return_value = []
+ with self.assertRaises(Exception):
+ (exist, non_existing_models) = self.loop.run_until_complete(
+ self.libjuju.models_exist([])
+ )
+
+ def test_model_names_not_existing(self, mock_list_models):
+ mock_list_models.return_value = ["prometheus", "grafana"]
+ (exist, non_existing_models) = self.loop.run_until_complete(
+ self.libjuju.models_exist(["prometheus2", "grafana"])
+ )
+ self.assertFalse(exist)
+ self.assertEqual(non_existing_models, ["prometheus2"])
+
+ def test_model_names_exist(self, mock_list_models):
+ mock_list_models.return_value = ["prometheus", "grafana"]
+ (exist, non_existing_models) = self.loop.run_until_complete(
+ self.libjuju.models_exist(["prometheus", "grafana"])
+ )
+ self.assertTrue(exist)
+ self.assertEqual(non_existing_models, [])
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_controller")
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.disconnect_controller")
+@asynctest.mock.patch("juju.controller.Controller.list_offers")
+class ListOffers(LibjujuTestCase):
+ def setUp(self):
+ super(ListOffers, self).setUp()
+
+ def test_disconnect_controller(
+ self, mock_list_offers, mock_disconnect_controller, mock_get_controller,
+ ):
+ mock_get_controller.return_value = juju.controller.Controller()
+ mock_list_offers.side_effect = Exception()
+ with self.assertRaises(Exception):
+ self.loop.run_until_complete(self.libjuju.list_offers("model"))
+ mock_disconnect_controller.assert_called_once()
+
+ def test_empty_list(
+ self, mock_list_offers, mock_disconnect_controller, mock_get_controller,
+ ):
+ mock_get_controller.return_value = juju.controller.Controller()
+ mock_list_offers.return_value = []
+ offers = self.loop.run_until_complete(self.libjuju.list_offers("model"))
+ self.assertEqual(offers, [])
+ mock_disconnect_controller.assert_called_once()
+
+ def test_non_empty_list(
+ self, mock_list_offers, mock_disconnect_controller, mock_get_controller,
+ ):
+ mock_get_controller.return_value = juju.controller.Controller()
+ mock_list_offers.return_value = ["offer"]
+ offers = self.loop.run_until_complete(self.libjuju.list_offers("model"))
+ self.assertEqual(offers, ["offer"])
+ mock_disconnect_controller.assert_called_once()