Files
wehub-resource-sync b957a53def
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:21:23 +08:00

309 lines
8.2 KiB
Python

# Copyright (c) Microsoft. All rights reserved.
from _pytest.mark.structures import ParameterSet
from pytest import fixture, param
from semantic_kernel.exceptions.vector_store_exceptions import VectorStoreOperationException
@fixture()
def mongodb_atlas_unit_test_env(monkeypatch, exclude_list, override_env_param_dict):
"""Fixture to set environment variables for MongoDB Atlas Unit Tests."""
if exclude_list is None:
exclude_list = []
if override_env_param_dict is None:
override_env_param_dict = {}
env_vars = {"MONGODB_ATLAS_CONNECTION_STRING": "mongodb://test", "MONGODB_ATLAS_DATABASE_NAME": "test-database"}
env_vars.update(override_env_param_dict)
for key, value in env_vars.items():
if key not in exclude_list:
monkeypatch.setenv(key, value)
else:
monkeypatch.delenv(key, raising=False)
return env_vars
@fixture
def postgres_unit_test_env(monkeypatch, exclude_list, override_env_param_dict):
"""Fixture to set environment variables for Postgres connector."""
if exclude_list is None:
exclude_list = []
if override_env_param_dict is None:
override_env_param_dict = {}
env_vars = {"POSTGRES_CONNECTION_STRING": "host=localhost port=5432 dbname=postgres user=testuser password=example"}
env_vars.update(override_env_param_dict)
for key, value in env_vars.items():
if key not in exclude_list:
monkeypatch.setenv(key, value)
else:
monkeypatch.delenv(key, raising=False)
return env_vars
@fixture
def qdrant_unit_test_env(monkeypatch, exclude_list, override_env_param_dict):
"""Fixture to set environment variables for QdrantConnector."""
if exclude_list is None:
exclude_list = []
if override_env_param_dict is None:
override_env_param_dict = {}
env_vars = {"QDRANT_LOCATION": "http://localhost:6333"}
env_vars.update(override_env_param_dict)
for key, value in env_vars.items():
if key not in exclude_list:
monkeypatch.setenv(key, value)
else:
monkeypatch.delenv(key, raising=False)
return env_vars
@fixture
def redis_unit_test_env(monkeypatch, exclude_list, override_env_param_dict):
"""Fixture to set environment variables for Redis."""
if exclude_list is None:
exclude_list = []
if override_env_param_dict is None:
override_env_param_dict = {}
env_vars = {"REDIS_CONNECTION_STRING": "redis://localhost:6379"}
env_vars.update(override_env_param_dict)
for key, value in env_vars.items():
if key not in exclude_list:
monkeypatch.setenv(key, value)
else:
monkeypatch.delenv(key, raising=False)
return env_vars
@fixture
def pinecone_unit_test_env(monkeypatch, exclude_list, override_env_param_dict):
"""Fixture to set environment variables for Pinecone."""
if exclude_list is None:
exclude_list = []
if override_env_param_dict is None:
override_env_param_dict = {}
env_vars = {"PINECONE_API_KEY": "test_key"}
env_vars.update(override_env_param_dict)
for key, value in env_vars.items():
if key not in exclude_list:
monkeypatch.setenv(key, value)
else:
monkeypatch.delenv(key, raising=False)
return env_vars
@fixture
def sql_server_unit_test_env(monkeypatch, exclude_list, override_env_param_dict):
"""Fixture to set environment variables for SQL Server."""
if exclude_list is None:
exclude_list = []
if override_env_param_dict is None:
override_env_param_dict = {}
env_vars = {
"SQL_SERVER_CONNECTION_STRING": "Driver={ODBC Driver 18 for SQL Server};Server=localhost;Database=testdb;User Id=testuser;Password=example;" # noqa: E501
}
env_vars.update(override_env_param_dict)
for key, value in env_vars.items():
if key not in exclude_list:
monkeypatch.setenv(key, value)
else:
monkeypatch.delenv(key, raising=False)
return env_vars
def filter_lambda_list(store: str) -> list[ParameterSet]:
"""Fixture to provide a list of filter lambdas for testing."""
sets = [
(
lambda x: x.content == "value",
{
"ai_search": "content eq 'value'",
},
"equal with string",
),
(
lambda x: x.id == 0,
{
"ai_search": "id eq 0",
},
"equal with int",
),
(
lambda x: x.content != "value",
{
"ai_search": "content ne 'value'",
},
"not equal",
),
(
lambda x: x.id > 0,
{
"ai_search": "id gt 0",
},
"greater than",
),
(
lambda x: x.id >= 0,
{
"ai_search": "id ge 0",
},
"greater than or equal",
),
(
lambda x: x.id == +0,
{
"ai_search": "id eq +0",
},
"equal with explicit positive",
),
(
lambda x: x.id < 0,
{
"ai_search": "id lt 0",
},
"less than",
),
(
lambda x: x.id <= 0,
{
"ai_search": "id le 0",
},
"less than or equal",
),
(
lambda x: -10 <= x.id <= 0,
{
"ai_search": "(-10 le id and id le 0)",
},
"between inclusive",
),
(
lambda x: -10 < x.id < 0,
{
"ai_search": "(-10 lt id and id lt 0)",
},
"between exclusive",
),
(
lambda x: x.content == "value" and x.id == 0,
{
"ai_search": "(content eq 'value' and id eq 0)",
},
"and",
),
(
lambda x: x.content == "value" or x.id == 0,
{
"ai_search": "(content eq 'value' or id eq 0)",
},
"or",
),
(
lambda x: not x.content,
{
"ai_search": "not content",
},
"not with truthy",
),
(
lambda x: not (x.content == "value"), # noqa: SIM201
{
"ai_search": "not content eq 'value'",
},
"not with equal",
),
(
lambda x: not (x.content != "value"), # noqa: SIM202
{
"ai_search": "not content ne 'value'",
},
"not with not equal",
),
(
lambda x: "value" in x.content,
{
"ai_search": "search.ismatch('value', 'content')",
},
"contains",
),
(
lambda x: "value" not in x.content,
{
"ai_search": "not search.ismatch('value', 'content')",
},
"not contains",
),
(
lambda x: (x.id > 0 and x.id < 3) or (x.id > 7 and x.id < 10),
{
"ai_search": "((id gt 0 and id lt 3) or (id gt 7 and id lt 10))",
},
"complex",
),
(
lambda x: x.unknown_field == "value",
{
"ai_search": VectorStoreOperationException,
},
"fail unknown field",
),
(
lambda x: any(x == "a" for x in x.content),
{
"ai_search": NotImplementedError,
},
"comprehension",
),
(
lambda x: ~x.id,
{
"ai_search": NotImplementedError,
},
"invert",
),
(
lambda x: constant, # noqa: F821
{
"ai_search": NotImplementedError,
},
"constant",
),
(
lambda x: x.content.city == "Seattle",
{
"ai_search": "content/city eq 'Seattle'",
},
"nested property",
),
]
return [param(s[0], s[1][store], id=s[2]) for s in sets if store in s[1]]