29 lines
1008 B
TypeScript
29 lines
1008 B
TypeScript
import { PrismaReadService } from "@/modules/prisma/prisma-read.service";
|
|
import { PrismaWriteService } from "@/modules/prisma/prisma-write.service";
|
|
import { TestingModule } from "@nestjs/testing";
|
|
import { randomBytes, createHash } from "crypto";
|
|
|
|
export class ApiKeysRepositoryFixture {
|
|
private prismaReadClient: PrismaReadService["prisma"];
|
|
private prismaWriteClient: PrismaWriteService["prisma"];
|
|
|
|
constructor(private readonly module: TestingModule) {
|
|
this.prismaReadClient = module.get(PrismaReadService).prisma;
|
|
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
|
|
}
|
|
|
|
async createApiKey(userId: number, expiresAt: Date | null, teamId?: number) {
|
|
const keyString = randomBytes(16).toString("hex");
|
|
const apiKey = await this.prismaWriteClient.apiKey.create({
|
|
data: {
|
|
userId,
|
|
teamId,
|
|
hashedKey: createHash("sha256").update(keyString).digest("hex"),
|
|
expiresAt: expiresAt,
|
|
},
|
|
});
|
|
|
|
return { apiKey, keyString };
|
|
}
|
|
}
|