67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
const request = require("supertest");
|
|
const app = require("../src/app");
|
|
const prisma = require("../src/config/prisma");
|
|
const mailer = require("../src/config/mailer");
|
|
|
|
jest.mock("../src/config/mailer", () => ({
|
|
sendMail: jest.fn(),
|
|
}));
|
|
|
|
// Comme le reste de la suite, ce fichier tourne sur la base de dev : il ne
|
|
// touche qu'au compte qu'il crée lui-même, identifié par cet email.
|
|
const testEmail = "rollback-mail-test@test.com";
|
|
|
|
const payload = {
|
|
firstname: "Camille",
|
|
lastname: "Martin",
|
|
email: testEmail,
|
|
password: "Password123",
|
|
birthdate: "1990-05-14",
|
|
gender: "Femme",
|
|
};
|
|
|
|
beforeEach(async () => {
|
|
jest.clearAllMocks();
|
|
await prisma.user.deleteMany({ where: { email: testEmail } });
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await prisma.user.deleteMany({ where: { email: testEmail } });
|
|
await prisma.$disconnect();
|
|
});
|
|
|
|
describe("Inscription - echec d'envoi du code de validation", () => {
|
|
test("repond 502 et ne laisse aucun compte orphelin", async () => {
|
|
mailer.sendMail.mockRejectedValue(new Error("SMTP indisponible"));
|
|
|
|
const res = await request(app).post("/api/auth/register").send(payload);
|
|
|
|
expect(res.statusCode).toBe(502);
|
|
|
|
const user = await prisma.user.findUnique({ where: { email: testEmail } });
|
|
expect(user).toBeNull();
|
|
});
|
|
|
|
test("l'email reste reutilisable apres un echec d'envoi", async () => {
|
|
mailer.sendMail.mockRejectedValueOnce(new Error("SMTP indisponible"));
|
|
const echec = await request(app).post("/api/auth/register").send(payload);
|
|
expect(echec.statusCode).toBe(502);
|
|
|
|
mailer.sendMail.mockResolvedValue(true);
|
|
const succes = await request(app).post("/api/auth/register").send(payload);
|
|
|
|
expect(succes.statusCode).toBe(201);
|
|
});
|
|
|
|
test("enregistre la date de naissance et le genre", async () => {
|
|
mailer.sendMail.mockResolvedValue(true);
|
|
|
|
const res = await request(app).post("/api/auth/register").send(payload);
|
|
expect(res.statusCode).toBe(201);
|
|
|
|
const user = await prisma.user.findUnique({ where: { email: testEmail } });
|
|
expect(user.gender).toBe("Femme");
|
|
expect(user.birthdate.toISOString()).toBe("1990-05-14T00:00:00.000Z");
|
|
});
|
|
});
|