Skip to content

Commit f59dfde

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

3 files changed

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

0 commit comments

Comments
 (0)