langfuse

Форк
0
/
test-utils.ts 
104 строки · 2.6 Кб
1
import {
2
  hashSecretKey,
3
  getDisplaySecretKey,
4
} from "@/src/features/public-api/lib/apiKeys";
5
import { prisma } from "@/src/server/db";
6
import { hash } from "bcryptjs";
7

8
export const pruneDatabase = async () => {
9
  await prisma.score.deleteMany();
10
  await prisma.observation.deleteMany();
11
  await prisma.trace.deleteMany();
12
  await prisma.datasetItem.deleteMany();
13
  await prisma.dataset.deleteMany();
14
  await prisma.datasetRuns.deleteMany();
15
  await prisma.prompt.deleteMany();
16
  await prisma.events.deleteMany();
17
  await prisma.model.deleteMany();
18
};
19

20
export function createBasicAuthHeader(
21
  username: string,
22
  password: string,
23
): string {
24
  const base64Credentials = Buffer.from(`${username}:${password}`).toString(
25
    "base64",
26
  );
27
  return `Basic ${base64Credentials}`;
28
}
29

30
export type IngestionAPIResponse = {
31
  errors: ErrorIngestion[];
32
  successes: SuccessfulIngestion[];
33
};
34

35
export type SuccessfulIngestion = {
36
  id: string;
37
  status: number;
38
};
39

40
export type ErrorIngestion = {
41
  id: string;
42
  status: number;
43
  message: string;
44
  error: string;
45
};
46

47
export async function makeAPICall<T = IngestionAPIResponse>(
48
  method: "POST" | "GET" | "PUT" | "DELETE" | "PATCH",
49
  url: string,
50
  body?: unknown,
51
  auth?: string,
52
): Promise<{ body: T; status: number }> {
53
  const finalUrl = `http://localhost:3000/${url}`;
54
  const authorization =
55
    auth || createBasicAuthHeader("pk-lf-1234567890", "sk-lf-1234567890");
56
  const options = {
57
    method: method,
58
    headers: {
59
      Accept: "application/json",
60
      "Content-Type": "application/json;charset=UTF-8",
61
      Authorization: authorization,
62
    },
63
    ...(method !== "GET" &&
64
      body !== undefined && { body: JSON.stringify(body) }),
65
  };
66
  const response = await fetch(finalUrl, options);
67
  const responseBody = (await response.json()) as T;
68
  return { body: responseBody, status: response.status };
69
}
70

71
export const setupUserAndProject = async () => {
72
  const user = await prisma.user.create({
73
    data: {
74
      id: "user-1",
75
      name: "Demo User",
76
      email: "demo@langfuse.com",
77
      password: await hash("password", 12),
78
    },
79
  });
80

81
  const project = await prisma.project.create({
82
    data: {
83
      id: "7a88fb47-b4e2-43b8-a06c-a5ce950dc53a",
84
      name: "llm-app",
85
      apiKeys: {
86
        create: [
87
          {
88
            note: "seeded key",
89
            hashedSecretKey: await hashSecretKey("sk-lf-1234567890"),
90
            displaySecretKey: getDisplaySecretKey("sk-lf-1234567890"),
91
            publicKey: "pk-lf-1234567890",
92
          },
93
        ],
94
      },
95
      members: {
96
        create: {
97
          role: "OWNER",
98
          userId: user.id,
99
        },
100
      },
101
    },
102
  });
103
  return { user, project };
104
};
105

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.