Files
rudder-js-sdk/test/e2e-prod/_setup/harness.ts
T
2026-09-29 16:43:15 +03:00

54 lines
1.4 KiB
TypeScript

import { RudderClient, createClient } from '../../../src/client/RudderClient.js';
import type { TokenStore } from '../../../src/token/TokenStore.js';
import { readArtifact } from './artifact.js';
import type { SeedArtifact } from './types.js';
export function loadArtifact(): SeedArtifact {
const file = readArtifact();
if (!file) {
throw new Error(
'No seed artifact (.e2e-prod.local.json). Run `npm run test:e2e-prod` (globalSetup seeds automatically).',
);
}
return {
...file,
baseUrl: process.env.RUDDER_E2E_BASE_URL ?? file.baseUrl,
projectKey: process.env.RUDDER_E2E_PROJECT_KEY ?? file.projectKey,
};
}
export function createInMemoryTokenStore(): TokenStore {
let access: string | null = null;
let refresh: string | null = null;
return {
getAccessToken: () => access,
getRefreshToken: () => refresh,
saveTokens: (a, r) => {
access = a;
refresh = r;
},
clear: () => {
access = null;
refresh = null;
},
};
}
export function makeProdClient(
artifact: SeedArtifact = loadArtifact(),
): RudderClient {
return createClient({
baseUrl: artifact.baseUrl,
projectKey: artifact.projectKey,
tokenStore: createInMemoryTokenStore(),
});
}
export async function freshPlayer(
artifact: SeedArtifact = loadArtifact(),
): Promise<RudderClient> {
const client = makeProdClient(artifact);
await client.auth.loginWithDevice({ region: 'en', language: 'en' });
return client;
}