@cloud-copilot/iam-simulate
Version:
Simulate evaluation of AWS IAM policies
37 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.testOperator = testOperator;
const vitest_1 = require("vitest");
const request_js_1 = require("../request/request.js");
const requestContext_js_1 = require("../requestContext.js");
function testOperator(name, tests, operator) {
(0, vitest_1.describe)(name, (it) => {
for (const test of tests) {
it(test.name, () => {
//Given the request
const request = new request_js_1.AwsRequestImpl('', { resource: '', accountId: '' }, '', new requestContext_js_1.RequestContextImpl(test.requestContext || {}));
//When the condition is evaluated
const result = operator.matches(request, test.testValue, test.policyValues);
//Then the result should be as expected
(0, vitest_1.expect)(result.matches).toBe(test.expected);
if (test.explains) {
for (const explain of test.explains) {
const found = result.explains.find((e) => e.value === explain.value);
(0, vitest_1.expect)(found, `Missing explain for ${explain.value}`).toBeDefined();
(0, vitest_1.expect)(found?.matches, `${explain.value} match`).toBe(explain.matches);
if (explain.resolvedValue) {
(0, vitest_1.expect)(found?.resolvedValue, `${explain.value} resolved value`).toBe(explain.resolvedValue);
}
else {
(0, vitest_1.expect)(found?.resolvedValue, `${explain.value} resolved value to be undefined`).toBeUndefined();
}
if (explain.errors) {
(0, vitest_1.expect)(found?.errors, `${explain.value} errors`).toEqual(explain.errors.sort());
}
}
}
});
}
});
}
//# sourceMappingURL=baseConditionperatorTests.js.map