mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 08:46:22 +02:00
chore: ran linting
This commit is contained in:
parent
772150eb66
commit
de8841fb86
110 changed files with 2673 additions and 1918 deletions
|
|
@ -156,9 +156,7 @@ async def committed_google_data(async_engine):
|
|||
session.add(user)
|
||||
await session.flush()
|
||||
|
||||
space = SearchSpace(
|
||||
name=f"Google Test {uuid.uuid4().hex[:6]}", user_id=user.id
|
||||
)
|
||||
space = SearchSpace(name=f"Google Test {uuid.uuid4().hex[:6]}", user_id=user.id)
|
||||
session.add(space)
|
||||
await session.flush()
|
||||
space_id = space.id
|
||||
|
|
@ -215,7 +213,9 @@ async def committed_google_data(async_engine):
|
|||
def patched_session_factory(async_engine, monkeypatch):
|
||||
"""Replace ``async_session_maker`` in connector_service with one bound to the test engine."""
|
||||
test_maker = async_sessionmaker(async_engine, expire_on_commit=False)
|
||||
monkeypatch.setattr("app.services.connector_service.async_session_maker", test_maker)
|
||||
monkeypatch.setattr(
|
||||
"app.services.connector_service.async_session_maker", test_maker
|
||||
)
|
||||
return test_maker
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,12 @@ import pytest_asyncio
|
|||
|
||||
from app.db import SearchSourceConnectorType
|
||||
|
||||
from .conftest import cleanup_space, make_session_factory, mock_task_logger, seed_connector
|
||||
from .conftest import (
|
||||
cleanup_space,
|
||||
make_session_factory,
|
||||
mock_task_logger,
|
||||
seed_connector,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.integration
|
||||
|
||||
|
|
@ -52,8 +57,10 @@ async def native_calendar(async_engine):
|
|||
async_engine,
|
||||
connector_type=SearchSourceConnectorType.GOOGLE_CALENDAR_CONNECTOR,
|
||||
config={
|
||||
"token": "fake", "refresh_token": "fake",
|
||||
"client_id": "fake", "client_secret": "fake",
|
||||
"token": "fake",
|
||||
"refresh_token": "fake",
|
||||
"client_id": "fake",
|
||||
"client_secret": "fake",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
},
|
||||
name_prefix="cal-native",
|
||||
|
|
@ -66,10 +73,16 @@ async def native_calendar(async_engine):
|
|||
@patch(f"{_INDEXER_MODULE}.GoogleCalendarConnector")
|
||||
@patch(f"{_INDEXER_MODULE}.build_composio_credentials")
|
||||
async def test_composio_calendar_uses_composio_credentials(
|
||||
mock_build_creds, mock_cal_cls, mock_tl_cls, async_engine, composio_calendar,
|
||||
mock_build_creds,
|
||||
mock_cal_cls,
|
||||
mock_tl_cls,
|
||||
async_engine,
|
||||
composio_calendar,
|
||||
):
|
||||
"""Calendar indexer calls build_composio_credentials for a Composio connector."""
|
||||
from app.tasks.connector_indexers.google_calendar_indexer import index_google_calendar_events
|
||||
from app.tasks.connector_indexers.google_calendar_indexer import (
|
||||
index_google_calendar_events,
|
||||
)
|
||||
|
||||
data = composio_calendar
|
||||
mock_creds = MagicMock(name="composio-creds")
|
||||
|
|
@ -77,14 +90,18 @@ async def test_composio_calendar_uses_composio_credentials(
|
|||
mock_tl_cls.return_value = mock_task_logger()
|
||||
|
||||
mock_cal_instance = MagicMock()
|
||||
mock_cal_instance.get_all_primary_calendar_events = AsyncMock(return_value=([], None))
|
||||
mock_cal_instance.get_all_primary_calendar_events = AsyncMock(
|
||||
return_value=([], None)
|
||||
)
|
||||
mock_cal_cls.return_value = mock_cal_instance
|
||||
|
||||
maker = make_session_factory(async_engine)
|
||||
async with maker() as session:
|
||||
await index_google_calendar_events(
|
||||
session=session, connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"], user_id=data["user_id"],
|
||||
session=session,
|
||||
connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"],
|
||||
user_id=data["user_id"],
|
||||
)
|
||||
|
||||
mock_build_creds.assert_called_once_with(_COMPOSIO_ACCOUNT_ID)
|
||||
|
|
@ -96,10 +113,15 @@ async def test_composio_calendar_uses_composio_credentials(
|
|||
@patch(f"{_INDEXER_MODULE}.TaskLoggingService")
|
||||
@patch(f"{_INDEXER_MODULE}.build_composio_credentials")
|
||||
async def test_composio_calendar_without_account_id_returns_error(
|
||||
mock_build_creds, mock_tl_cls, async_engine, composio_calendar_no_id,
|
||||
mock_build_creds,
|
||||
mock_tl_cls,
|
||||
async_engine,
|
||||
composio_calendar_no_id,
|
||||
):
|
||||
"""Calendar indexer returns error when Composio connector lacks connected_account_id."""
|
||||
from app.tasks.connector_indexers.google_calendar_indexer import index_google_calendar_events
|
||||
from app.tasks.connector_indexers.google_calendar_indexer import (
|
||||
index_google_calendar_events,
|
||||
)
|
||||
|
||||
data = composio_calendar_no_id
|
||||
mock_tl_cls.return_value = mock_task_logger()
|
||||
|
|
@ -107,8 +129,10 @@ async def test_composio_calendar_without_account_id_returns_error(
|
|||
maker = make_session_factory(async_engine)
|
||||
async with maker() as session:
|
||||
count, _skipped, error = await index_google_calendar_events(
|
||||
session=session, connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"], user_id=data["user_id"],
|
||||
session=session,
|
||||
connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"],
|
||||
user_id=data["user_id"],
|
||||
)
|
||||
|
||||
assert count == 0
|
||||
|
|
@ -121,23 +145,33 @@ async def test_composio_calendar_without_account_id_returns_error(
|
|||
@patch(f"{_INDEXER_MODULE}.GoogleCalendarConnector")
|
||||
@patch(f"{_INDEXER_MODULE}.build_composio_credentials")
|
||||
async def test_native_calendar_does_not_use_composio_credentials(
|
||||
mock_build_creds, mock_cal_cls, mock_tl_cls, async_engine, native_calendar,
|
||||
mock_build_creds,
|
||||
mock_cal_cls,
|
||||
mock_tl_cls,
|
||||
async_engine,
|
||||
native_calendar,
|
||||
):
|
||||
"""Calendar indexer does NOT call build_composio_credentials for a native connector."""
|
||||
from app.tasks.connector_indexers.google_calendar_indexer import index_google_calendar_events
|
||||
from app.tasks.connector_indexers.google_calendar_indexer import (
|
||||
index_google_calendar_events,
|
||||
)
|
||||
|
||||
data = native_calendar
|
||||
mock_tl_cls.return_value = mock_task_logger()
|
||||
|
||||
mock_cal_instance = MagicMock()
|
||||
mock_cal_instance.get_all_primary_calendar_events = AsyncMock(return_value=([], None))
|
||||
mock_cal_instance.get_all_primary_calendar_events = AsyncMock(
|
||||
return_value=([], None)
|
||||
)
|
||||
mock_cal_cls.return_value = mock_cal_instance
|
||||
|
||||
maker = make_session_factory(async_engine)
|
||||
async with maker() as session:
|
||||
await index_google_calendar_events(
|
||||
session=session, connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"], user_id=data["user_id"],
|
||||
session=session,
|
||||
connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"],
|
||||
user_id=data["user_id"],
|
||||
)
|
||||
|
||||
mock_build_creds.assert_not_called()
|
||||
|
|
|
|||
|
|
@ -14,7 +14,12 @@ import pytest_asyncio
|
|||
|
||||
from app.db import SearchSourceConnectorType
|
||||
|
||||
from .conftest import cleanup_space, make_session_factory, mock_task_logger, seed_connector
|
||||
from .conftest import (
|
||||
cleanup_space,
|
||||
make_session_factory,
|
||||
mock_task_logger,
|
||||
seed_connector,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.integration
|
||||
|
||||
|
|
@ -129,7 +134,9 @@ async def test_composio_connector_without_account_id_returns_error(
|
|||
|
||||
assert count == 0
|
||||
assert error is not None
|
||||
assert "composio_connected_account_id" in error.lower() or "composio" in error.lower()
|
||||
assert (
|
||||
"composio_connected_account_id" in error.lower() or "composio" in error.lower()
|
||||
)
|
||||
mock_build_creds.assert_not_called()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,12 @@ import pytest_asyncio
|
|||
|
||||
from app.db import SearchSourceConnectorType
|
||||
|
||||
from .conftest import cleanup_space, make_session_factory, mock_task_logger, seed_connector
|
||||
from .conftest import (
|
||||
cleanup_space,
|
||||
make_session_factory,
|
||||
mock_task_logger,
|
||||
seed_connector,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.integration
|
||||
|
||||
|
|
@ -52,8 +57,10 @@ async def native_gmail(async_engine):
|
|||
async_engine,
|
||||
connector_type=SearchSourceConnectorType.GOOGLE_GMAIL_CONNECTOR,
|
||||
config={
|
||||
"token": "fake", "refresh_token": "fake",
|
||||
"client_id": "fake", "client_secret": "fake",
|
||||
"token": "fake",
|
||||
"refresh_token": "fake",
|
||||
"client_id": "fake",
|
||||
"client_secret": "fake",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
},
|
||||
name_prefix="gmail-native",
|
||||
|
|
@ -66,10 +73,16 @@ async def native_gmail(async_engine):
|
|||
@patch(f"{_INDEXER_MODULE}.GoogleGmailConnector")
|
||||
@patch(f"{_INDEXER_MODULE}.build_composio_credentials")
|
||||
async def test_composio_gmail_uses_composio_credentials(
|
||||
mock_build_creds, mock_gmail_cls, mock_tl_cls, async_engine, composio_gmail,
|
||||
mock_build_creds,
|
||||
mock_gmail_cls,
|
||||
mock_tl_cls,
|
||||
async_engine,
|
||||
composio_gmail,
|
||||
):
|
||||
"""Gmail indexer calls build_composio_credentials for a Composio connector."""
|
||||
from app.tasks.connector_indexers.google_gmail_indexer import index_google_gmail_messages
|
||||
from app.tasks.connector_indexers.google_gmail_indexer import (
|
||||
index_google_gmail_messages,
|
||||
)
|
||||
|
||||
data = composio_gmail
|
||||
mock_creds = MagicMock(name="composio-creds")
|
||||
|
|
@ -83,8 +96,10 @@ async def test_composio_gmail_uses_composio_credentials(
|
|||
maker = make_session_factory(async_engine)
|
||||
async with maker() as session:
|
||||
await index_google_gmail_messages(
|
||||
session=session, connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"], user_id=data["user_id"],
|
||||
session=session,
|
||||
connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"],
|
||||
user_id=data["user_id"],
|
||||
)
|
||||
|
||||
mock_build_creds.assert_called_once_with(_COMPOSIO_ACCOUNT_ID)
|
||||
|
|
@ -96,10 +111,15 @@ async def test_composio_gmail_uses_composio_credentials(
|
|||
@patch(f"{_INDEXER_MODULE}.TaskLoggingService")
|
||||
@patch(f"{_INDEXER_MODULE}.build_composio_credentials")
|
||||
async def test_composio_gmail_without_account_id_returns_error(
|
||||
mock_build_creds, mock_tl_cls, async_engine, composio_gmail_no_id,
|
||||
mock_build_creds,
|
||||
mock_tl_cls,
|
||||
async_engine,
|
||||
composio_gmail_no_id,
|
||||
):
|
||||
"""Gmail indexer returns error when Composio connector lacks connected_account_id."""
|
||||
from app.tasks.connector_indexers.google_gmail_indexer import index_google_gmail_messages
|
||||
from app.tasks.connector_indexers.google_gmail_indexer import (
|
||||
index_google_gmail_messages,
|
||||
)
|
||||
|
||||
data = composio_gmail_no_id
|
||||
mock_tl_cls.return_value = mock_task_logger()
|
||||
|
|
@ -107,8 +127,10 @@ async def test_composio_gmail_without_account_id_returns_error(
|
|||
maker = make_session_factory(async_engine)
|
||||
async with maker() as session:
|
||||
count, _skipped, error = await index_google_gmail_messages(
|
||||
session=session, connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"], user_id=data["user_id"],
|
||||
session=session,
|
||||
connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"],
|
||||
user_id=data["user_id"],
|
||||
)
|
||||
|
||||
assert count == 0
|
||||
|
|
@ -121,10 +143,16 @@ async def test_composio_gmail_without_account_id_returns_error(
|
|||
@patch(f"{_INDEXER_MODULE}.GoogleGmailConnector")
|
||||
@patch(f"{_INDEXER_MODULE}.build_composio_credentials")
|
||||
async def test_native_gmail_does_not_use_composio_credentials(
|
||||
mock_build_creds, mock_gmail_cls, mock_tl_cls, async_engine, native_gmail,
|
||||
mock_build_creds,
|
||||
mock_gmail_cls,
|
||||
mock_tl_cls,
|
||||
async_engine,
|
||||
native_gmail,
|
||||
):
|
||||
"""Gmail indexer does NOT call build_composio_credentials for a native connector."""
|
||||
from app.tasks.connector_indexers.google_gmail_indexer import index_google_gmail_messages
|
||||
from app.tasks.connector_indexers.google_gmail_indexer import (
|
||||
index_google_gmail_messages,
|
||||
)
|
||||
|
||||
data = native_gmail
|
||||
mock_tl_cls.return_value = mock_task_logger()
|
||||
|
|
@ -136,8 +164,10 @@ async def test_native_gmail_does_not_use_composio_credentials(
|
|||
maker = make_session_factory(async_engine)
|
||||
async with maker() as session:
|
||||
await index_google_gmail_messages(
|
||||
session=session, connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"], user_id=data["user_id"],
|
||||
session=session,
|
||||
connector_id=data["connector_id"],
|
||||
search_space_id=data["search_space_id"],
|
||||
user_id=data["user_id"],
|
||||
)
|
||||
|
||||
mock_build_creds.assert_not_called()
|
||||
|
|
|
|||
|
|
@ -39,9 +39,7 @@ async def test_list_of_types_returns_both_matching_doc_types(
|
|||
assert "FILE" not in returned_types
|
||||
|
||||
|
||||
async def test_single_string_type_returns_only_that_type(
|
||||
db_session, seed_google_docs
|
||||
):
|
||||
async def test_single_string_type_returns_only_that_type(db_session, seed_google_docs):
|
||||
"""Searching with a single string type returns only documents of that exact type."""
|
||||
space_id = seed_google_docs["search_space"].id
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,9 @@ async def test_gmail_accepts_valid_composio_credentials(mock_build):
|
|||
mock_build.return_value = mock_service
|
||||
|
||||
connector = GoogleGmailConnector(
|
||||
creds, session=MagicMock(), user_id="test-user",
|
||||
creds,
|
||||
session=MagicMock(),
|
||||
user_id="test-user",
|
||||
)
|
||||
|
||||
profile, error = await connector.get_user_profile()
|
||||
|
|
@ -76,7 +78,9 @@ async def test_gmail_accepts_valid_composio_credentials(mock_build):
|
|||
|
||||
@patch("app.connectors.google_gmail_connector.Request")
|
||||
@patch("app.connectors.google_gmail_connector.build")
|
||||
async def test_gmail_refreshes_expired_composio_credentials(mock_build, mock_request_cls):
|
||||
async def test_gmail_refreshes_expired_composio_credentials(
|
||||
mock_build, mock_request_cls
|
||||
):
|
||||
"""GoogleGmailConnector handles expired Composio credentials via refresh_handler
|
||||
without attempting DB persistence."""
|
||||
from app.connectors.google_gmail_connector import GoogleGmailConnector
|
||||
|
|
@ -95,7 +99,9 @@ async def test_gmail_refreshes_expired_composio_credentials(mock_build, mock_req
|
|||
|
||||
mock_session = AsyncMock()
|
||||
connector = GoogleGmailConnector(
|
||||
creds, session=mock_session, user_id="test-user",
|
||||
creds,
|
||||
session=mock_session,
|
||||
user_id="test-user",
|
||||
)
|
||||
|
||||
profile, error = await connector.get_user_profile()
|
||||
|
|
@ -128,7 +134,9 @@ async def test_calendar_accepts_valid_composio_credentials(mock_build):
|
|||
mock_build.return_value = mock_service
|
||||
|
||||
connector = GoogleCalendarConnector(
|
||||
creds, session=MagicMock(), user_id="test-user",
|
||||
creds,
|
||||
session=MagicMock(),
|
||||
user_id="test-user",
|
||||
)
|
||||
|
||||
calendars, error = await connector.get_calendars()
|
||||
|
|
@ -141,7 +149,9 @@ async def test_calendar_accepts_valid_composio_credentials(mock_build):
|
|||
|
||||
@patch("app.connectors.google_calendar_connector.Request")
|
||||
@patch("app.connectors.google_calendar_connector.build")
|
||||
async def test_calendar_refreshes_expired_composio_credentials(mock_build, mock_request_cls):
|
||||
async def test_calendar_refreshes_expired_composio_credentials(
|
||||
mock_build, mock_request_cls
|
||||
):
|
||||
"""GoogleCalendarConnector handles expired Composio credentials via refresh_handler
|
||||
without attempting DB persistence."""
|
||||
from app.connectors.google_calendar_connector import GoogleCalendarConnector
|
||||
|
|
@ -157,7 +167,9 @@ async def test_calendar_refreshes_expired_composio_credentials(mock_build, mock_
|
|||
|
||||
mock_session = AsyncMock()
|
||||
connector = GoogleCalendarConnector(
|
||||
creds, session=mock_session, user_id="test-user",
|
||||
creds,
|
||||
session=mock_session,
|
||||
user_id="test-user",
|
||||
)
|
||||
|
||||
calendars, error = await connector.get_calendars()
|
||||
|
|
@ -191,7 +203,9 @@ async def test_drive_client_uses_prebuilt_composio_credentials(mock_build):
|
|||
mock_build.return_value = mock_service
|
||||
|
||||
client = GoogleDriveClient(
|
||||
session=MagicMock(), connector_id=999, credentials=creds,
|
||||
session=MagicMock(),
|
||||
connector_id=999,
|
||||
credentials=creds,
|
||||
)
|
||||
|
||||
files, next_token, error = await client.list_files()
|
||||
|
|
@ -218,7 +232,9 @@ async def test_drive_client_prebuilt_creds_skip_db_loading(mock_build, mock_get_
|
|||
mock_build.return_value = mock_service
|
||||
|
||||
client = GoogleDriveClient(
|
||||
session=MagicMock(), connector_id=999, credentials=creds,
|
||||
session=MagicMock(),
|
||||
connector_id=999,
|
||||
credentials=creds,
|
||||
)
|
||||
|
||||
await client.list_files()
|
||||
|
|
|
|||
|
|
@ -20,8 +20,14 @@ def test_drive_indexer_accepts_both_native_and_composio():
|
|||
ACCEPTED_DRIVE_CONNECTOR_TYPES,
|
||||
)
|
||||
|
||||
assert SearchSourceConnectorType.GOOGLE_DRIVE_CONNECTOR in ACCEPTED_DRIVE_CONNECTOR_TYPES
|
||||
assert SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR in ACCEPTED_DRIVE_CONNECTOR_TYPES
|
||||
assert (
|
||||
SearchSourceConnectorType.GOOGLE_DRIVE_CONNECTOR
|
||||
in ACCEPTED_DRIVE_CONNECTOR_TYPES
|
||||
)
|
||||
assert (
|
||||
SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR
|
||||
in ACCEPTED_DRIVE_CONNECTOR_TYPES
|
||||
)
|
||||
|
||||
|
||||
def test_gmail_indexer_accepts_both_native_and_composio():
|
||||
|
|
@ -30,8 +36,14 @@ def test_gmail_indexer_accepts_both_native_and_composio():
|
|||
ACCEPTED_GMAIL_CONNECTOR_TYPES,
|
||||
)
|
||||
|
||||
assert SearchSourceConnectorType.GOOGLE_GMAIL_CONNECTOR in ACCEPTED_GMAIL_CONNECTOR_TYPES
|
||||
assert SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR in ACCEPTED_GMAIL_CONNECTOR_TYPES
|
||||
assert (
|
||||
SearchSourceConnectorType.GOOGLE_GMAIL_CONNECTOR
|
||||
in ACCEPTED_GMAIL_CONNECTOR_TYPES
|
||||
)
|
||||
assert (
|
||||
SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR
|
||||
in ACCEPTED_GMAIL_CONNECTOR_TYPES
|
||||
)
|
||||
|
||||
|
||||
def test_calendar_indexer_accepts_both_native_and_composio():
|
||||
|
|
@ -40,14 +52,29 @@ def test_calendar_indexer_accepts_both_native_and_composio():
|
|||
ACCEPTED_CALENDAR_CONNECTOR_TYPES,
|
||||
)
|
||||
|
||||
assert SearchSourceConnectorType.GOOGLE_CALENDAR_CONNECTOR in ACCEPTED_CALENDAR_CONNECTOR_TYPES
|
||||
assert SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR in ACCEPTED_CALENDAR_CONNECTOR_TYPES
|
||||
assert (
|
||||
SearchSourceConnectorType.GOOGLE_CALENDAR_CONNECTOR
|
||||
in ACCEPTED_CALENDAR_CONNECTOR_TYPES
|
||||
)
|
||||
assert (
|
||||
SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR
|
||||
in ACCEPTED_CALENDAR_CONNECTOR_TYPES
|
||||
)
|
||||
|
||||
|
||||
def test_composio_connector_types_set_covers_all_google_services():
|
||||
"""COMPOSIO_GOOGLE_CONNECTOR_TYPES should contain all three Composio Google types."""
|
||||
from app.utils.google_credentials import COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
|
||||
assert SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR in COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
assert SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR in COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
assert SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR in COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
assert (
|
||||
SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR
|
||||
in COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
)
|
||||
assert (
|
||||
SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR
|
||||
in COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
)
|
||||
assert (
|
||||
SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR
|
||||
in COMPOSIO_GOOGLE_CONNECTOR_TYPES
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue