diff --git a/surfsense_backend/tests/e2e/fakes/composio_module.py b/surfsense_backend/tests/e2e/fakes/composio_module.py index 43ada4352..38c4d4c46 100644 --- a/surfsense_backend/tests/e2e/fakes/composio_module.py +++ b/surfsense_backend/tests/e2e/fakes/composio_module.py @@ -239,7 +239,9 @@ class _AuthConfigs(_StrictFakeMixin): # SDK lets you have multiple, but one is enough for E2E. return _AuthConfigsListResult( items=[ - _AuthConfig(config_id="auth-config-googledrive", toolkit_slug="googledrive"), + _AuthConfig( + config_id="auth-config-googledrive", toolkit_slug="googledrive" + ), _AuthConfig(config_id="auth-config-gmail", toolkit_slug="gmail"), _AuthConfig( config_id="auth-config-googlecalendar", @@ -289,7 +291,9 @@ class _Tools(_StrictFakeMixin): if slug == "GOOGLEDRIVE_GET_CHANGES_START_PAGE_TOKEN": return {"data": {"startPageToken": "fake-start-page-token-1"}} if slug == "GOOGLEDRIVE_LIST_CHANGES": - return {"data": {"changes": [], "newStartPageToken": "fake-start-page-token-1"}} + return { + "data": {"changes": [], "newStartPageToken": "fake-start-page-token-1"} + } if slug == "GOOGLEDRIVE_GET_ABOUT": # Used by ComposioService.get_connected_account_email for # googledrive. Returning a fake email lets the connector get a @@ -381,7 +385,9 @@ def _extract_quoted_value(q: str, anchor: str) -> str | None: return after_first_quote[:second_quote_idx] -def _filter_drive_files_for_query(q: str, files: list[dict[str, Any]]) -> list[dict[str, Any]]: +def _filter_drive_files_for_query( + q: str, files: list[dict[str, Any]] +) -> list[dict[str, Any]]: filtered = list(files) if "trashed = false" in q: diff --git a/surfsense_backend/tests/e2e/fakes/confluence_indexer.py b/surfsense_backend/tests/e2e/fakes/confluence_indexer.py index 0e2373c80..3629b18b7 100644 --- a/surfsense_backend/tests/e2e/fakes/confluence_indexer.py +++ b/surfsense_backend/tests/e2e/fakes/confluence_indexer.py @@ -31,7 +31,9 @@ class _FakeConfluenceHistoryConnector: include_comments: bool = False, ) -> tuple[list[dict[str, Any]], None]: if not start_date or not end_date: - raise ValueError("Confluence indexer fake expected start_date and end_date.") + raise ValueError( + "Confluence indexer fake expected start_date and end_date." + ) del include_comments return _FIXTURE["pages"], None diff --git a/surfsense_backend/tests/e2e/fakes/confluence_oauth.py b/surfsense_backend/tests/e2e/fakes/confluence_oauth.py index df3859e2f..53da99e47 100644 --- a/surfsense_backend/tests/e2e/fakes/confluence_oauth.py +++ b/surfsense_backend/tests/e2e/fakes/confluence_oauth.py @@ -75,7 +75,9 @@ class _FakeHttpxAsyncClient(_StrictFakeMixin): f"Unexpected fake Confluence OAuth code: {data.get('code')!r}" ) if not data.get("client_id") or not data.get("client_secret"): - raise ValueError("Confluence OAuth token exchange missing client creds.") + raise ValueError( + "Confluence OAuth token exchange missing client creds." + ) if "/api/v1/auth/confluence/connector/callback" not in str( data.get("redirect_uri", "") ): diff --git a/surfsense_backend/tests/e2e/fakes/embeddings.py b/surfsense_backend/tests/e2e/fakes/embeddings.py index 4d5232ad8..ab9e24df9 100644 --- a/surfsense_backend/tests/e2e/fakes/embeddings.py +++ b/surfsense_backend/tests/e2e/fakes/embeddings.py @@ -37,9 +37,7 @@ def fake_embed_texts(texts: list[str]) -> list[np.ndarray]: if not texts: return [] dim = _embedding_dim() - return [ - np.full(shape=(dim,), fill_value=0.1, dtype=np.float32) for _ in texts - ] + return [np.full(shape=(dim,), fill_value=0.1, dtype=np.float32) for _ in texts] def install(patches: list[Any]) -> None: @@ -60,7 +58,10 @@ def install(patches: list[Any]) -> None: ("app.indexing_pipeline.document_embedder.embed_text", fake_embed_text), ("app.indexing_pipeline.document_embedder.embed_texts", fake_embed_texts), # Pipeline service binding (the actual call site for indexing.index) - ("app.indexing_pipeline.indexing_pipeline_service.embed_texts", fake_embed_texts), + ( + "app.indexing_pipeline.indexing_pipeline_service.embed_texts", + fake_embed_texts, + ), ] for target, replacement in targets: try: diff --git a/surfsense_backend/tests/e2e/fakes/jira_module.py b/surfsense_backend/tests/e2e/fakes/jira_module.py index 234d0ff44..d67531218 100644 --- a/surfsense_backend/tests/e2e/fakes/jira_module.py +++ b/surfsense_backend/tests/e2e/fakes/jira_module.py @@ -85,18 +85,15 @@ async def _call_tool( raise ValueError( f"Unexpected Jira getAccessibleAtlassianResources args: {arguments!r}" ) - text = ( - f"{site['name']}\n" - f"cloud_id: {site['cloud_id']}\n" - f"url: {site['url']}" - ) + text = f"{site['name']}\ncloud_id: {site['cloud_id']}\nurl: {site['url']}" return SimpleNamespace(content=[SimpleNamespace(text=text)]) if tool_name == "searchJiraIssuesUsingJql": jql = str(arguments.get("jql", "")) - if issue["summary"].lower() not in jql.lower() and issue[ - "key" - ].lower() not in jql.lower(): + if ( + issue["summary"].lower() not in jql.lower() + and issue["key"].lower() not in jql.lower() + ): raise ValueError(f"Unexpected Jira JQL query: {jql!r}") text = _issue_text(issue) return SimpleNamespace(content=[SimpleNamespace(text=text)]) diff --git a/surfsense_backend/tests/e2e/fakes/mcp_oauth_runtime.py b/surfsense_backend/tests/e2e/fakes/mcp_oauth_runtime.py index 22cb3b36c..5eda4b67e 100644 --- a/surfsense_backend/tests/e2e/fakes/mcp_oauth_runtime.py +++ b/surfsense_backend/tests/e2e/fakes/mcp_oauth_runtime.py @@ -92,8 +92,7 @@ async def _fake_discover_oauth_metadata( raise NotImplementedError(f"Unexpected MCP OAuth discovery url={mcp_url!r}") if origin_override != handler.expected_origin_override: raise ValueError( - f"Unexpected MCP OAuth origin_override for {mcp_url!r}: " - f"{origin_override!r}" + f"Unexpected MCP OAuth origin_override for {mcp_url!r}: {origin_override!r}" ) return dict(handler.discovery_metadata) diff --git a/surfsense_backend/tests/e2e/fakes/mcp_runtime.py b/surfsense_backend/tests/e2e/fakes/mcp_runtime.py index 821b7c839..e772bb63a 100644 --- a/surfsense_backend/tests/e2e/fakes/mcp_runtime.py +++ b/surfsense_backend/tests/e2e/fakes/mcp_runtime.py @@ -64,9 +64,11 @@ class _FakeStreamableHttpClient(_StrictFakeMixin): self.handler = handler async def __aenter__(self) -> tuple[_FakeEndpoint, _FakeEndpoint, None]: - return _FakeEndpoint(self.url, self.handler), _FakeEndpoint( - self.url, self.handler - ), None + return ( + _FakeEndpoint(self.url, self.handler), + _FakeEndpoint(self.url, self.handler), + None, + ) async def __aexit__(self, exc_type: Any, exc: Any, tb: Any) -> None: del exc_type, exc, tb diff --git a/surfsense_backend/tests/e2e/fakes/native_google.py b/surfsense_backend/tests/e2e/fakes/native_google.py index 43b0e4eec..73c8cc738 100644 --- a/surfsense_backend/tests/e2e/fakes/native_google.py +++ b/surfsense_backend/tests/e2e/fakes/native_google.py @@ -63,7 +63,9 @@ class _StrictFakeMixin: class _FakeFlow(_StrictFakeMixin): _component_name = "Flow" - def __init__(self, *, redirect_uri: str | None = None, scopes: list[str] | None = None): + def __init__( + self, *, redirect_uri: str | None = None, scopes: list[str] | None = None + ): self.redirect_uri = redirect_uri self.scopes = scopes or [] self.code_verifier: str | None = None @@ -88,9 +90,7 @@ class _FakeFlow(_StrictFakeMixin): query = parse_qs(parsed.query) query["code"] = ["fake-native-drive-oauth-code"] query["state"] = [state] - redirect = urlunparse( - parsed._replace(query=urlencode(query, doseq=True)) - ) + redirect = urlunparse(parsed._replace(query=urlencode(query, doseq=True))) return redirect, state def fetch_token(self, *, code: str, **_: Any) -> None: @@ -213,7 +213,9 @@ class _FakeGmailUsers(_StrictFakeMixin): def getProfile(self, **kwargs: Any) -> _FakeRequest: # noqa: N802 user_id = kwargs.get("userId") if user_id != "me": - raise NotImplementedError(f"Unexpected fake Gmail profile userId={user_id!r}") + raise NotImplementedError( + f"Unexpected fake Gmail profile userId={user_id!r}" + ) return _FakeRequest({"emailAddress": "native-drive-e2e@surfsense.example"}) def messages(self) -> _FakeGmailMessages: @@ -326,7 +328,9 @@ def _extract_quoted_value(q: str, anchor: str) -> str | None: return after_first_quote[:second_quote_idx] -def _filter_drive_files_for_query(q: str, files: list[dict[str, Any]]) -> list[dict[str, Any]]: +def _filter_drive_files_for_query( + q: str, files: list[dict[str, Any]] +) -> list[dict[str, Any]]: filtered = list(files) if "trashed = false" in q: @@ -386,14 +390,14 @@ def _calendar_event_in_range( parsed_max = _parse_rfc3339(time_max) if parsed_min and event_start < parsed_min: return False - if parsed_max and event_start > parsed_max: - return False - return True + return not (parsed_max and event_start > parsed_max) def _gmail_detail_to_native_message(detail: dict[str, Any]) -> dict[str, Any]: message_text = detail.get("messageText", "") - encoded_body = base64.urlsafe_b64encode(message_text.encode("utf-8")).decode("ascii") + encoded_body = base64.urlsafe_b64encode(message_text.encode("utf-8")).decode( + "ascii" + ) return { "id": detail.get("id"), @@ -429,10 +433,12 @@ def install(active_patches: list[Any]) -> None: ("app.agents.new_chat.tools.google_calendar.update_event.build", _fake_build), ("app.agents.new_chat.tools.google_calendar.delete_event.build", _fake_build), ("googleapiclient.http.MediaIoBaseDownload", _FakeMediaIoBaseDownload), - ("app.connectors.google_drive.client._build_thread_http", lambda credentials: None), + ( + "app.connectors.google_drive.client._build_thread_http", + lambda credentials: None, + ), ] for target, replacement in targets: p = patch(target, replacement) p.start() active_patches.append(p) - diff --git a/surfsense_backend/tests/e2e/fakes/onedrive_graph.py b/surfsense_backend/tests/e2e/fakes/onedrive_graph.py index 7081b9724..1fdacdc0e 100644 --- a/surfsense_backend/tests/e2e/fakes/onedrive_graph.py +++ b/surfsense_backend/tests/e2e/fakes/onedrive_graph.py @@ -84,8 +84,16 @@ class _FakeOneDriveClient(_StrictFakeMixin): if delta_link: folder_key = delta_link.rsplit("/", 1)[-1].removesuffix("-delta") if folder_key not in _ONEDRIVE_FIXTURE: - return [], None, f"E2E OneDrive fake has no delta for folder={folder_key!r}." - return [], f"https://graph.microsoft.com/v1.0/fake-delta/{folder_key}-delta", None + return ( + [], + None, + f"E2E OneDrive fake has no delta for folder={folder_key!r}.", + ) + return ( + [], + f"https://graph.microsoft.com/v1.0/fake-delta/{folder_key}-delta", + None, + ) class _FakeAsyncClient(_StrictFakeMixin): @@ -170,7 +178,10 @@ def install(active_patches: list[Any]) -> None: targets = [ ("app.routes.onedrive_add_connector_route.httpx", _FakeHttpxModule()), ("app.routes.onedrive_add_connector_route.OneDriveClient", _FakeOneDriveClient), - ("app.tasks.connector_indexers.onedrive_indexer.OneDriveClient", _FakeOneDriveClient), + ( + "app.tasks.connector_indexers.onedrive_indexer.OneDriveClient", + _FakeOneDriveClient, + ), ("app.connectors.onedrive.client.httpx", _FakeHttpxModule()), ] for target, replacement in targets: diff --git a/surfsense_backend/tests/e2e/fakes/slack_module.py b/surfsense_backend/tests/e2e/fakes/slack_module.py index dfb011e3c..e63c6e049 100644 --- a/surfsense_backend/tests/e2e/fakes/slack_module.py +++ b/surfsense_backend/tests/e2e/fakes/slack_module.py @@ -131,7 +131,7 @@ async def _fake_exchange_code_for_tokens( timeout: float = 30.0, ) -> dict[str, Any]: if token_endpoint != _TOKEN_URL: - return await mcp_oauth_runtime._fake_exchange_code_for_tokens( # noqa: SLF001 + return await mcp_oauth_runtime._fake_exchange_code_for_tokens( token_endpoint, code, redirect_uri, diff --git a/surfsense_backend/tests/e2e/run_celery.py b/surfsense_backend/tests/e2e/run_celery.py index b28f67ec1..407fecde3 100644 --- a/surfsense_backend/tests/e2e/run_celery.py +++ b/surfsense_backend/tests/e2e/run_celery.py @@ -77,9 +77,7 @@ logging.basicConfig( datefmt="%Y-%m-%d %H:%M:%S", ) logger = logging.getLogger("surfsense.e2e.celery") -logger.warning( - "*** SURFSENSE E2E CELERY WORKER — fake Composio + LLM + embeddings ***" -) +logger.warning("*** SURFSENSE E2E CELERY WORKER — fake Composio + LLM + embeddings ***") # --------------------------------------------------------------------------- diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_memory_response_content.py b/surfsense_backend/tests/unit/agents/new_chat/test_memory_response_content.py index 535e4e940..1f338ee3e 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_memory_response_content.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_memory_response_content.py @@ -47,7 +47,9 @@ def test_extract_text_content_ignores_thinking_blocks_and_keeps_markdown_text() assert extract_text_content(content).strip() == markdown.strip() -def test_extract_text_content_returns_empty_when_only_thinking_blocks_are_present() -> None: +def test_extract_text_content_returns_empty_when_only_thinking_blocks_are_present() -> ( + None +): content = [ {"type": "thinking", "thinking": "No durable fact."}, {"type": "thinking", "thinking": "Return no update."}, diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py b/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py index eda5be150..47059ade6 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py @@ -141,9 +141,7 @@ class TestNormalizeDecision: assert _normalize_permission_decision(decision) == {"decision_type": "reject"} def test_lc_envelope_reject_with_message_carries_feedback(self) -> None: - decision = { - "decisions": [{"type": "reject", "message": "wrong recipient"}] - } + decision = {"decisions": [{"type": "reject", "message": "wrong recipient"}]} out = _normalize_permission_decision(decision) assert out == {"decision_type": "reject", "feedback": "wrong recipient"} diff --git a/surfsense_web/app/dashboard/[search_space_id]/purchase-success/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/purchase-success/page.tsx index b3d504ed5..8eaec3e5a 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/purchase-success/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/purchase-success/page.tsx @@ -119,8 +119,7 @@ export default function PurchaseSuccessPage() { "Stripe reported the checkout as failed or expired. Your card was not charged."} {state.kind === "error" && "Don't worry — if your card was charged, your purchase will still apply within a minute or two."} - {state.kind === "no_session" && - "Your purchase is being applied to your account."} + {state.kind === "no_session" && "Your purchase is being applied to your account."} @@ -134,7 +133,8 @@ export default function PurchaseSuccessPage() { )} {state.kind === "completed" && state.data.purchase_type === "premium_tokens" && (

