From 4e7f6bca1d463902d5869ba31fc571abb123f9a4 Mon Sep 17 00:00:00 2001 From: TrisNol Date: Fri, 11 Aug 2023 16:29:08 +0200 Subject: [PATCH] test: Add missing unit tests --- .../config/config_providers.py | 2 +- tests/config/__init__.py | 1 + tests/config/config_providers_test.py | 74 +++++++++++++++++++ tests/utils/postgres/__init__.py | 1 + tests/utils/postgres/connector_test.py | 14 ++++ tests/utils/postgres/entities_test.py | 0 6 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 tests/config/__init__.py create mode 100644 tests/config/config_providers_test.py create mode 100644 tests/utils/postgres/__init__.py create mode 100644 tests/utils/postgres/connector_test.py create mode 100644 tests/utils/postgres/entities_test.py diff --git a/src/aki_prj23_transparenzregister/config/config_providers.py b/src/aki_prj23_transparenzregister/config/config_providers.py index d1751b2..c6c4483 100644 --- a/src/aki_prj23_transparenzregister/config/config_providers.py +++ b/src/aki_prj23_transparenzregister/config/config_providers.py @@ -83,7 +83,7 @@ class JsonFileConfigProvider(ConfigProvider): """ details = self.__data__["mongo"] return MongoConnection( - details["hostname"], + details["host"], details["database"], details["port"], details["username"], diff --git a/tests/config/__init__.py b/tests/config/__init__.py new file mode 100644 index 0000000..6275ce4 --- /dev/null +++ b/tests/config/__init__.py @@ -0,0 +1 @@ +"""Tests for config module.""" diff --git a/tests/config/config_providers_test.py b/tests/config/config_providers_test.py new file mode 100644 index 0000000..36af60c --- /dev/null +++ b/tests/config/config_providers_test.py @@ -0,0 +1,74 @@ +import json +from unittest.mock import mock_open, patch + +import pytest + +from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider + + +def test_json_provider_init_fail(): + with pytest.raises(FileNotFoundError): + JsonFileConfigProvider("file-that-does-not-exist") + + +def test_json_provider_init_no_json(): + with patch("os.path.isfile") as mock_isfile, patch( + "builtins.open", mock_open(read_data="fhdaofhdoas") + ): + mock_isfile.return_value = True + with pytest.raises(TypeError): + JsonFileConfigProvider("non-json-file") + + +def test_json_provider_init(): + data = {"hello": "world"} + input_data = json.dumps(data) + with patch("os.path.isfile") as mock_isfile: + mock_isfile.return_value = True + with patch("builtins.open", mock_open(read_data=input_data)): + provider = JsonFileConfigProvider("someWhere") + assert provider.__data__ == data + + +def test_json_provider_get_postgre(): + data = { + "postgres": { + "username": "user", + "password": "pass", + "host": "locahost", + "database": "postgres", + "port": 420, + } + } + input_data = json.dumps(data) + with patch("os.path.isfile") as mock_isfile: + mock_isfile.return_value = True + with patch("builtins.open", mock_open(read_data=input_data)): + config = JsonFileConfigProvider("someWhere").get_postgre_connection_string() + assert config.username == data["postgres"]["username"] + assert config.password == data["postgres"]["password"] + assert config.host == data["postgres"]["host"] + assert config.database == data["postgres"]["database"] + assert config.port == data["postgres"]["port"] + + +def test_json_provider_get_mongo(): + data = { + "mongo": { + "username": "user", + "password": "pass", + "host": "locahost", + "database": "postgres", + "port": 420, + } + } + input_data = json.dumps(data) + with patch("os.path.isfile") as mock_isfile: + mock_isfile.return_value = True + with patch("builtins.open", mock_open(read_data=input_data)): + config = JsonFileConfigProvider("someWhere").get_mongo_connection_string() + assert config.username == data["mongo"]["username"] + assert config.password == data["mongo"]["password"] + assert config.hostname == data["mongo"]["host"] + assert config.database == data["mongo"]["database"] + assert config.port == data["mongo"]["port"] diff --git a/tests/utils/postgres/__init__.py b/tests/utils/postgres/__init__.py new file mode 100644 index 0000000..a4ce3a4 --- /dev/null +++ b/tests/utils/postgres/__init__.py @@ -0,0 +1 @@ +"""Tests for utils.postgres module.""" diff --git a/tests/utils/postgres/connector_test.py b/tests/utils/postgres/connector_test.py new file mode 100644 index 0000000..50a9c51 --- /dev/null +++ b/tests/utils/postgres/connector_test.py @@ -0,0 +1,14 @@ +from unittest.mock import patch + +from aki_prj23_transparenzregister.config.config_template import PostgreConnectionString +from aki_prj23_transparenzregister.utils.postgres.connector import get_engine + + +def test_get_engine(): + conn_args = PostgreConnectionString("", "", "", "", 42) + with patch( + "aki_prj23_transparenzregister.utils.postgres.connector.create_engine" + ) as mock_create_engine: + result = "someThing" + mock_create_engine.return_value = result + assert get_engine(conn_args) == result diff --git a/tests/utils/postgres/entities_test.py b/tests/utils/postgres/entities_test.py new file mode 100644 index 0000000..e69de29