mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 16:27:46 +00:00
add integration tests for checking service token with overrides
This commit is contained in:
@@ -15,7 +15,7 @@ const apiLimiter = rateLimit({
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 10 requests per minute
|
// 10 requests per minute
|
||||||
const authLimiter = rateLimit({
|
const authLimit = rateLimit({
|
||||||
windowMs: 60 * 1000,
|
windowMs: 60 * 1000,
|
||||||
max: 10,
|
max: 10,
|
||||||
standardHeaders: true,
|
standardHeaders: true,
|
||||||
@@ -36,8 +36,16 @@ const passwordLimiter = rateLimit({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
export {
|
const authLimiter = (req: any, res: any, next: any) => {
|
||||||
apiLimiter,
|
if (process.env.NODE_ENV === 'production') {
|
||||||
|
authLimit(req, res, next);
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export {
|
||||||
|
apiLimiter,
|
||||||
authLimiter,
|
authLimiter,
|
||||||
passwordLimiter
|
passwordLimiter
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"method": "POST",
|
||||||
|
"secret": {
|
||||||
|
"workspace": "63cefb15c8d3175601cfa989",
|
||||||
|
"type": "shared",
|
||||||
|
"tags": [],
|
||||||
|
"environment": "dev",
|
||||||
|
"secretKeyCiphertext": "eaX9a2g=",
|
||||||
|
"secretKeyIV": "YJ4adgI/wEHifGdtT9reaA==",
|
||||||
|
"secretKeyTag": "dP73x3wrq7pqxzAHo+bfPA==",
|
||||||
|
"secretValueCiphertext": "cw==",
|
||||||
|
"secretValueIV": "7ksYWWZ3+9rzLG5NpEbEgg==",
|
||||||
|
"secretValueTag": "H0YQ8vrhiVJ0XSW4nBJdQA==",
|
||||||
|
"secretCommentCiphertext": "",
|
||||||
|
"secretCommentIV": "yXhMdLdA9q7Vaw4UUaeBYA==",
|
||||||
|
"secretCommentTag": "qMj7SHESM5Jn+C2qpbw2pA=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"method": "POST",
|
||||||
|
"secret": {
|
||||||
|
"workspace": "63cefb15c8d3175601cfa989",
|
||||||
|
"type": "shared",
|
||||||
|
"tags": [],
|
||||||
|
"environment": "dev",
|
||||||
|
"secretKeyIV": "YJ4adgI/wEHifGdtT9reaA==",
|
||||||
|
"secretKeyTag": "dP73x3wrq7pqxzAHo+bfPA==",
|
||||||
|
"secretValueIV": "7ksYWWZ3+9rzLG5NpEbEgg==",
|
||||||
|
"secretValueTag": "H0YQ8vrhiVJ0XSW4nBJdQA==",
|
||||||
|
"secretCommentIV": "yXhMdLdA9q7Vaw4UUaeBYA==",
|
||||||
|
"secretCommentTag": "qMj7SHESM5Jn+C2qpbw2pA=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"method": "POST",
|
||||||
|
"secret": {
|
||||||
|
"workspace": "63cefb15c8d3175601cfa989",
|
||||||
|
"type": "shared",
|
||||||
|
"tags": [],
|
||||||
|
"environment": "dev",
|
||||||
|
"secretKeyIV": "YJ4adgI/wEHifGdtT9reaA==",
|
||||||
|
"secretKeyTag": "dP73x3wrq7pqxzAHo+bfPA==",
|
||||||
|
"secretValueCiphertext": "cw==",
|
||||||
|
"secretValueTag": "H0YQ8vrhiVJ0XSW4nBJdQA==",
|
||||||
|
"secretCommentCiphertext": "",
|
||||||
|
"secretCommentIV": "yXhMdLdA9q7Vaw4UUaeBYA==",
|
||||||
|
"secretCommentTag": "qMj7SHESM5Jn+C2qpbw2pA=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -89,4 +89,8 @@ export const getServiceTokenFromTestUser = async () => {
|
|||||||
|
|
||||||
export const deleteAllSecrets = async () => {
|
export const deleteAllSecrets = async () => {
|
||||||
await Secret.deleteMany()
|
await Secret.deleteMany()
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getAllSecrets = async () => {
|
||||||
|
return await Secret.find()
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
import request from 'supertest'
|
import request from 'supertest'
|
||||||
import main from '../../../../src/index'
|
import main from '../../../../src/index'
|
||||||
import { testWorkspaceId } from '../../../../src/utils/addDevelopmentUser';
|
import { testWorkspaceId } from '../../../../src/utils/addDevelopmentUser';
|
||||||
import { deleteAllSecrets, getJWTFromTestUser, getServiceTokenFromTestUser } from '../../../helper/helper';
|
import { deleteAllSecrets, getAllSecrets, getJWTFromTestUser, getServiceTokenFromTestUser } from '../../../helper/helper';
|
||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const batchSecretRequestWithNoOverride = require('../../../data/batch-secrets-no-override.json');
|
const batchSecretRequestWithNoOverride = require('../../../data/batch-secrets-no-override.json');
|
||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const batchSecretRequestWithOverrides = require('../../../data/batch-secrets-with-overrides.json');
|
const batchSecretRequestWithOverrides = require('../../../data/batch-secrets-with-overrides.json');
|
||||||
|
|
||||||
let server: any;
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const batchSecretRequestWithBadRequest = require('../../../data/batch-create-secrets-with-some-missing-params.json');
|
||||||
|
|
||||||
|
let server: any;
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
server = await main;
|
server = await main;
|
||||||
});
|
});
|
||||||
@@ -289,93 +291,118 @@ describe("GET /api/v2/secrets", () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// test("should create secrets and read secrets via service token when no overrides", async () => {
|
test("should create secrets and read secrets via service token when no overrides", async () => {
|
||||||
// // get login details
|
try {
|
||||||
// const loginResponse = await getJWTFromTestUser()
|
// get login details
|
||||||
|
const loginResponse = await getJWTFromTestUser()
|
||||||
|
|
||||||
// // create secrets
|
// create secrets
|
||||||
// const createSecretsResponse = await request(server)
|
const createSecretsResponse = await request(server)
|
||||||
// .post("/api/v2/secrets/batch")
|
.post("/api/v2/secrets/batch")
|
||||||
// .set('Authorization', `Bearer ${loginResponse.token}`)
|
.set('Authorization', `Bearer ${loginResponse.token}`)
|
||||||
// .send({
|
.send({
|
||||||
// workspaceId: testWorkspaceId,
|
workspaceId: testWorkspaceId,
|
||||||
// environment: "dev",
|
environment: "dev",
|
||||||
// requests: batchSecretRequestWithNoOverride
|
requests: batchSecretRequestWithNoOverride
|
||||||
// })
|
})
|
||||||
|
|
||||||
// expect(createSecretsResponse.statusCode).toBe(200)
|
expect(createSecretsResponse.statusCode).toBe(200)
|
||||||
|
|
||||||
|
|
||||||
// // now use the service token to fetch secrets
|
// now use the service token to fetch secrets
|
||||||
// const serviceToken = await getServiceTokenFromTestUser()
|
const serviceToken = await getServiceTokenFromTestUser()
|
||||||
|
|
||||||
// const getSecrets = await request(server)
|
const getSecrets = await request(server)
|
||||||
// .get("/api/v2/secrets")
|
.get("/api/v2/secrets")
|
||||||
// .set('Authorization', `Bearer ${serviceToken}`)
|
.set('Authorization', `Bearer ${serviceToken}`)
|
||||||
// .query({
|
.query({
|
||||||
// workspaceId: testWorkspaceId,
|
workspaceId: testWorkspaceId,
|
||||||
// environment: "dev"
|
environment: "dev"
|
||||||
// })
|
})
|
||||||
|
|
||||||
// expect(getSecrets.statusCode).toBe(200)
|
expect(getSecrets.statusCode).toBe(200)
|
||||||
// expect(getSecrets.body).toHaveProperty("secrets")
|
expect(getSecrets.body).toHaveProperty("secrets")
|
||||||
// expect(getSecrets.body.secrets).toHaveLength(3)
|
expect(getSecrets.body.secrets).toHaveLength(3)
|
||||||
// expect(getSecrets.body.secrets).toBeInstanceOf(Array);
|
expect(getSecrets.body.secrets).toBeInstanceOf(Array);
|
||||||
|
|
||||||
// getSecrets.body.secrets.forEach((secret: any) => {
|
getSecrets.body.secrets.forEach((secret: any) => {
|
||||||
// expect(secret).toHaveProperty('_id');
|
expect(secret).toHaveProperty('_id');
|
||||||
// expect(secret._id).toBeTruthy();
|
expect(secret._id).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('version');
|
expect(secret).toHaveProperty('version');
|
||||||
// expect(secret.version).toBeTruthy();
|
expect(secret.version).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('workspace');
|
expect(secret).toHaveProperty('workspace');
|
||||||
// expect(secret.workspace).toBeTruthy();
|
expect(secret.workspace).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('type');
|
expect(secret).toHaveProperty('type');
|
||||||
// expect(secret.type).toBeTruthy();
|
expect(secret.type).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('tags');
|
expect(secret).toHaveProperty('tags');
|
||||||
// expect(secret.tags).toHaveLength(0);
|
expect(secret.tags).toHaveLength(0);
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('environment');
|
expect(secret).toHaveProperty('environment');
|
||||||
// expect(secret.environment).toEqual("dev");
|
expect(secret.environment).toEqual("dev");
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretKeyCiphertext');
|
expect(secret).toHaveProperty('secretKeyCiphertext');
|
||||||
// expect(secret.secretKeyCiphertext).toBeTruthy();
|
expect(secret.secretKeyCiphertext).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretKeyIV');
|
expect(secret).toHaveProperty('secretKeyIV');
|
||||||
// expect(secret.secretKeyIV).toBeTruthy();
|
expect(secret.secretKeyIV).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretKeyTag');
|
expect(secret).toHaveProperty('secretKeyTag');
|
||||||
// expect(secret.secretKeyTag).toBeTruthy();
|
expect(secret.secretKeyTag).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretValueCiphertext');
|
expect(secret).toHaveProperty('secretValueCiphertext');
|
||||||
// expect(secret.secretValueCiphertext).toBeTruthy();
|
expect(secret.secretValueCiphertext).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretValueIV');
|
expect(secret).toHaveProperty('secretValueIV');
|
||||||
// expect(secret.secretValueIV).toBeTruthy();
|
expect(secret.secretValueIV).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretValueTag');
|
expect(secret).toHaveProperty('secretValueTag');
|
||||||
// expect(secret.secretValueTag).toBeTruthy();
|
expect(secret.secretValueTag).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretCommentCiphertext');
|
expect(secret).toHaveProperty('secretCommentCiphertext');
|
||||||
// expect(secret.secretCommentCiphertext).toBeFalsy();
|
expect(secret.secretCommentCiphertext).toBeFalsy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretCommentIV');
|
expect(secret).toHaveProperty('secretCommentIV');
|
||||||
// expect(secret.secretCommentIV).toBeTruthy();
|
expect(secret.secretCommentIV).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('secretCommentTag');
|
expect(secret).toHaveProperty('secretCommentTag');
|
||||||
// expect(secret.secretCommentTag).toBeTruthy();
|
expect(secret.secretCommentTag).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('createdAt');
|
expect(secret).toHaveProperty('createdAt');
|
||||||
// expect(secret.createdAt).toBeTruthy();
|
expect(secret.createdAt).toBeTruthy();
|
||||||
|
|
||||||
// expect(secret).toHaveProperty('updatedAt');
|
expect(secret).toHaveProperty('updatedAt');
|
||||||
// expect(secret.updatedAt).toBeTruthy();
|
expect(secret.updatedAt).toBeTruthy();
|
||||||
// });
|
});
|
||||||
// })
|
} finally {
|
||||||
|
// clean up
|
||||||
|
await deleteAllSecrets()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("create secrets via JWT", () => {
|
||||||
|
test("Create secrets via jwt when some requests have missing required parameters", async () => {
|
||||||
|
// get login details
|
||||||
|
const loginResponse = await getJWTFromTestUser()
|
||||||
|
|
||||||
|
// create creates
|
||||||
|
const createSecretsResponse = await request(server)
|
||||||
|
.post("/api/v2/secrets/batch")
|
||||||
|
.set('Authorization', `Bearer ${loginResponse.token}`)
|
||||||
|
.send({
|
||||||
|
workspaceId: testWorkspaceId,
|
||||||
|
environment: "dev",
|
||||||
|
requests: batchSecretRequestWithBadRequest
|
||||||
|
})
|
||||||
|
|
||||||
|
const allSecretsInDB = await getAllSecrets()
|
||||||
|
|
||||||
|
expect(createSecretsResponse.statusCode).toBe(500) // TODO should be set to 400
|
||||||
|
expect(allSecretsInDB).toHaveLength(0)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
Reference in New Issue
Block a user