Take Hiredis into use in Redis backend
[ric-plt/sdlpy.git] / ricsdl-package / tests / test_configuration.py
diff --git a/ricsdl-package/tests/test_configuration.py b/ricsdl-package/tests/test_configuration.py
new file mode 100644 (file)
index 0000000..7b17221
--- /dev/null
@@ -0,0 +1,71 @@
+# Copyright (c) 2019 AT&T Intellectual Property.
+# Copyright (c) 2018-2019 Nokia.
+#
+# 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 a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This source code is part of the near-RT RIC (RAN Intelligent Controller)
+# platform project (RICP).
+#
+
+
+import pytest
+from ricsdl.configuration import _Configuration
+
+
+@pytest.fixture()
+def config_fixture(request, monkeypatch):
+    monkeypatch.setenv('DBAAS_SERVICE_HOST', '10.20.30.40')
+    monkeypatch.setenv('DBAAS_SERVICE_PORT', '10000')
+    monkeypatch.setenv('DBAAS_SERVICE_SENTINEL_PORT', '11000')
+    monkeypatch.setenv('DBAAS_MASTER_NAME', 'my-master')
+    request.cls.config = _Configuration()
+    request.cls.config._read_configuration()
+
+
+@pytest.fixture
+def config_missing_fixture(request, monkeypatch):
+    monkeypatch.delenv('DBAAS_SERVICE_HOST', raising=False)
+    monkeypatch.delenv('DBAAS_SERVICE_PORT', raising=False)
+    monkeypatch.delenv('DBAAS_SERVICE_SENTINEL_PORT', raising=False)
+    monkeypatch.delenv('DBAAS_MASTER_NAME', raising=False)
+    request.cls.config = _Configuration()
+    request.cls.config._read_configuration()
+
+
+class TestConfiguration:
+    def test_get_params_function_returns_read_configuration(self, config_fixture):
+        expected_config = _Configuration.Params(db_host='10.20.30.40', db_port='10000',
+                                                db_sentinel_port='11000',
+                                                db_sentinel_master_name='my-master')
+        assert expected_config == self.config.get_params()
+
+    def test_get_params_function_can_return_empty_configuration(self, config_missing_fixture):
+        expected_config = _Configuration.Params(db_host=None, db_port=None,
+                                                db_sentinel_port=None,
+                                                db_sentinel_master_name=None)
+        assert expected_config == self.config.get_params()
+
+    def test_configuration_object_string_representation(self, config_fixture):
+        expected_config_info = {'DB host': '10.20.30.40',
+                                'DB port': '10000',
+                                'DB master sentinel': 'my-master',
+                                'DB sentinel port': '11000'}
+        assert str(self.config) == str(expected_config_info)
+
+    def test_configuration_object_string_representation_if_no_config(self, config_missing_fixture):
+        expected_config_info = {'DB host': None,
+                                'DB port': None,
+                                'DB master sentinel': None,
+                                'DB sentinel port': None}
+        assert str(self.config) == str(expected_config_info)