const request = require("supertest"); const app = require("../src/app"); describe("THE TIP TOP - FULL E2E FLOW", () => { let token; let ticketCode = "ABC123"; // ------------------------ // 1. REGISTER // ------------------------ // Test de l'inscription d'un utilisateur test("Register user", async () => { const res = await request(app) .post("/api/auth/register") .send({ firstname: "Test", lastname: "User", email: "test@test.com", password: "Password123" }); // Vérification du code de statut attendu (201 pour succès, 409 si l'utilisateur existe déjà) expect([201, 409]).toContain(res.statusCode); }); // ------------------------ // 2. LOGIN // ------------------------ // Test de la connexion d'un utilisateur test("Login user", async () => { const res = await request(app) .post("/api/auth/login") .send({ email: "test@test.com", password: "Password123" }); // Vérification du code de statut attendu (200 pour succès) expect(res.statusCode).toBe(200); expect(res.body.token).toBeDefined(); token = res.body.token; }); // ------------------------ // 3. PARTICIPATE GAME // ------------------------ // Test de la participation à un jeu test("Participate to game", async () => { const res = await request(app) .post("/api/game/participate") .set("Authorization", `Bearer ${token}`) .send({ code: ticketCode }); // Vérification du code de statut attendu expect([200, 201, 404, 409, 400]).toContain(res.statusCode); }); // ------------------------ // 4. MY GAINS // ------------------------ // Test de la récupération des gains d'un utilisateur test("Get my gains", async () => { const res = await request(app) .get("/api/game/my-gains") .set("Authorization", `Bearer ${token}`); // Vérification du code de statut attendu expect(res.statusCode).toBe(200); expect(res.body.gains).toBeDefined(); }); // ------------------------ // 5. ADMIN STATS // ------------------------ test("Admin stats - CLIENT access denied", async () => { const res = await request(app) .get("/api/admin/stats") .set("Authorization", `Bearer ${token}`); expect(res.statusCode).toBe(403); expect(res.body.message || res.body).toBeDefined(); }); }); // Nous avons validé un flux E2E complet garantissant le bon fonctionnement global du système. La couverture actuelle est partielle et peut être enrichie pour couvrir les cas limites et les erreurs métier.