Revert "Revert ""Remove unused lines of code"""
[osm/N2VC.git] / n2vc / tests / unit / test_libjuju.py
index a789bc8..41b32d1 100644 (file)
@@ -954,3 +954,96 @@ class ListOffers(LibjujuTestCase):
         offers = self.loop.run_until_complete(self.libjuju.list_offers("model"))
         self.assertEqual(offers, ["offer"])
         mock_disconnect_controller.assert_called_once()
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_controller")
+@asynctest.mock.patch("juju.controller.Controller.get_model")
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.disconnect_model")
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.disconnect_controller")
+@asynctest.mock.patch("juju.model.Model.consume")
+class ConsumeTest(LibjujuTestCase):
+    def setUp(self):
+        super(ConsumeTest, self).setUp()
+
+    def test_consume(
+        self,
+        mock_consume,
+        mock_disconnect_controller,
+        mock_disconnect_model,
+        mock_get_model,
+        mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_get_model.return_value = juju.model.Model()
+
+        self.loop.run_until_complete(
+            self.libjuju.consume("offer_url", "model_name")
+        )
+        mock_consume.assert_called_once()
+        mock_disconnect_model.assert_called_once()
+        mock_disconnect_controller.assert_called_once()
+
+    def test_parsing_error_exception(
+        self,
+        mock_consume,
+        mock_disconnect_controller,
+        mock_disconnect_model,
+        mock_get_model,
+        mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_get_model.return_value = juju.model.Model()
+        mock_consume.side_effect = juju.offerendpoints.ParseError("")
+
+        with self.assertRaises(juju.offerendpoints.ParseError):
+            self.loop.run_until_complete(
+                self.libjuju.consume("offer_url", "model_name")
+            )
+        mock_consume.assert_called_once()
+        mock_disconnect_model.assert_called_once()
+        mock_disconnect_controller.assert_called_once()
+
+    def test_juju_error_exception(
+        self,
+        mock_consume,
+        mock_disconnect_controller,
+        mock_disconnect_model,
+        mock_get_model,
+        mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_get_model.return_value = juju.model.Model()
+        mock_consume.side_effect = juju.errors.JujuError("")
+
+        with self.assertRaises(juju.errors.JujuError):
+            self.loop.run_until_complete(
+                self.libjuju.consume("offer_url", "model_name")
+            )
+        mock_consume.assert_called_once()
+        mock_disconnect_model.assert_called_once()
+        mock_disconnect_controller.assert_called_once()
+
+    def test_juju_api_error_exception(
+        self,
+        mock_consume,
+        mock_disconnect_controller,
+        mock_disconnect_model,
+        mock_get_model,
+        mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_get_model.return_value = juju.model.Model()
+        mock_consume.side_effect = juju.errors.JujuAPIError({
+            "error": "",
+            "response": "",
+            "request-id": "",
+
+        })
+
+        with self.assertRaises(juju.errors.JujuAPIError):
+            self.loop.run_until_complete(
+                self.libjuju.consume("offer_url", "model_name")
+            )
+        mock_consume.assert_called_once()
+        mock_disconnect_model.assert_called_once()
+        mock_disconnect_controller.assert_called_once()