mirror of
https://github.com/Infisical/infisical.git
synced 2025-03-28 15:29:21 +00:00
.github
.husky
backend
e2e-test
mocks
routes
v1
identity.spec.ts
login.spec.ts
org.spec.ts
project-env.spec.ts
secret-folder.spec.ts
secret-import.spec.ts
status.spec.ts
v2
v3
vitest-environment-knex.ts
scripts
src
.dockerignore
.eslintignore
.eslintrc.js
.gitignore
.prettierrc.json
Dockerfile
Dockerfile.dev
nodemon.json
package-lock.json
package.json
tsconfig.json
tsup.config.js
vitest.e2e.config.ts
cli
cloudformation
docs
frontend
helm-charts
img
k8-operator
migration
nginx
pg-migrator
.dockerignore
.env.example
.env.migration.example
.env.test.example
.eslintignore
.gitignore
.goreleaser.yaml
.infisicalignore
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Dockerfile.standalone-infisical
LICENSE
Makefile
README.md
SECURITY.md
cypress.config.js
docker-compose.dev.yml
docker-compose.prod.yml
package-lock.json
package.json
render.yaml
standalone-entrypoint.sh
133 lines
4.2 KiB
TypeScript
133 lines
4.2 KiB
TypeScript
import { seedData1 } from "@app/db/seed-data";
|
|
import { DEFAULT_PROJECT_ENVS } from "@app/db/seeds/3-project";
|
|
|
|
const createProjectEnvironment = async (name: string, slug: string) => {
|
|
const res = await testServer.inject({
|
|
method: "POST",
|
|
url: `/api/v1/workspace/${seedData1.project.id}/environments`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
body: {
|
|
name,
|
|
slug
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("environment");
|
|
return payload.environment;
|
|
};
|
|
|
|
const deleteProjectEnvironment = async (envId: string) => {
|
|
const res = await testServer.inject({
|
|
method: "DELETE",
|
|
url: `/api/v1/workspace/${seedData1.project.id}/environments/${envId}`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("environment");
|
|
return payload.environment;
|
|
};
|
|
|
|
describe("Project Environment Router", async () => {
|
|
test("Get default environments", async () => {
|
|
const res = await testServer.inject({
|
|
method: "GET",
|
|
url: `/api/v1/workspace/${seedData1.project.id}`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("workspace");
|
|
// check for default environments
|
|
expect(payload).toEqual({
|
|
workspace: expect.objectContaining({
|
|
name: seedData1.project.name,
|
|
id: seedData1.project.id,
|
|
slug: seedData1.project.slug,
|
|
environments: expect.arrayContaining([
|
|
expect.objectContaining(DEFAULT_PROJECT_ENVS[0]),
|
|
expect.objectContaining(DEFAULT_PROJECT_ENVS[1]),
|
|
expect.objectContaining(DEFAULT_PROJECT_ENVS[2])
|
|
])
|
|
})
|
|
});
|
|
// ensure only two default environments exist
|
|
expect(payload.workspace.environments.length).toBe(3);
|
|
});
|
|
|
|
const mockProjectEnv = { name: "temp", slug: "temp" }; // id will be filled in create op
|
|
test("Create environment", async () => {
|
|
const newEnvironment = await createProjectEnvironment(mockProjectEnv.name, mockProjectEnv.slug);
|
|
expect(newEnvironment).toEqual(
|
|
expect.objectContaining({
|
|
id: expect.any(String),
|
|
name: mockProjectEnv.name,
|
|
slug: mockProjectEnv.slug,
|
|
projectId: seedData1.project.id,
|
|
position: DEFAULT_PROJECT_ENVS.length + 1,
|
|
createdAt: expect.any(String),
|
|
updatedAt: expect.any(String)
|
|
})
|
|
);
|
|
await deleteProjectEnvironment(newEnvironment.id);
|
|
});
|
|
|
|
test("Update environment", async () => {
|
|
const newEnvironment = await createProjectEnvironment(mockProjectEnv.name, mockProjectEnv.slug);
|
|
const updatedName = { name: "temp#2", slug: "temp2" };
|
|
const res = await testServer.inject({
|
|
method: "PATCH",
|
|
url: `/api/v1/workspace/${seedData1.project.id}/environments/${newEnvironment.id}`,
|
|
headers: {
|
|
authorization: `Bearer ${jwtAuthToken}`
|
|
},
|
|
body: {
|
|
name: updatedName.name,
|
|
slug: updatedName.slug,
|
|
position: 1
|
|
}
|
|
});
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
const payload = JSON.parse(res.payload);
|
|
expect(payload).toHaveProperty("environment");
|
|
expect(payload.environment).toEqual(
|
|
expect.objectContaining({
|
|
id: newEnvironment.id,
|
|
name: updatedName.name,
|
|
slug: updatedName.slug,
|
|
projectId: seedData1.project.id,
|
|
position: 1,
|
|
createdAt: expect.any(String),
|
|
updatedAt: expect.any(String)
|
|
})
|
|
);
|
|
await deleteProjectEnvironment(newEnvironment.id);
|
|
});
|
|
|
|
test("Delete environment", async () => {
|
|
const newEnvironment = await createProjectEnvironment(mockProjectEnv.name, mockProjectEnv.slug);
|
|
const deletedProjectEnvironment = await deleteProjectEnvironment(newEnvironment.id);
|
|
expect(deletedProjectEnvironment).toEqual(
|
|
expect.objectContaining({
|
|
id: deletedProjectEnvironment.id,
|
|
name: mockProjectEnv.name,
|
|
slug: mockProjectEnv.slug,
|
|
position: 4,
|
|
createdAt: expect.any(String),
|
|
updatedAt: expect.any(String)
|
|
})
|
|
);
|
|
});
|
|
});
|