mirror of
https://github.com/Since-3/Kuma.git
synced 2026-10-12 21:41:17 +00:00
see comments
This commit is contained in:
parent
9148cfcc1f
commit
0805dcf21d
2 changed files with 132 additions and 3 deletions
|
|
@ -15,7 +15,17 @@ import { createAdminClient } from "@/src/lib/supabase/admin";
|
|||
import { prisma } from "@/src/lib/prisma";
|
||||
|
||||
const mockCreateUser = vi.fn();
|
||||
const mockSupabase = { auth: { admin: { createUser: mockCreateUser } } };
|
||||
const mockListUsers = vi.fn();
|
||||
const mockUpdateUserById = vi.fn();
|
||||
const mockSupabase = {
|
||||
auth: {
|
||||
admin: {
|
||||
createUser: mockCreateUser,
|
||||
listUsers: mockListUsers,
|
||||
updateUserById: mockUpdateUserById,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const validToken = "valid-token-abc";
|
||||
const validEmployee = {
|
||||
|
|
@ -24,10 +34,23 @@ const validEmployee = {
|
|||
onboardingTokenExpiry: new Date(Date.now() + 3600000),
|
||||
};
|
||||
|
||||
const validBodyWithExtras = {
|
||||
token: "valid-token-abc",
|
||||
email: "employee@example.com",
|
||||
password: "Sicher!123",
|
||||
firstName: "Anna",
|
||||
lastName: "Schmidt",
|
||||
tel: "0123456789",
|
||||
gender: "female",
|
||||
qualification: "Trainer B-Lizenz",
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
vi.mocked(createAdminClient).mockReturnValue(mockSupabase as never);
|
||||
vi.mocked(prisma.employee.findUnique).mockReset();
|
||||
mockCreateUser.mockReset();
|
||||
mockListUsers.mockReset();
|
||||
mockUpdateUserById.mockReset();
|
||||
});
|
||||
|
||||
const validBody = {
|
||||
|
|
@ -116,9 +139,74 @@ describe("POST /api/auth/register/employee", () => {
|
|||
error: null,
|
||||
});
|
||||
|
||||
const res = await POST(makeRequest(validBodyWithExtras));
|
||||
expect(res.status).toBe(201);
|
||||
const data = await res.json();
|
||||
expect(data.success).toBe(true);
|
||||
|
||||
expect(mockCreateUser).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
email: validBodyWithExtras.email,
|
||||
password: validBodyWithExtras.password,
|
||||
email_confirm: true,
|
||||
user_metadata: expect.objectContaining({
|
||||
firstName: validBodyWithExtras.firstName,
|
||||
lastName: validBodyWithExtras.lastName,
|
||||
tel: validBodyWithExtras.tel,
|
||||
gender: validBodyWithExtras.gender,
|
||||
qualification: validBodyWithExtras.qualification,
|
||||
role: "employee",
|
||||
}),
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it("verwendet den bestehenden Auth-User erneut, wenn dieser bereits existiert (Retry nach Teilausfall)", async () => {
|
||||
vi.mocked(prisma.employee.findUnique).mockResolvedValue(validEmployee as never);
|
||||
mockCreateUser.mockResolvedValue({
|
||||
data: { user: null },
|
||||
error: {
|
||||
code: "email_exists",
|
||||
message: "A user with this email address has already been registered",
|
||||
},
|
||||
});
|
||||
mockListUsers.mockResolvedValue({
|
||||
data: { users: [{ id: "emp-1", email: validBody.email }] },
|
||||
error: null,
|
||||
});
|
||||
mockUpdateUserById.mockResolvedValue({
|
||||
data: { user: { id: "emp-1" } },
|
||||
error: null,
|
||||
});
|
||||
|
||||
const res = await POST(makeRequest(validBody));
|
||||
expect(res.status).toBe(201);
|
||||
const data = await res.json();
|
||||
expect(data.success).toBe(true);
|
||||
|
||||
expect(mockUpdateUserById).toHaveBeenCalledWith(
|
||||
"emp-1",
|
||||
expect.objectContaining({
|
||||
password: validBody.password,
|
||||
email_confirm: true,
|
||||
user_metadata: expect.objectContaining({ role: "employee" }),
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it("gibt 400 zurück wenn der Auth-User nach 'email_exists' nicht gefunden wird", async () => {
|
||||
vi.mocked(prisma.employee.findUnique).mockResolvedValue(validEmployee as never);
|
||||
mockCreateUser.mockResolvedValue({
|
||||
data: { user: null },
|
||||
error: {
|
||||
code: "email_exists",
|
||||
message: "A user with this email address has already been registered",
|
||||
},
|
||||
});
|
||||
mockListUsers.mockResolvedValue({ data: { users: [] }, error: null });
|
||||
|
||||
const res = await POST(makeRequest(validBody));
|
||||
expect(res.status).toBe(400);
|
||||
expect(mockUpdateUserById).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue