import sys
from typing import NoReturn
import unittest
-from ops.model import ActiveStatus, BlockedStatus
-from ops.testing import Harness
+
from charm import KeystoneCharm
+from ops.model import ActiveStatus, BlockedStatus
+from ops.testing import Harness
class TestCharm(unittest.TestCase):
self.config = {
"region_id": "str",
"keystone_db_password": "str",
+ "mysql_host": "",
+ "mysql_port": 3306,
+ "mysql_root_password": "manopw",
"admin_username": "str",
"admin_password": "str",
"admin_project": "str",
# Assertions
self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus)
+ def test_with_config(self) -> NoReturn:
+ "Test with mysql config"
+ self.initialize_mysql_config()
+ # Verifying status
+ self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
def test_with_relations(
self,
) -> NoReturn:
# Verifying status
self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus)
+ def test_exception_mysql_relation_and_config(
+ self,
+ ) -> NoReturn:
+ "Test with relations and config. Must throw exception"
+ self.initialize_mysql_config()
+ self.initialize_mysql_relation()
+ # Verifying status
+ self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
+ def initialize_mysql_config(self):
+ self.harness.update_config({"mysql_uri": "mysql://root:manopw@mysql:3306/"})
+
def initialize_mysql_relation(self):
relation_id = self.harness.add_relation("db", "mysql")
self.harness.add_relation_unit(relation_id, "mysql/0")