X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fdevops.git;a=blobdiff_plain;f=installers%2Fcharm%2Fng-ui%2Ftests%2Ftest_charm.py;h=d9a4d3e6e65ee5d10a3366ba5ba692e9bcf37aeb;hp=1cde2dfa7457c14134287e19074589a3d072c409;hb=49379ced23b5e344a773ce77ac9cb59c1864e19b;hpb=e5fd208248a496cd798a66cb27216e83f2852a76 diff --git a/installers/charm/ng-ui/tests/test_charm.py b/installers/charm/ng-ui/tests/test_charm.py index 1cde2dfa..d9a4d3e6 100644 --- a/installers/charm/ng-ui/tests/test_charm.py +++ b/installers/charm/ng-ui/tests/test_charm.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright 2020 Canonical Ltd. +# Copyright 2021 Canonical Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain @@ -20,27 +20,77 @@ # osm-charmers@lists.launchpad.net ## +import sys from typing import NoReturn import unittest - +from ops.model import ActiveStatus, BlockedStatus from ops.testing import Harness from charm import NgUiCharm class TestCharm(unittest.TestCase): - """PLA Charm unit tests.""" + """Prometheus Charm unit tests.""" def setUp(self) -> NoReturn: """Test setup""" + self.image_info = sys.modules["oci_image"].OCIImageResource().fetch() self.harness = Harness(NgUiCharm) self.harness.set_leader(is_leader=True) self.harness.begin() + self.config = { + "server_name": "localhost", + "port": 80, + "max_file_size": 0, + "ingress_whitelist_source_range": "", + "tls_secret_name": "", + "site_url": "https://ui.192.168.100.100.xip.io", + } + self.harness.update_config(self.config) + + def test_config_changed_no_relations( + self, + ) -> NoReturn: + """Test ingress resources without HTTP.""" + + self.harness.charm.on.config_changed.emit() - def test_on_start_without_relations(self) -> NoReturn: - """Test installation without any relation.""" + # Assertions + self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus) + self.assertTrue( + all( + relation in self.harness.charm.unit.status.message + for relation in ["nbi"] + ) + ) + + def test_config_changed_non_leader( + self, + ) -> NoReturn: + """Test ingress resources without HTTP.""" + self.harness.set_leader(is_leader=False) self.harness.charm.on.config_changed.emit() + # Assertions + self.assertIsInstance(self.harness.charm.unit.status, ActiveStatus) + + def test_with_relations( + self, + ) -> NoReturn: + "Test with relations (internal)" + self.initialize_nbi_relation() + # Verifying status + self.assertNotIsInstance(self.harness.charm.unit.status, BlockedStatus) + + def initialize_nbi_relation(self): + http_relation_id = self.harness.add_relation("nbi", "nbi") + self.harness.add_relation_unit(http_relation_id, "nbi") + self.harness.update_relation_data( + http_relation_id, + "nbi", + {"host": "nbi", "port": 9999}, + ) + if __name__ == "__main__": unittest.main()