-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Prevent resource warnings from pymongo
To prevent resource warnings from pymongo when running tests, ensure the Mongo client connection is closed by wrapping it in a context manager.
- Loading branch information
Showing
10 changed files
with
83 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
47 changes: 0 additions & 47 deletions
47
components/shared_code/tests/shared/database/test_connection_params.py
This file was deleted.
Oops, something went wrong.
51 changes: 45 additions & 6 deletions
51
components/shared_code/tests/shared/initialization/test_database.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,58 @@ | ||
"""Unit tests for the database initialization.""" | ||
|
||
import unittest | ||
from unittest.mock import Mock, patch | ||
|
||
import mongomock | ||
import pymongo | ||
|
||
from shared.initialization.database import database_connection | ||
from shared.initialization.database import get_database, mongo_client | ||
|
||
from tests.shared.base import DataModelTestCase | ||
OS_ENVIRON_GET = "shared.initialization.database.os.environ.get" | ||
|
||
|
||
class DatabaseInitTest(DataModelTestCase): | ||
class TestConnectionParams(unittest.TestCase): | ||
"""Test the database connection parameters.""" | ||
|
||
def _assert_dbclient_host_url(self, client: pymongo.MongoClient, expected_url: str) -> None: | ||
"""Assert that the dbclient was initialized with expected url.""" | ||
self.assertEqual(expected_url, client._init_kwargs["host"]) # noqa: SLF001 | ||
|
||
def test_default(self): | ||
"""Test the default url.""" | ||
with mongo_client() as client: | ||
_default_user_pass = "root:root" # nosec # noqa: S105 | ||
self._assert_dbclient_host_url(client, f"mongodb://{_default_user_pass}@localhost:27017") | ||
|
||
def test_full_url_override(self): | ||
"""Test setting full url with env var override.""" | ||
local_url = "mongodb://localhost" | ||
with patch(OS_ENVIRON_GET, Mock(return_value=local_url)), mongo_client() as client: | ||
self._assert_dbclient_host_url(client, local_url) | ||
|
||
def test_partial_url_override(self): | ||
"""Test setting partial url with env var overrides.""" | ||
|
||
def _os_environ_get(variable_name, default=None): # noqa: ANN202 | ||
"""Mock method for os.environ.get calls in shared.initialization.database.""" | ||
values = { | ||
"DATABASE_USERNAME": "user", | ||
"DATABASE_PASSWORD": "pass", | ||
"DATABASE_HOST": "host", | ||
"DATABASE_PORT": 4242, | ||
} | ||
return values.get(variable_name, default) | ||
|
||
with patch(OS_ENVIRON_GET, Mock(side_effect=_os_environ_get)), mongo_client() as client: | ||
self._assert_dbclient_host_url(client, "mongodb://user:pass@host:4242") | ||
|
||
|
||
class DatabaseInitTest(unittest.TestCase): | ||
"""Unit tests for database initialization.""" | ||
|
||
@patch("shared.initialization.database.pymongo", return_value=mongomock) | ||
def test_client(self, client: Mock) -> None: | ||
def test_client(self, pymongo_mock: Mock) -> None: | ||
"""Test that the client is called.""" | ||
database_connection() | ||
client.MongoClient.assert_called_once() | ||
with mongo_client() as client: | ||
get_database(client) | ||
pymongo_mock.MongoClient.assert_called_once() |