test: add unit tests for SQLAlchemyAdapter connection arguments
Signed-off-by: ketanjain7981 <ketan.jain@think41.com>
This commit is contained in:
parent
3f53534c99
commit
4f3a1bcf01
1 changed files with 84 additions and 0 deletions
|
|
@ -0,0 +1,84 @@
|
|||
from unittest.mock import patch
|
||||
from cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter import (
|
||||
SQLAlchemyAdapter,
|
||||
)
|
||||
|
||||
|
||||
class TestSqlAlchemyAdapter:
|
||||
@patch(
|
||||
"cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter.create_async_engine"
|
||||
)
|
||||
@patch("os.getenv")
|
||||
def test_sqlite_default_timeout(self, mock_getenv, mock_create_engine):
|
||||
"""Test that SQLite connection uses default timeout when no env var is set."""
|
||||
mock_getenv.return_value = None
|
||||
SQLAlchemyAdapter("sqlite:///test.db")
|
||||
mock_create_engine.assert_called_once()
|
||||
_, kwargs = mock_create_engine.call_args
|
||||
assert "connect_args" in kwargs
|
||||
assert kwargs["connect_args"] == {"timeout": 30}
|
||||
|
||||
@patch(
|
||||
"cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter.create_async_engine"
|
||||
)
|
||||
@patch("os.getenv")
|
||||
def test_sqlite_with_env_var_timeout(self, mock_getenv, mock_create_engine):
|
||||
"""Test that SQLite connection uses timeout from env var."""
|
||||
mock_getenv.return_value = '{"timeout": 60}'
|
||||
SQLAlchemyAdapter("sqlite:///test.db")
|
||||
mock_create_engine.assert_called_once()
|
||||
_, kwargs = mock_create_engine.call_args
|
||||
assert "connect_args" in kwargs
|
||||
assert kwargs["connect_args"] == {"timeout": 60}
|
||||
|
||||
@patch(
|
||||
"cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter.create_async_engine"
|
||||
)
|
||||
@patch("os.getenv")
|
||||
def test_sqlite_with_other_env_var_args(self, mock_getenv, mock_create_engine):
|
||||
"""Test that SQLite connection merges default timeout with other args from env var."""
|
||||
mock_getenv.return_value = '{"foo": "bar"}'
|
||||
SQLAlchemyAdapter("sqlite:///test.db")
|
||||
mock_create_engine.assert_called_once()
|
||||
_, kwargs = mock_create_engine.call_args
|
||||
assert "connect_args" in kwargs
|
||||
assert kwargs["connect_args"] == {"timeout": 30, "foo": "bar"}
|
||||
|
||||
@patch(
|
||||
"cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter.create_async_engine"
|
||||
)
|
||||
@patch("os.getenv")
|
||||
def test_sqlite_with_invalid_json_env_var(self, mock_getenv, mock_create_engine):
|
||||
"""Test that SQLite connection uses default timeout when env var has invalid JSON."""
|
||||
mock_getenv.return_value = '{"timeout": 60' # Invalid JSON
|
||||
SQLAlchemyAdapter("sqlite:///test.db")
|
||||
mock_create_engine.assert_called_once()
|
||||
_, kwargs = mock_create_engine.call_args
|
||||
assert "connect_args" in kwargs
|
||||
assert kwargs["connect_args"] == {"timeout": 30}
|
||||
|
||||
@patch(
|
||||
"cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter.create_async_engine"
|
||||
)
|
||||
@patch("os.getenv")
|
||||
def test_postgresql_with_env_var(self, mock_getenv, mock_create_engine):
|
||||
"""Test that PostgreSQL connection uses connect_args from env var."""
|
||||
mock_getenv.return_value = '{"sslmode": "require"}'
|
||||
SQLAlchemyAdapter("postgresql://user:pass@host/db")
|
||||
mock_create_engine.assert_called_once()
|
||||
_, kwargs = mock_create_engine.call_args
|
||||
assert "connect_args" in kwargs
|
||||
assert kwargs["connect_args"] == {"sslmode": "require"}
|
||||
|
||||
@patch(
|
||||
"cognee.infrastructure.databases.relational.sqlalchemy.SqlAlchemyAdapter.create_async_engine"
|
||||
)
|
||||
@patch("os.getenv")
|
||||
def test_postgresql_without_env_var(self, mock_getenv, mock_create_engine):
|
||||
"""Test that PostgreSQL connection has empty connect_args when no env var is set."""
|
||||
mock_getenv.return_value = None
|
||||
SQLAlchemyAdapter("postgresql://user:pass@host/db")
|
||||
mock_create_engine.assert_called_once()
|
||||
_, kwargs = mock_create_engine.call_args
|
||||
assert "connect_args" in kwargs
|
||||
assert kwargs["connect_args"] == {}
|
||||
Loading…
Add table
Reference in a new issue