X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fro%2Ftests%2Ftest_charm.py;h=2d317bd36eaf70298b371a57728f3f02c0a7c549;hb=3388212eac8fa6aff2f5d766e62e33962816501b;hp=4610b2594d67c8b2e296857285489a736d566a91;hpb=c753dc5f89180d11c1049f6398d74a4f99d7acd5;p=osm%2Fdevops.git diff --git a/installers/charm/ro/tests/test_charm.py b/installers/charm/ro/tests/test_charm.py index 4610b259..2d317bd3 100644 --- a/installers/charm/ro/tests/test_charm.py +++ b/installers/charm/ro/tests/test_charm.py @@ -20,7 +20,7 @@ # osm-charmers@lists.launchpad.net ## -import sys +import base64 from typing import NoReturn import unittest @@ -29,22 +29,54 @@ from ops.model import ActiveStatus, BlockedStatus from ops.testing import Harness +def encode(content: str): + return base64.b64encode(content.encode("ascii")).decode("utf-8") + + +certificate_pem = encode( + """ +-----BEGIN CERTIFICATE----- +MIIDazCCAlOgAwIBAgIUf1b0s3UKtrxHXH2rge7UaQyfJAMwDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMTAzMjIxNzEyMjdaFw0zMTAz +MjAxNzEyMjdaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCgCfCBgYAN6ON0yHDXuW407rFtJVRf0u46Jrp0Dk7J +kkSZ1e7Kq14r7yFHazEBWv78oOdwBocvWrd8leLuf3bYGcHR65hRy6A/fbYm5Aje +cKpwlFwaqfR4BLelwJl79jZ2rJX738cCBVrIk1nAVdOxGrXV4MTWUaKR2c+uKKvc +OKRT+5VqCeP4N5FWeATZ/KqGu8uV9E9WhFgwIZyStemLyLaDbn5PmAQ6S9oeR5jJ +o2gEEp/lDKvsqOWs76KFumSKa9hQs5Dw2lj0mb1UoyYK1gYc4ubzVChJadv44AU8 +MYtIjlFn1X1P+RjaKZNUIAGXkoLwYn6SizF6y6LiuFS9AgMBAAGjUzBRMB0GA1Ud +DgQWBBRl+/23CB+FXczeAZRQyYcfOdy9YDAfBgNVHSMEGDAWgBRl+/23CB+FXcze +AZRQyYcfOdy9YDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAd +dkeDym6lRN8kWFtfu3IyiLF8G8sn91qNbH3Yr4TuTBhgcjYyW6PgisSbrNgA9ysE +GoaF7ohb8GeVfCsQdK23+NpAlj/+DZ3OnGcxwXj1RUAz4yr9kanV1yuEtr1q2xJI +UaECWr8HZlwGBAKNTGx2EXT2/2aFzgULpDcxzTKD+MRpKpMUrWhf9ULvVrclvHWe +POLYhobUFuBHuo6rt5Rcq16j67zCX9EVTlAE3o2OECIWByK22sXdeOidYMpTkl4q +8FrOqjNsx5d+SBPJBv/pqtBm4bA47Vx1P8tbWOQ4bXS0UmXgwpeBOU/O/ot30+KS +JnKEy+dYyvVBKg77sRHw +-----END CERTIFICATE----- +""" +) + + class TestCharm(unittest.TestCase): """Prometheus Charm unit tests.""" def setUp(self) -> NoReturn: """Test setup""" - self.image_info = sys.modules["oci_image"].OCIImageResource().fetch() self.harness = Harness(RoCharm) self.harness.set_leader(is_leader=True) self.harness.begin() self.config = { "enable_ng_ro": True, "database_commonkey": "commonkey", + "mongodb_uri": "", "log_level": "INFO", "vim_database": "db_name", "ro_database": "ro_db_name", "openmano_tenant": "mano", + "certificates": f"cert1:{certificate_pem}", } self.harness.update_config(self.config) @@ -84,6 +116,24 @@ class TestCharm(unittest.TestCase): # Assertions self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus) + def test_with_relations_and_mongodb_config_ng( + self, + ) -> NoReturn: + "Test with relations (ng-ro)" + + # Initializing the kafka relation + 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} + ) + + # Initializing the mongodb config + self.harness.update_config({"mongodb_uri": "mongodb://mongo:27017"}) + + # Verifying status + self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + def test_with_relations_ng( self, ) -> NoReturn: @@ -108,6 +158,25 @@ class TestCharm(unittest.TestCase): # Verifying status self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + def test_ng_exception_mongodb_relation_and_config( + self, + ) -> NoReturn: + "Test NG-RO mongodb relation and config. Must fail" + # Initializing the mongo relation + mongodb_relation_id = self.harness.add_relation("mongodb", "mongodb") + self.harness.add_relation_unit(mongodb_relation_id, "mongodb/0") + self.harness.update_relation_data( + mongodb_relation_id, + "mongodb/0", + {"connection_string": "mongodb://mongo:27017"}, + ) + + # Initializing the mongodb config + self.harness.update_config({"mongodb_uri": "mongodb://mongo:27017"}) + + # Verifying status + self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus) + if __name__ == "__main__": unittest.main()