d99e6db93d
13 integration suites driving the real sync pipeline end to end — OAuth connect via the actual `/auth/google-apis/get-access-token` / `microsoft-apis` callbacks (transient token + mocked provider token exchange), real queue workers, provider APIs mocked at the HTTP layer with msw. **Messaging (8):** Gmail list fetch + import, Gmail folder discovery, Microsoft folder discovery, history-based incremental sync, stale-sync recovery, sync failure lifecycle (429 throttle → exhaustion → relaunch; declined refresh token → insufficient permissions), token refresh, connected-account cleanup cascade. **Calendar (5):** Google events import (full + sync-token incremental), Microsoft events import (delta fetch + import), stale-sync recovery, failure lifecycle, cleanup cascade. <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22567?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { type Event, type MailFolder } from '@microsoft/microsoft-graph-types';
|
|
|
|
import { setupHttpMock } from 'test/integration/utils/http-mock.util';
|
|
import { microsoftAuthHandlers } from 'test/integration/microsoft/mocks/microsoft-auth-handlers.util';
|
|
import { microsoftCalendarEventsHandlers } from 'test/integration/microsoft/mocks/microsoft-calendar-events-handlers.util';
|
|
import { microsoftMailboxHandlers } from 'test/integration/microsoft/mocks/microsoft-mailbox-handlers.util';
|
|
import {
|
|
createMockEntityStore,
|
|
type MockEntityStore,
|
|
} from 'test/integration/utils/mock-entity-store.util';
|
|
|
|
const DEFAULT_FOLDERS: MailFolder[] = [
|
|
{ id: 'inbox', displayName: 'Inbox' },
|
|
{ id: 'sentitems', displayName: 'Sent Items' },
|
|
];
|
|
|
|
export type MicrosoftMock = {
|
|
folders: MockEntityStore<MailFolder>;
|
|
serveCalendarEvents: (
|
|
events: Event[],
|
|
options?: { deltaToken?: string },
|
|
) => void;
|
|
};
|
|
|
|
export const setupMicrosoftMock = ({
|
|
handle,
|
|
folders = DEFAULT_FOLDERS,
|
|
}: {
|
|
handle: string;
|
|
folders?: MailFolder[];
|
|
}): MicrosoftMock => {
|
|
const folderStore = createMockEntityStore(
|
|
folders,
|
|
(folder) => folder.id ?? '',
|
|
);
|
|
|
|
const httpMock = setupHttpMock(
|
|
...microsoftAuthHandlers(handle),
|
|
...microsoftMailboxHandlers(folderStore),
|
|
);
|
|
|
|
return {
|
|
folders: folderStore,
|
|
serveCalendarEvents: (
|
|
events,
|
|
{ deltaToken = 'mock-calendar-delta-token' } = {},
|
|
) => httpMock.use(...microsoftCalendarEventsHandlers(events, deltaToken)),
|
|
};
|
|
};
|