- New premium credit balance: {formatCredit(state.data.premium_credit_micros_limit ?? 0)} + New premium credit balance:{" "} + {formatCredit(state.data.premium_credit_micros_limit ?? 0)}

)} {state.kind === "error" && ( diff --git a/surfsense_web/tests/connectors/clickup/journey.spec.ts b/surfsense_web/tests/connectors/clickup/journey.spec.ts index 6ed2017a6..5d40b9609 100644 --- a/surfsense_web/tests/connectors/clickup/journey.spec.ts +++ b/surfsense_web/tests/connectors/clickup/journey.spec.ts @@ -34,7 +34,9 @@ test.describe("ClickUp connector journey", () => { client_id: "fake-clickup-mcp-client-id", token_endpoint: "https://mcp.clickup.com/token", }); - expect((clickupConnector.config.mcp_oauth as Record).access_token).toBeTruthy(); + expect( + (clickupConnector.config.mcp_oauth as Record).access_token + ).toBeTruthy(); expect(clickupConnector.config.access_token).toBeUndefined(); expect(clickupConnector.config.refresh_token).toBeUndefined(); diff --git a/surfsense_web/tests/fixtures/connectors/composio-drive.fixture.ts b/surfsense_web/tests/fixtures/connectors/composio-drive.fixture.ts index 1ba9bcb9d..470469cfd 100644 --- a/surfsense_web/tests/fixtures/connectors/composio-drive.fixture.ts +++ b/surfsense_web/tests/fixtures/connectors/composio-drive.fixture.ts @@ -1,8 +1,4 @@ -import { - type ConnectorRow, - deleteConnector, - runComposioOAuth, -} from "../../helpers/api/connectors"; +import { type ConnectorRow, deleteConnector, runComposioOAuth } from "../../helpers/api/connectors"; import { searchSpaceFixtures } from "../search-space.fixture"; export type ComposioDriveFixtures = { @@ -16,12 +12,7 @@ export type ComposioDriveFixtures = { export const composioDriveFixtures = searchSpaceFixtures.extend({ composioDriveConnector: async ({ request, apiToken, searchSpace }, use) => { - const { connector } = await runComposioOAuth( - request, - apiToken, - searchSpace.id, - "googledrive" - ); + const { connector } = await runComposioOAuth(request, apiToken, searchSpace.id, "googledrive"); if (!connector) { throw new Error( "composioDriveConnector fixture: OAuth completed but no connector was created. " + diff --git a/surfsense_web/tests/fixtures/connectors/composio-gmail.fixture.ts b/surfsense_web/tests/fixtures/connectors/composio-gmail.fixture.ts index 04c93b08e..ab2cf6f00 100644 --- a/surfsense_web/tests/fixtures/connectors/composio-gmail.fixture.ts +++ b/surfsense_web/tests/fixtures/connectors/composio-gmail.fixture.ts @@ -1,8 +1,4 @@ -import { - type ConnectorRow, - deleteConnector, - runComposioOAuth, -} from "../../helpers/api/connectors"; +import { type ConnectorRow, deleteConnector, runComposioOAuth } from "../../helpers/api/connectors"; import { searchSpaceFixtures } from "../search-space.fixture"; export type ComposioGmailFixtures = { @@ -16,12 +12,7 @@ export type ComposioGmailFixtures = { export const composioGmailFixtures = searchSpaceFixtures.extend({ composioGmailConnector: async ({ request, apiToken, searchSpace }, use) => { - const { connector } = await runComposioOAuth( - request, - apiToken, - searchSpace.id, - "gmail" - ); + const { connector } = await runComposioOAuth(request, apiToken, searchSpace.id, "gmail"); if (!connector) { throw new Error( "composioGmailConnector fixture: OAuth completed but no connector was created. " + diff --git a/surfsense_web/tests/fixtures/connectors/native-calendar.fixture.ts b/surfsense_web/tests/fixtures/connectors/native-calendar.fixture.ts index e8ba08828..be2ed4fb1 100644 --- a/surfsense_web/tests/fixtures/connectors/native-calendar.fixture.ts +++ b/surfsense_web/tests/fixtures/connectors/native-calendar.fixture.ts @@ -16,11 +16,7 @@ export type NativeCalendarFixtures = { export const nativeCalendarFixtures = searchSpaceFixtures.extend({ nativeCalendarConnector: async ({ request, apiToken, searchSpace }, use) => { - const { connector } = await runNativeGoogleCalendarOAuth( - request, - apiToken, - searchSpace.id - ); + const { connector } = await runNativeGoogleCalendarOAuth(request, apiToken, searchSpace.id); if (!connector) { throw new Error( "nativeCalendarConnector fixture: OAuth completed but no GOOGLE_CALENDAR_CONNECTOR was created. " + diff --git a/surfsense_web/tests/fixtures/index.ts b/surfsense_web/tests/fixtures/index.ts index 9c7151112..605e8492a 100644 --- a/surfsense_web/tests/fixtures/index.ts +++ b/surfsense_web/tests/fixtures/index.ts @@ -45,10 +45,10 @@ */ export { expect } from "@playwright/test"; export { chatThreadFixtures } from "./chat-thread.fixture"; +export { clickupFixtures } from "./connectors/clickup.fixture"; export { composioCalendarFixtures } from "./connectors/composio-calendar.fixture"; export { composioDriveFixtures } from "./connectors/composio-drive.fixture"; export { composioGmailFixtures } from "./connectors/composio-gmail.fixture"; -export { clickupFixtures } from "./connectors/clickup.fixture"; export { confluenceFixtures } from "./connectors/confluence.fixture"; export { jiraFixtures } from "./connectors/jira.fixture"; export { linearFixtures } from "./connectors/linear.fixture"; @@ -62,10 +62,10 @@ export { slackFixtures } from "./connectors/slack.fixture"; export { searchSpaceFixtures } from "./search-space.fixture"; import { type ChatThreadFixtures, chatThreadFixtures } from "./chat-thread.fixture"; +import { clickupFixtures } from "./connectors/clickup.fixture"; import { composioCalendarFixtures } from "./connectors/composio-calendar.fixture"; import { composioDriveFixtures } from "./connectors/composio-drive.fixture"; import { composioGmailFixtures } from "./connectors/composio-gmail.fixture"; -import { clickupFixtures } from "./connectors/clickup.fixture"; import { confluenceFixtures } from "./connectors/confluence.fixture"; import { jiraFixtures } from "./connectors/jira.fixture"; import { linearFixtures } from "./connectors/linear.fixture"; diff --git a/surfsense_web/tests/fixtures/search-space.fixture.ts b/surfsense_web/tests/fixtures/search-space.fixture.ts index 7773aa60c..defde7048 100644 --- a/surfsense_web/tests/fixtures/search-space.fixture.ts +++ b/surfsense_web/tests/fixtures/search-space.fixture.ts @@ -1,11 +1,11 @@ import { test as base } from "@playwright/test"; import { loginAsTestUser } from "../helpers/api/auth"; -import { uniqueSearchSpaceName } from "../helpers/canary"; import { createSearchSpace, deleteSearchSpace, type SearchSpaceRow, } from "../helpers/api/search-spaces"; +import { uniqueSearchSpaceName } from "../helpers/canary"; export type SearchSpaceFixtures = { /** diff --git a/surfsense_web/tests/helpers/api/auth.ts b/surfsense_web/tests/helpers/api/auth.ts index f7bd697fd..c912afedc 100644 --- a/surfsense_web/tests/helpers/api/auth.ts +++ b/surfsense_web/tests/helpers/api/auth.ts @@ -9,8 +9,7 @@ import type { APIRequestContext } from "@playwright/test"; * is set up separately by tests/auth.setup.ts. */ -export const BACKEND_URL = - process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL || "http://localhost:8000"; +export const BACKEND_URL = process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL || "http://localhost:8000"; const TEST_USER_EMAIL = process.env.PLAYWRIGHT_TEST_EMAIL || "test@surfsense.net"; const TEST_USER_PASSWORD = process.env.PLAYWRIGHT_TEST_PASSWORD || "TestPassword123!"; @@ -43,10 +42,7 @@ export async function loginAsTestUser(request: APIRequestContext): Promise -): Record { +export function authHeaders(token: string, extra?: Record): Record { return { Authorization: `Bearer ${token}`, "Content-Type": "application/json", diff --git a/surfsense_web/tests/helpers/api/documents.ts b/surfsense_web/tests/helpers/api/documents.ts index 051728935..92055602b 100644 --- a/surfsense_web/tests/helpers/api/documents.ts +++ b/surfsense_web/tests/helpers/api/documents.ts @@ -25,17 +25,14 @@ export async function listDocuments( { headers: authHeaders(token) } ); if (!response.ok()) { - throw new Error( - `listDocuments failed (${response.status()}): ${await response.text()}` - ); + throw new Error(`listDocuments failed (${response.status()}): ${await response.text()}`); } const body = (await response.json()) as Paginated | DocumentRow[]; return Array.isArray(body) ? body : (body.items ?? []); } export function isDocumentReady(doc: DocumentRow): boolean { - const state = - typeof doc.status === "string" ? doc.status : doc.status?.state; + const state = typeof doc.status === "string" ? doc.status : doc.status?.state; return state === "ready" || state === "READY"; } @@ -61,9 +58,7 @@ export async function getEditorContent( { headers: authHeaders(token) } ); if (!response.ok()) { - throw new Error( - `getEditorContent failed (${response.status()}): ${await response.text()}` - ); + throw new Error(`getEditorContent failed (${response.status()}): ${await response.text()}`); } return (await response.json()) as EditorContent; } diff --git a/surfsense_web/tests/helpers/api/search-spaces.ts b/surfsense_web/tests/helpers/api/search-spaces.ts index e9b884b72..06274790e 100644 --- a/surfsense_web/tests/helpers/api/search-spaces.ts +++ b/surfsense_web/tests/helpers/api/search-spaces.ts @@ -18,9 +18,7 @@ export async function createSearchSpace( data: { name, description }, }); if (!response.ok()) { - throw new Error( - `createSearchSpace failed (${response.status()}): ${await response.text()}` - ); + throw new Error(`createSearchSpace failed (${response.status()}): ${await response.text()}`); } return (await response.json()) as SearchSpaceRow; }