Skip to content

Commit a606129

Browse files
committed
feat: adiciona personalizar perfil
1 parent 45ae3c9 commit a606129

3 files changed

Lines changed: 85 additions & 0 deletions

File tree

src/routes/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { quizClient } from "@/shared/clients/quiz.client";
1616
import { criarProxyHandler } from "@/shared/middlewares/proxy.middleware";
1717
import { middlewareAutenticacao } from "@/shared/middlewares/autenticacao.middleware";
1818
import { amizadeRouter } from "./amizade.routes";
19+
import { inventarioRouter } from "./inventario.routes";
1920

2021
const apiRouter = Router();
2122

@@ -33,5 +34,6 @@ apiRouter.use("/lista", listasRouter);
3334
apiRouter.use("/listasAluno", listasAlunoRouter);
3435
apiRouter.use("/turmasDashboard", turmaDashboardRouter);
3536
apiRouter.use("/dashboardAluno", dashboardAlunoRouter);
37+
apiRouter.use("/inventario", inventarioRouter)
3638

3739
export { apiRouter };

src/routes/inventario.routes.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Router } from "express";
2+
import { quizClient } from "@/shared/clients/quiz.client";
3+
import { middlewareAutenticacao } from "@/shared/middlewares/autenticacao.middleware";
4+
import { criarProxyHandler } from "@/shared/middlewares/proxy.middleware";
5+
6+
const router = Router();
7+
8+
router.use(middlewareAutenticacao);
9+
10+
router.all(/.*/, criarProxyHandler(quizClient));
11+
12+
export { router as inventarioRouter };
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import request from "supertest";
2+
import express, { Request, Response } from "express";
3+
4+
jest.mock("@/shared/middlewares/autenticacao.middleware", () => ({
5+
middlewareAutenticacao: jest.fn((req: import("express").Request, res: import("express").Response, next: import("express").NextFunction) => {
6+
next();
7+
}),
8+
}));
9+
10+
jest.mock("@/shared/middlewares/proxy.middleware", () => ({
11+
criarProxyHandler: jest.fn(() => {
12+
return (req: import("express").Request, res: import("express").Response) => {
13+
res.status(200).json({ interceptadoPeloProxy: true, rota: req.path });
14+
};
15+
}),
16+
}));
17+
18+
jest.mock("@/shared/clients/quiz.client", () => ({
19+
quizClient: {},
20+
}));
21+
22+
import { inventarioRouter } from "../../src/routes/inventario.routes";
23+
import { middlewareAutenticacao } from "@/shared/middlewares/autenticacao.middleware";
24+
25+
describe("BFF - Roteador de Inventário", () => {
26+
let app: express.Application;
27+
28+
beforeEach(() => {
29+
jest.clearAllMocks();
30+
31+
app = express();
32+
app.use(express.json());
33+
app.use("/api/v1/inventario", inventarioRouter);
34+
});
35+
36+
describe("Caminho Feliz (Sucesso)", () => {
37+
it("deve interceptar um GET e repassar para o proxy após autenticar", async () => {
38+
const response = await request(app).get("/api/v1/inventario/meu-perfil");
39+
40+
expect(middlewareAutenticacao).toHaveBeenCalled();
41+
42+
expect(response.status).toBe(200);
43+
expect(response.body).toEqual({ interceptadoPeloProxy: true, rota: "/meu-perfil" });
44+
});
45+
46+
it("deve interceptar um PATCH e repassar para o proxy após autenticar", async () => {
47+
const response = await request(app)
48+
.patch("/api/v1/inventario/equipar")
49+
.send({ itemLojaId: "item-123" });
50+
51+
expect(middlewareAutenticacao).toHaveBeenCalled();
52+
53+
expect(response.status).toBe(200);
54+
expect(response.body).toEqual({ interceptadoPeloProxy: true, rota: "/equipar" });
55+
});
56+
});
57+
58+
describe("Caminho de Erro (Falha na Autenticação)", () => {
59+
it("não deve repassar para o proxy se o middleware de autenticação bloquear", async () => {
60+
(middlewareAutenticacao as jest.Mock).mockImplementationOnce((req: Request, res: Response) => {
61+
res.status(401).json({ mensagem: "Não autorizado" });
62+
});
63+
64+
const response = await request(app).get("/api/v1/inventario/meu-perfil");
65+
66+
expect(middlewareAutenticacao).toHaveBeenCalled();
67+
expect(response.status).toBe(401);
68+
expect(response.body).toEqual({ mensagem: "Não autorizado" });
69+
});
70+
});
71+
});

0 commit comments

Comments
 (0)