Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix permissions system #26

Merged
merged 4 commits into from
Jan 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 43 additions & 24 deletions src/__tests__/membershipController.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,9 @@ const generateMembershipData = (suffix) => ({
},
});

const createMembership = async (data) => {
const response = await request(app).post("/membership/create").send(data);
return response;
};

describe("MembershipController Test Suite", () => {
let authToken;

beforeAll(async () => {
mongoServer = await MongoMemoryServer.create();
await mongoose.connect(mongoServer.getUri(), {
Expand All @@ -76,8 +73,27 @@ describe("MembershipController Test Suite", () => {
});

await initializeRoles();

const res = await request(app).post("/login").send({
email: "[email protected]",
password: "senha",
});

expect(res.status).toBe(200);
expect(res.body.user.email).toBe("[email protected]");

authToken = res.body.token;
userId = res.body.user._id;
});

const createMembership = async (data) => {
const response = await request(app)
.post("/membership/create")
.set("Authorization", `Bearer ${authToken}`)
.send(data);
return response;
};

afterAll(async () => {
await mongoose.disconnect();
await mongoServer.stop();
Expand All @@ -104,7 +120,9 @@ describe("MembershipController Test Suite", () => {

describe("GET /membership", () => {
it("should retrieve all membership forms", async () => {
const response = await request(app).get("/membership");
const response = await request(app)
.get("/membership")
.set("Authorization", `Bearer ${authToken}`);
expect(response.status).toBe(200);
expect(response.body).toBeInstanceOf(Array);
});
Expand All @@ -118,18 +136,18 @@ describe("MembershipController Test Suite", () => {
expect(postResponse.body).toHaveProperty("_id");

const membershipId = postResponse.body._id;
const getResponse = await request(app).get(
`/membership/${membershipId}`
);
const getResponse = await request(app)
.get(`/membership/${membershipId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(getResponse.status).toBe(200);
expect(getResponse.body).toHaveProperty("_id", membershipId);
});
it("should not retrieve a specific membership with invalid ID", async () => {
const membershipId = "A1";
const getResponse = await request(app).get(
`/membership/${membershipId}`
);
const getResponse = await request(app)
.get(`/membership/${membershipId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(getResponse.status).toBe(500);
});
Expand All @@ -142,9 +160,9 @@ describe("MembershipController Test Suite", () => {
expect(postResponse.status).toBe(201);

const membershipId = postResponse.body._id;
const response = await request(app).patch(
`/membership/updateStatus/${membershipId}`
);
const response = await request(app)
.patch(`/membership/updateStatus/${membershipId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(response.status).toBe(200);
expect(response.body).toHaveProperty("_id", membershipId);
Expand All @@ -160,9 +178,9 @@ describe("MembershipController Test Suite", () => {

it("should return 404 if membership is not found", async () => {
const invalidId = "A1"; // Example of an invalid ID
const response = await request(app).patch(
`/membership/status/${invalidId}`
);
const response = await request(app)
.patch(`/membership/status/${invalidId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(response.status).toBe(404);
});
Expand All @@ -184,6 +202,7 @@ describe("MembershipController Test Suite", () => {

const response = await request(app)
.patch(`/membership/update/${membershipId}`)
.set("Authorization", `Bearer ${authToken}`)
.send(updatedData);

expect(response.status).toBe(201);
Expand All @@ -200,18 +219,18 @@ describe("MembershipController Test Suite", () => {
expect(postResponse.status).toBe(201);
const membershipId = postResponse.body._id;

const deleteResponse = await request(app).delete(
`/membership/delete/${membershipId}`
);
const deleteResponse = await request(app)
.delete(`/membership/delete/${membershipId}`)
.set("Authorization", `Bearer ${authToken}`);
expect(deleteResponse.status).toBe(200);
expect(deleteResponse.body).toHaveProperty("_id", membershipId);
});
it("should not delete a specific membership if ID not found", async () => {
const membershipId = "A1";

const deleteResponse = await request(app).delete(
`/membership/delete/${membershipId}`
);
const deleteResponse = await request(app)
.delete(`/membership/delete/${membershipId}`)
.set("Authorization", `Bearer ${authToken}`);
expect(deleteResponse.status).toBe(400);
});
});
Expand Down
88 changes: 59 additions & 29 deletions src/__tests__/organController.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const mongoose = require("mongoose");
const cors = require("cors");
const routes = require("../routes"); // Ajuste o caminho conforme necessário
const { MongoMemoryServer } = require("mongodb-memory-server");
const initializeRoles = require("../Utils/initDatabase");

const app = express();
let mongoServer;
Expand All @@ -22,33 +23,43 @@ app.use(express.urlencoded({ extended: true }));
// Rotas
app.use("/", routes);

beforeAll(async () => {
mongoServer = await MongoMemoryServer.create();
const uri = mongoServer.getUri();
describe("Organ Controller Tests", () => {
let organId;
let authToken;

beforeAll(async () => {
mongoServer = await MongoMemoryServer.create();
const uri = mongoServer.getUri();

try {
await mongoose.connect(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log("MongoDB Connected");
} catch (err) {
console.error("Error connecting to MongoDB:", err);
process.exit(1);
}

try {
await mongoose.connect(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
await initializeRoles();

const res = await request(app).post("/login").send({
email: "[email protected]",
password: "senha",
});
console.log("MongoDB Connected");
} catch (err) {
console.error("Error connecting to MongoDB:", err);
process.exit(1);
}
}, 30000);

afterAll(async () => {
await mongoose.connection.close();
await mongoServer.stop();
});

describe("Organ Controller Tests", () => {
let organId;
expect(res.status).toBe(200);
expect(res.body.user.email).toBe("[email protected]");

authToken = res.body.token;
userId = res.body.user._id;
});

it("should create a new organ", async () => {
const res = await request(app)
.post("/organ/create")
.set("Authorization", `Bearer ${authToken}`)
.send({
orgao: "Orgao Test",
lotacao: [
Expand All @@ -66,6 +77,7 @@ describe("Organ Controller Tests", () => {
it("should return 409 if the organ already exists", async () => {
const res = await request(app)
.post("/organ/create")
.set("Authorization", `Bearer ${authToken}`)
.send({
orgao: "Orgao Test",
lotacao: [
Expand All @@ -79,28 +91,35 @@ describe("Organ Controller Tests", () => {
});

it("should get all organs", async () => {
const res = await request(app).get("/organ/list");
const res = await request(app)
.get("/organ/list")
.set("Authorization", `Bearer ${authToken}`);

expect(res.status).toBe(200);
expect(Array.isArray(res.body)).toBe(true);
expect(res.body.length).toBeGreaterThan(0);
});

it("should get an organ by ID", async () => {
const res = await request(app).get(`/organ/get/${organId}`);
const res = await request(app)
.get(`/organ/get/${organId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(res.status).toBe(200);
expect(res.body).toHaveProperty("orgao", "Orgao Test");
});
it("should return 404 if the organ does not exist", async () => {
const invalidId = "12345";
const res = await request(app).get(`/organ/get/${invalidId}`);
const res = await request(app)
.get(`/organ/get/${invalidId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(res.status).toBe(500);
});
it("should update an organ by ID", async () => {
const res = await request(app)
.patch(`/organ/update/${organId}`)
.set("Authorization", `Bearer ${authToken}`)
.send({
lotacao: [
{ nomeLotacao: "teste", sigla: "LT1" },
Expand All @@ -123,28 +142,39 @@ describe("Organ Controller Tests", () => {
});
it("should return 400 if the organ does not exist", async () => {
const invalidId = "12345";
const res = await request(app).patch(`/organ/update/${invalidId}`);
const res = await request(app)
.patch(`/organ/update/${invalidId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(res.status).toBe(400);
});

it("should delete an organ by ID", async () => {
console.log(organId);
const res = await request(app).delete(`/organ/delete/${organId}`);
const res = await request(app)
.delete(`/organ/delete/${organId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(res.status).toBe(200);

// Verificar se o órgão foi realmente deletado
const checkRes = await request(app).get(`/organ/delete/${organId}`);
const checkRes = await request(app)
.get(`/organ/delete/${organId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(checkRes.status).toBe(404);

//verifica se é um id válido
const invalidId = "12345";
const resInvalidId = await request(app).delete(
`/organ/delete/${invalidId}`
);
const resInvalidId = await request(app)
.delete(`/organ/delete/${invalidId}`)
.set("Authorization", `Bearer ${authToken}`);

expect(resInvalidId.status).toBe(400);
});

afterAll(async () => {
await mongoose.connection.close();
await mongoServer.stop();
});
});
Loading
Loading