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

51 lines
1.6 KiB
TypeScript

import { createAdminClient } from './adminClient.js';
import type { SeedArtifact } from './types.js';
export async function runSeed(
baseUrl: string,
log: (m: string) => void = () => {},
): Promise<SeedArtifact> {
const api = createAdminClient(baseUrl);
const ts = Date.now();
const runtimeEnv = 'prod';
const adminEmail = `e2e+${ts}@rudder.build`;
const password = `Passw0rd!e2e-${ts}`;
const auth = await api.post<{ accessToken: string; refreshToken: string }>(
'/platform/v1/authorization/register',
{ email: adminEmail, password, fullName: 'E2E Bot' },
{ auth: false },
);
api.setToken(auth.accessToken);
log(`registered ${adminEmail}`);
const project = await api.post<{ id: string; name: string }>('/platform/v1/projects', {
name: `e2e-${ts}`,
});
const projPath = `/platform/v1/projects/${project.id}`;
const environments = await api.get<Array<{ name: string; sdkKey: string }>>(
`${projPath}/environments`,
);
const projectKey = environments.find((e) => e.name === runtimeEnv)?.sdkKey;
if (!projectKey) {
throw new Error(`project ${project.id} has no ${runtimeEnv} environment sdk key`);
}
log(`project ${project.id} ${runtimeEnv}Key=${projectKey}`);
return {
baseUrl,
projectId: project.id,
projectKey,
adminToken: auth.accessToken,
adminEmail,
environment: runtimeEnv,
seededAt: new Date(ts).toISOString(),
};
}
export async function deleteProject(artifact: SeedArtifact): Promise<void> {
const api = createAdminClient(artifact.baseUrl);
api.setToken(artifact.adminToken);
await api.del(`/platform/v1/projects/${artifact.projectId}`);
}