mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 12:38:36 +00:00
156 lines
4.6 KiB
TypeScript
156 lines
4.6 KiB
TypeScript
import { seedData1 } from "@app/db/seed-data";
|
|
|
|
describe("Secret Folder Router", async () => {
|
|
test.each([
|
|
{ name: "folder1", path: "/" }, // one in root
|
|
{ name: "folder1", path: "/level1/level2" }, // then create a deep one creating intermediate ones
|
|
{ name: "folder2", path: "/" },
|
|
{ name: "folder1", path: "/level1/level2" } // this should not create folder return same thing
|
|
])("Create folder $name in $path", async ({ name, path }) => {
|
|
const res = await testServer.inject({
|
|
method: "POST",
|
|
url: `/api/v1/folders`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
body: {
|
|
workspaceId: seedData1.project.id,
|
|
environment: seedData1.environment.slug,
|
|
name,
|
|
path
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("folder");
|
|
// check for default environments
|
|
expect(payload).toEqual({
|
|
folder: expect.objectContaining({
|
|
name,
|
|
id: expect.any(String)
|
|
})
|
|
});
|
|
});
|
|
|
|
test.each([
|
|
{
|
|
path: "/",
|
|
expected: {
|
|
folders: [{ name: "folder1" }, { name: "level1" }, { name: "folder2" }],
|
|
length: 3
|
|
}
|
|
},
|
|
{ path: "/level1/level2", expected: { folders: [{ name: "folder1" }], length: 1 } }
|
|
])("Get folders $path", async ({ path, expected }) => {
|
|
const res = await testServer.inject({
|
|
method: "GET",
|
|
url: `/api/v1/folders`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
query: {
|
|
workspaceId: seedData1.project.id,
|
|
environment: seedData1.environment.slug,
|
|
path
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("folders");
|
|
expect(payload.folders.length).toBe(expected.length);
|
|
expect(payload).toEqual({ folders: expected.folders.map((el) => expect.objectContaining(el)) });
|
|
});
|
|
|
|
let toBeDeleteFolderId = "";
|
|
test("Update a deep folder", async () => {
|
|
const res = await testServer.inject({
|
|
method: "PATCH",
|
|
url: `/api/v1/folders/folder1`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
body: {
|
|
workspaceId: seedData1.project.id,
|
|
environment: seedData1.environment.slug,
|
|
name: "folder-updated",
|
|
path: "/level1/level2"
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("folder");
|
|
expect(payload.folder).toEqual(
|
|
expect.objectContaining({
|
|
id: expect.any(String),
|
|
name: "folder-updated"
|
|
})
|
|
);
|
|
toBeDeleteFolderId = payload.folder.id;
|
|
|
|
const resUpdatedFolders = await testServer.inject({
|
|
method: "GET",
|
|
url: `/api/v1/folders`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
query: {
|
|
workspaceId: seedData1.project.id,
|
|
environment: seedData1.environment.slug,
|
|
path: "/level1/level2"
|
|
}
|
|
});
|
|
|
|
expect(resUpdatedFolders.statusCode).toBe(200);
|
|
const updatedFolderList = JSON.parse(resUpdatedFolders.payload);
|
|
expect(updatedFolderList).toHaveProperty("folders");
|
|
expect(updatedFolderList.folders.length).toEqual(1);
|
|
expect(updatedFolderList.folders[0].name).toEqual("folder-updated");
|
|
});
|
|
|
|
test("Delete a deep folder", async () => {
|
|
const res = await testServer.inject({
|
|
method: "DELETE",
|
|
url: `/api/v1/folders/${toBeDeleteFolderId}`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
body: {
|
|
workspaceId: seedData1.project.id,
|
|
environment: seedData1.environment.slug,
|
|
path: "/level1/level2"
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("folder");
|
|
expect(payload.folder).toEqual(
|
|
expect.objectContaining({
|
|
id: expect.any(String),
|
|
name: "folder-updated"
|
|
})
|
|
);
|
|
|
|
const resUpdatedFolders = await testServer.inject({
|
|
method: "GET",
|
|
url: `/api/v1/folders`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
query: {
|
|
workspaceId: seedData1.project.id,
|
|
environment: seedData1.environment.slug,
|
|
path: "/level1/level2"
|
|
}
|
|
});
|
|
|
|
expect(resUpdatedFolders.statusCode).toBe(200);
|
|
const updatedFolderList = JSON.parse(resUpdatedFolders.payload);
|
|
expect(updatedFolderList).toHaveProperty("folders");
|
|
expect(updatedFolderList.folders.length).toEqual(0);
|
|
});
|
|
});
|