diff --git a/tests/utils/test_database.py b/tests/utils/test_database.py index cbeeec2..164c338 100644 --- a/tests/utils/test_database.py +++ b/tests/utils/test_database.py @@ -107,6 +107,16 @@ def test_get_db_credentials_ssm(mock_ssm): assert "postgresql://mocked_value:mocked_value@mocked_value/mocked_value" in conn_str mock_ssm.get_parameter.assert_called() +def test_get_db_credentials_ssm_exception(mock_ssm): + """Test SSM credential fetching failure raises RuntimeError""" + os.environ.pop("MOCK_AUTH", None) + mock_ssm.get_parameter.side_effect = Exception("SSM timeout") + + with pytest.raises(RuntimeError) as excinfo: + get_db_credentials() + + assert "Failed to fetch DB credentials from SSM: SSM timeout" in str(excinfo.value) + def test_session_creation(): """Test database session creation""" session = session_mock() @@ -121,4 +131,20 @@ def test_get_db_generator(): try: next(db_gen) # Should raise StopIteration except StopIteration: - pass \ No newline at end of file + pass + +def test_init_db(mocker, mock_env): + """Test database initialization creates tables""" + mock_create_all = mocker.patch('app.models.Base.metadata.create_all') + + # Mock get_db_credentials to return SQLite test connection + mocker.patch( + 'app.utils.database.get_db_credentials', + return_value="sqlite:///:memory:" + ) + + from app.utils.database import init_db, engine + init_db() + + # Verify create_all was called with the engine + mock_create_all.assert_called_once_with(bind=engine) \ No newline at end of file