Skip to content

Commit

Permalink
init tests fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
guipeeix7 committed Jan 30, 2025
1 parent 173f713 commit eb23cd4
Show file tree
Hide file tree
Showing 5 changed files with 190 additions and 72 deletions.
26 changes: 15 additions & 11 deletions src/Middlewares/accessControlMiddleware.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
const jwt = require('jsonwebtoken');

const jwt = require("jsonwebtoken");

const checkPermissions = (permissionName) => {
return async (req, res, next) => {
try{
const decoded = jwt.decode(req.headers.authorization?.split(" ")[1]);

const permission = decoded._doc.permissions.find(
(perm) => perm.name === permissionName
try {
const decoded = jwt.decode(
req.headers.authorization?.split(" ")[1]
);
if (!decoded) {
return res
.status(401)
.json({ mensagem: "Tokem não fornecido." });
}
const permission = decoded.permissions.find(
(perm) => perm === permissionName
);

if (!permission) {
return res
.status(400)
.send("user has no permission to access resource");
}
next();
}
catch(error){
next();
} catch (error) {
next(error);
}
};
Expand Down
117 changes: 69 additions & 48 deletions src/__tests__/bankAccountController.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@ const express = require("express");
const mongoose = require("mongoose");
const { MongoMemoryServer } = require("mongodb-memory-server");
const bankAccountRouter = require("../routes"); // Atualize o caminho para o arquivo de rotas
const { mockedToken } = require('./utils.test')


let mongoServer;
let app = express();



beforeAll(async () => {
mongoServer = await MongoMemoryServer.create();
const uri = mongoServer.getUri();
Expand All @@ -24,10 +28,13 @@ afterAll(async () => {
await mongoServer.stop();
});



describe("BankAccount API", () => {
it("should create a new bank account", async () => {
it("should create a new bank account", async () => {
const response = await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta Teste",
Expand All @@ -38,15 +45,14 @@ describe("BankAccount API", () => {
},
});

console.log("Create Response:", response); // Adicione um log para depuração

expect(response.status).toBe(201);
expect(response.body).toHaveProperty("name", "Conta Teste");
});

it("should not create a bank account with an existing name", async () => {
await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta Teste",
Expand All @@ -58,7 +64,8 @@ describe("BankAccount API", () => {
});

const response = await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta Teste",
Expand All @@ -76,6 +83,7 @@ describe("BankAccount API", () => {
it("should not create a bank account with a blank name", async () => {
const response = await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.set("Authorization", `Bearer ${mockedToken()}`)
.send({
formData: {
name: "",
Expand All @@ -93,6 +101,7 @@ describe("BankAccount API", () => {
it("should fetch a bank account by ID", async () => {
const newAccount = await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.set("Authorization", `Bearer ${mockedToken()}`)
.send({
formData: {
name: "Conta Teste ID",
Expand All @@ -105,7 +114,7 @@ describe("BankAccount API", () => {

const response = await request(app).get(
`/finance/bankAccount/${newAccount.body._id}`
); // Atualize o caminho da rota
).set("Authorization", `Bearer ${mockedToken()}`); // Atualize o caminho da rota

console.log("Fetch By ID Response:", response.body); // Adicione um log para depuração

Expand All @@ -115,7 +124,8 @@ describe("BankAccount API", () => {

it("should not fetch a bank account without ID", async () => {
await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta Teste ID",
Expand All @@ -126,14 +136,14 @@ describe("BankAccount API", () => {
},
});

const response = await request(app).get(`/finance/bankAccount/${null}`); // Atualize o caminho da rota
const response = await request(app).get(`/finance/bankAccount/${null}`).set("Authorization", `Bearer ${mockedToken()}`); // Atualize o caminho da rota

console.log("Fetch By ID Response:", response.body); // Adicione um log para depuração

expect(response.status).toBe(500);
});
it("should fetch all bank accounts", async () => {
const response = await request(app).get("/finance/getBankAccount"); // Atualize o caminho da rota
const response = await request(app).get("/finance/getBankAccount").set("Authorization", `Bearer ${mockedToken()}`); // Atualize o caminho da rota

console.log("Fetch All Response:", response.body); // Adicione um log para depuração

Expand All @@ -143,7 +153,8 @@ describe("BankAccount API", () => {

it("should update a bank account", async () => {
const newAccount = await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta a ser Atualizada",
Expand All @@ -155,7 +166,8 @@ describe("BankAccount API", () => {
});

const response = await request(app)
.patch(`/finance/updateBankAccount/${newAccount.body._id}`) // Atualize o caminho da rota
.patch(`/finance/updateBankAccount/${newAccount.body._id}`)
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({ name: "Conta Atualizada" });

console.log("Update Response:", response.body); // Adicione um log para depuração
Expand All @@ -166,7 +178,8 @@ describe("BankAccount API", () => {

it("should not update a bank account without id", async () => {
await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta a ser Atualizada",
Expand All @@ -178,7 +191,8 @@ describe("BankAccount API", () => {
});

const response = await request(app)
.patch(`/finance/updateBankAccount/${null}`) // Atualize o caminho da rota
.patch(`/finance/updateBankAccount/${null}`)
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({ name: "Conta Atualizada" });

console.log("Update Response:", response.body); // Adicione um log para depuração
Expand All @@ -188,7 +202,8 @@ describe("BankAccount API", () => {

it("should delete a bank account", async () => {
const newAccount = await request(app)
.post("/finance/createBankAccount") // Atualize o caminho da rota
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`) // Atualize o caminho da rota
.send({
formData: {
name: "Conta a ser Deletada",
Expand All @@ -201,7 +216,7 @@ describe("BankAccount API", () => {

const response = await request(app).delete(
`/finance/deleteBankAccount/${newAccount.body._id}`
); // Atualize o caminho da rota
).set("Authorization", `Bearer ${mockedToken()}`); // Atualize o caminho da rota

console.log("Delete Response:", response.body); // Adicione um log para depuração

Expand All @@ -211,7 +226,7 @@ describe("BankAccount API", () => {
it("should delete a bank account", async () => {
const response = await request(app).delete(
`/finance/deleteBankAccount/${null}`
); // Atualize o caminho da rota
).set("Authorization", `Bearer ${mockedToken()}`); // Atualize o caminho da rota

expect(response.status).toBe(500);
});
Expand All @@ -221,66 +236,72 @@ describe("BankAccount API", () => {

const response = await request(app).get(
`/finance/getBankAccountbyId/${invalidId}`
);
).set("Authorization", `Bearer ${mockedToken()}`);

expect(response.status).toBe(404);
});
});
it("should return 500 when fetching a bank account with invalid ID", async () => {
const response = await request(app).get(`/finance/bankAccount/${null}`);
const response = await request(app).get(`/finance/bankAccount/${null}`).set("Authorization", `Bearer ${mockedToken()}`);

expect(response.status).toBe(500);
expect(response.body.error).toBe("ID inválido ou ausente");
});
it("should return 500 when updating a bank account with invalid ID", async () => {
const response = await request(app)
.patch(`/finance/updateBankAccount/${null}`)
.set("Authorization", `Bearer ${mockedToken()}`)
.send({ name: "Conta Atualizada" });

expect(response.status).toBe(500);
expect(response.body.error).toBe("ID inválido ou ausente");
});
it("should delete a bank account", async () => {
it("should delete a bank account", async () => {
const newAccount = await request(app)
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`)
.send({
formData: {
name: "Conta a ser Deletada",
name: "Conta a ser Deletada 2",
bank: "Banco Teste Deletar",

accaccountNumber: "33333333",
status: "Ativo",
accountType: "Conta Corrente",
},
}); const response = await request(app).delete(
});

console.log("TESTEEEEEEEEEEEEEEEE", newAccount.body)

const response = await request(app).delete(
`/finance/deleteBankAccount/${newAccount.body._id}`
);
).set("Authorization", `Bearer ${mockedToken()}`);

expect(response.status).toBe(200);
expect(response.body.message).toBe("Conta deletada com sucesso");
});
expect(response.status).toBe(200);
expect(response.body.message).toBe("Conta deletada com sucesso");
});

it("should return 500 when deleting a bank account with invalid ID", async () => {
const response = await request(app).delete(`/finance/deleteBankAccount/${null}`);
it("should return 500 when deleting a bank account with invalid ID", async () => {
const response = await request(app).delete(`/finance/deleteBankAccount/${null}`).set("Authorization", `Bearer ${mockedToken()}`);

expect(response.status).toBe(500);
expect(response.body.error).toBe("ID inválido ou ausente");
});
expect(response.status).toBe(500);
expect(response.body.error).toBe("ID inválido ou ausente");
});

it("should return 500 if the name is invalid", async () => {
const response = await request(app)
.post("/finance/createBankAccount")
.send({
formData: {
name: 12345, // Tipo inválido
bank: "Banco Teste",
accountNumber: "98765432",
status: "Ativo",
accountType: "Conta Corrente",
},
});
it("should return 500 if the name is invalid", async () => {
const response = await request(app)
.post("/finance/createBankAccount")
.set("Authorization", `Bearer ${mockedToken()}`)
.send({
formData: {
name: 12345, // Tipo inválido
bank: "Banco Teste",
accountNumber: "98765432",
status: "Ativo",
accountType: "Conta Corrente",
},
});

expect(response.status).toBe(500);
expect(response.body.error).toBe("Tipo de dado incorreto");
});

expect(response.status).toBe(500);
expect(response.body.error).toBe("Tipo de dado incorreto");
});
Loading

0 comments on commit eb23cd4

Please sign in to comment.