Files
THE-TIP-TOP/backend/tests/registerPassword.test.js
Emma781227 2201446ee6 changement
2026-09-14 22:30:40 +02:00

63 lines
2.1 KiB
JavaScript

const request = require("supertest");
const app = require("../src/app");
const prisma = require("../src/config/prisma");
jest.mock("../src/config/mailer", () => ({ sendMail: jest.fn().mockResolvedValue(true) }));
const EMAIL = "register-password-test@test.local";
const payload = (password, confirmPassword = password) => ({
firstname: "Camille",
lastname: "Martin",
email: EMAIL,
password,
confirmPassword,
birthdate: "1990-05-14",
});
async function cleanup() {
await prisma.user.deleteMany({ where: { email: EMAIL } });
}
beforeEach(cleanup);
afterAll(async () => {
await cleanup();
await prisma.$disconnect();
});
describe("Regles du mot de passe a l inscription", () => {
test.each([
["trop court", "Abc12!", /8 caractères/],
["sans caractere special", "MotDePasse123", /caractère spécial/],
["accents et espaces ne comptent pas comme speciaux", "Mot de passé 123", /caractère spécial/],
])("refuse un mot de passe %s", async (_, password, message) => {
const res = await request(app).post("/api/auth/register").send(payload(password));
expect(res.status).toBe(400);
expect(res.body.errors.password[0]).toMatch(message);
expect(await prisma.user.findUnique({ where: { email: EMAIL } })).toBeNull();
});
test("refuse une confirmation differente", async () => {
const res = await request(app).post("/api/auth/register").send(payload("MotDePasse1!", "MotDePasse2!"));
expect(res.status).toBe(400);
expect(res.body.errors.confirmPassword[0]).toMatch(/ne correspondent pas/);
});
test("refuse une inscription sans confirmation", async () => {
const { confirmPassword, ...sansConfirmation } = payload("MotDePasse1!");
const res = await request(app).post("/api/auth/register").send(sansConfirmation);
expect(res.status).toBe(400);
expect(res.body.errors.confirmPassword).toBeDefined();
});
test("accepte 8 caracteres avec un caractere special", async () => {
const res = await request(app).post("/api/auth/register").send(payload("abcdefg#"));
expect(res.status).toBe(201);
expect(await prisma.user.findUnique({ where: { email: EMAIL } })).not.toBeNull();
});
});