Integrate MON and Grafana
[osm/devops.git] / installers / charm / osm-mon / tests / unit / test_charm.py
index 5c9fd99..441eddb 100644 (file)
@@ -42,7 +42,27 @@ def harness(mocker: MockerFixture):
     harness.cleanup()
 
 
+def _set_grafana_config(harness: Harness):
+    harness.update_config(
+        {
+            "grafana-url": "http://prometheus:1234",
+            "grafana-user": "user",
+            "grafana-password": "password",
+        }
+    )
+
+
+def test_default_grafana_config_is_invalid_charm_is_blocked(harness: Harness):
+    harness.charm.on.config_changed.emit()
+    assert type(harness.charm.unit.status) == BlockedStatus
+    assert (
+        "need grafana-url, grafana-user, grafana-password config"
+        == harness.charm.unit.status.message
+    )
+
+
 def test_missing_relations(harness: Harness):
+    _set_grafana_config(harness)
     harness.charm.on.config_changed.emit()
     assert type(harness.charm.unit.status) == BlockedStatus
     assert all(
@@ -51,12 +71,48 @@ def test_missing_relations(harness: Harness):
     )
 
 
+def test_grafana_url_without_schema_block_status(harness: Harness):
+    harness.update_config(
+        {"grafana-url": "foo.com", "grafana-user": "user", "grafana-password": "password"}
+    )
+    assert type(harness.charm.unit.status) == BlockedStatus
+    assert "Invalid value for grafana-url config: 'foo.com'" == harness.charm.unit.status.message
+
+
+def test_grafana_url_with_port_without_schema_block_status(harness: Harness):
+    harness.update_config(
+        {"grafana-url": "foo.com:9090", "grafana-user": "user", "grafana-password": "password"}
+    )
+    assert type(harness.charm.unit.status) == BlockedStatus
+    assert (
+        "Invalid value for grafana-url config: 'foo.com:9090'" == harness.charm.unit.status.message
+    )
+
+
+def test_grafana_url_without_port_is_valid(harness: Harness):
+    _add_relations(harness)
+    harness.update_config(
+        {"grafana-url": "http://foo", "grafana-user": "user", "grafana-password": "password"}
+    )
+    assert harness.charm.unit.status == ActiveStatus()
+
+
+def test_grafana_url_with_port_is_valid(harness: Harness):
+    _add_relations(harness)
+    harness.update_config(
+        {"grafana-url": "http://foo:90", "grafana-user": "user", "grafana-password": "password"}
+    )
+    assert harness.charm.unit.status == ActiveStatus()
+
+
 def test_ready(harness: Harness):
+    _set_grafana_config(harness)
     _add_relations(harness)
     assert harness.charm.unit.status == ActiveStatus()
 
 
 def test_container_stops_after_relation_broken(harness: Harness):
+    _set_grafana_config(harness)
     harness.charm.on[container_name].pebble_ready.emit(container_name)
     container = harness.charm.unit.get_container(container_name)
     relation_ids = _add_relations(harness)
@@ -72,7 +128,9 @@ def _add_relations(harness: Harness):
     relation_id = harness.add_relation("mongodb", "mongodb")
     harness.add_relation_unit(relation_id, "mongodb/0")
     harness.update_relation_data(
-        relation_id, "mongodb/0", {"connection_string": "mongodb://:1234"}
+        relation_id,
+        "mongodb",
+        {"uris": "mongodb://:1234", "username": "user", "password": "password"},
     )
     relation_ids.append(relation_id)
     # Add kafka relation