X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fpol%2Ftests%2Ftest_charm.py;h=6cf435d0c61cd8acc328e9c464f5b96569b58b91;hb=refs%2Fchanges%2F95%2F11695%2F6;hp=22143978110658edd988bd53b3e3cc64fefd3fe2;hpb=49379ced23b5e344a773ce77ac9cb59c1864e19b;p=osm%2Fdevops.git diff --git a/installers/charm/pol/tests/test_charm.py b/installers/charm/pol/tests/test_charm.py index 22143978..6cf435d0 100644 --- a/installers/charm/pol/tests/test_charm.py +++ b/installers/charm/pol/tests/test_charm.py @@ -23,10 +23,10 @@ import sys from typing import NoReturn import unittest -from ops.model import ActiveStatus, BlockedStatus -from ops.testing import Harness from charm import PolCharm +from ops.model import ActiveStatus, BlockedStatus +from ops.testing import Harness class TestCharm(unittest.TestCase): @@ -40,6 +40,7 @@ class TestCharm(unittest.TestCase): self.harness.begin() self.config = { "log_level": "INFO", + "mongodb_uri": "", } self.harness.update_config(self.config) @@ -69,22 +70,74 @@ class TestCharm(unittest.TestCase): # Assertions self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus) + def test_with_relations_and_mongodb_config( + self, + ) -> NoReturn: + "Test with relations and mongodb config (internal)" + self.initialize_mysql_relation() + self.initialize_kafka_relation() + self.initialize_mongo_config() + # Verifying status + self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + def test_with_relations( self, ) -> NoReturn: "Test with relations (internal)" self.initialize_kafka_relation() self.initialize_mongo_relation() + self.initialize_mysql_relation() + # Verifying status + self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + + def test_exception_mongodb_relation_and_config( + self, + ) -> NoReturn: + "Test with relation and config for Mongodb. Must fail" + self.initialize_mongo_relation() + self.initialize_mongo_config() + # Verifying status + self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus) + + def test_mysql_config_success(self): + self.initialize_kafka_relation() + self.initialize_mongo_relation() + self.initialize_mysql_config() # Verifying status self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + def test_mysql_config_wrong_value(self): + self.initialize_kafka_relation() + self.initialize_mongo_relation() + self.initialize_mysql_config(uri="wrong_uri") + # Verifying status + self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus) + self.assertIn( + "mysql_uri is not properly formed", + self.harness.charm.unit.status.message, + ) + + def test_mysql_config_and_relation(self): + self.initialize_mysql_relation() + self.initialize_mysql_config() + # Verifying status + self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus) + # import pdb; pdb.set_trace() + self.assertIn( + "Mysql data cannot be provided via config and relation", + self.harness.charm.unit.status.message, + ) + def initialize_kafka_relation(self): kafka_relation_id = self.harness.add_relation("kafka", "kafka") self.harness.add_relation_unit(kafka_relation_id, "kafka/0") self.harness.update_relation_data( - kafka_relation_id, "kafka/0", {"host": "kafka", "port": 9092} + kafka_relation_id, "kafka", {"host": "kafka", "port": 9092} ) + def initialize_mongo_config(self): + self.harness.update_config({"mongodb_uri": "mongodb://mongo:27017"}) + def initialize_mongo_relation(self): mongodb_relation_id = self.harness.add_relation("mongodb", "mongodb") self.harness.add_relation_unit(mongodb_relation_id, "mongodb/0") @@ -94,6 +147,27 @@ class TestCharm(unittest.TestCase): {"connection_string": "mongodb://mongo:27017"}, ) + def initialize_mysql_config(self, uri=None): + self.harness.update_config( + {"mysql_uri": uri or "mysql://user:pass@mysql-host:3306/database"} + ) + + def initialize_mysql_relation(self): + mongodb_relation_id = self.harness.add_relation("mysql", "mysql") + self.harness.add_relation_unit(mongodb_relation_id, "mysql/0") + self.harness.update_relation_data( + mongodb_relation_id, + "mysql/0", + { + "user": "user", + "password": "pass", + "host": "host", + "port": "1234", + "database": "pol", + "root_password": "root_password", + }, + ) + if __name__ == "__main__": unittest.main()