Fix bug 1263
[osm/N2VC.git] / n2vc / tests / unit / test_libjuju.py
index a384e44..76bbebe 100644 (file)
@@ -73,6 +73,91 @@ class LibjujuTestCase(asynctest.TestCase):
         loop.run_until_complete(self.libjuju.disconnect())
 
 
+@asynctest.mock.patch("n2vc.libjuju.Libjuju._create_health_check_task")
+@asynctest.mock.patch("n2vc.libjuju.Libjuju._update_api_endpoints_db")
+@asynctest.mock.patch("n2vc.libjuju.Libjuju._get_api_endpoints_db")
+class LibjujuInitTestCase(asynctest.TestCase):
+    def setUp(self):
+        self.loop = asyncio.get_event_loop()
+        self.n2vc = FakeN2VC()
+        self.endpoint = "192.168.100.100:17070"
+        self.username = "admin"
+        self.password = "secret"
+        self.cacert = """
+    -----BEGIN CERTIFICATE-----
+    SOMECERT
+    -----END CERTIFICATE-----"""
+
+    def test_endpoint_not_in_db(
+        self,
+        mock__get_api_endpoints_db,
+        mock_update_endpoints,
+        mock_create_health_check_task,
+    ):
+        mock__get_api_endpoints_db.return_value = ["another_ip"]
+        Libjuju(
+            self.endpoint,
+            "192.168.0.155:17070",
+            self.username,
+            self.password,
+            self.cacert,
+            self.loop,
+            log=None,
+            db={"get_one": []},
+            n2vc=self.n2vc,
+            apt_mirror="192.168.0.100",
+            enable_os_upgrade=True,
+        )
+        mock_update_endpoints.assert_called_once_with([self.endpoint])
+        mock__get_api_endpoints_db.assert_called_once()
+
+    def test_endpoint_in_db(
+        self,
+        mock__get_api_endpoints_db,
+        mock_update_endpoints,
+        mock_create_health_check_task,
+    ):
+        mock__get_api_endpoints_db.return_value = [self.endpoint, "another_ip"]
+        Libjuju(
+            self.endpoint,
+            "192.168.0.155:17070",
+            self.username,
+            self.password,
+            self.cacert,
+            self.loop,
+            log=None,
+            db={"get_one": []},
+            n2vc=self.n2vc,
+            apt_mirror="192.168.0.100",
+            enable_os_upgrade=True,
+        )
+        mock_update_endpoints.assert_not_called()
+        mock__get_api_endpoints_db.assert_called_once()
+
+    def test_no_db_endpoints(
+        self,
+        mock__get_api_endpoints_db,
+        mock_update_endpoints,
+        mock_create_health_check_task,
+    ):
+        mock__get_api_endpoints_db.return_value = None
+        Libjuju(
+            self.endpoint,
+            "192.168.0.155:17070",
+            self.username,
+            self.password,
+            self.cacert,
+            self.loop,
+            log=None,
+            db={"get_one": []},
+            n2vc=self.n2vc,
+            apt_mirror="192.168.0.100",
+            enable_os_upgrade=True,
+        )
+        mock_update_endpoints.assert_called_once_with([self.endpoint])
+        mock__get_api_endpoints_db.assert_called_once()
+
+
 @asynctest.mock.patch("juju.controller.Controller.connect")
 @asynctest.mock.patch(
     "juju.controller.Controller.api_endpoints",