add integration tests for checking service token with overrides

This commit is contained in:
Maidul Islam
2023-04-12 12:00:27 -07:00
parent e2c67ffbef
commit dda5f75450
4 changed files with 159 additions and 69 deletions
+12 -4
View File
@@ -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=="
}
}
]
+4
View File
@@ -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)
})
}) })
}) })