X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fmon%2Ftests%2Ftest_charm.py;h=e9748d30fd70ccaef2f874d6e0e67c8ce9551610;hb=refs%2Fchanges%2F95%2F11695%2F6;hp=6fcd6a65217926300be3f0bc7e4063b5601214a9;hpb=49379ced23b5e344a773ce77ac9cb59c1864e19b;p=osm%2Fdevops.git diff --git a/installers/charm/mon/tests/test_charm.py b/installers/charm/mon/tests/test_charm.py index 6fcd6a65..e9748d30 100644 --- a/installers/charm/mon/tests/test_charm.py +++ b/installers/charm/mon/tests/test_charm.py @@ -20,13 +20,45 @@ # osm-charmers@lists.launchpad.net ## +import base64 import sys from typing import NoReturn import unittest + +from charm import MonCharm from ops.model import ActiveStatus, BlockedStatus from ops.testing import Harness -from charm import MonCharm + +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): @@ -41,14 +73,17 @@ class TestCharm(unittest.TestCase): self.config = { "vca_host": "192.168.0.13", "vca_user": "admin", - "vca_password": "admin", + "vca_secret": "admin", "vca_cacert": "cacert", "database_commonkey": "commonkey", + "mongodb_uri": "", "log_level": "INFO", "openstack_default_granularity": 10, "global_request_timeout": 10, "collector_interval": 30, "evaluator_interval": 30, + "keystone_enabled": True, + "certificates": f"cert1:{certificate_pem}", } self.harness.update_config(self.config) @@ -64,7 +99,7 @@ class TestCharm(unittest.TestCase): self.assertTrue( all( relation in self.harness.charm.unit.status.message - for relation in ["mongodb", "kafka", "prometheus"] + for relation in ["mongodb", "kafka", "prometheus", "keystone"] ) ) @@ -78,6 +113,17 @@ 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 (internal)" + self.initialize_kafka_relation() + self.initialize_mongo_config() + self.initialize_prometheus_relation() + self.initialize_keystone_relation() + # Verifying status + self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + def test_with_relations( self, ) -> NoReturn: @@ -85,16 +131,29 @@ class TestCharm(unittest.TestCase): self.initialize_kafka_relation() self.initialize_mongo_relation() self.initialize_prometheus_relation() + self.initialize_keystone_relation() # Verifying status self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + def test_exception_mongodb_relation_and_config( + self, + ) -> NoReturn: + "Test with relations 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 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") @@ -113,6 +172,28 @@ class TestCharm(unittest.TestCase): {"hostname": "prometheus", "port": 9090}, ) + def initialize_keystone_relation(self): + keystone_relation_id = self.harness.add_relation("keystone", "keystone") + self.harness.add_relation_unit(keystone_relation_id, "keystone/0") + self.harness.update_relation_data( + keystone_relation_id, + "keystone", + { + "host": "host", + "port": 5000, + "user_domain_name": "ud", + "project_domain_name": "pd", + "username": "u", + "password": "p", + "service": "s", + "keystone_db_password": "something", + "region_id": "something", + "admin_username": "something", + "admin_password": "something", + "admin_project_name": "something", + }, + ) + if __name__ == "__main__": unittest.main()