permission-node: list all incorrect resource types in apply-conditions handler

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
This commit is contained in:
MT Lewis
2022-01-13 10:52:05 +00:00
parent 1fb2e0e0b4
commit 34a4be296f
2 changed files with 26 additions and 8 deletions
@@ -244,8 +244,24 @@ describe('createPermissionIntegrationRouter', () => {
items: [
{
id: '123',
resourceRef: 'default:test/resource',
resourceType: 'test-incorrect-resource',
resourceRef: 'default:test/resource-1',
resourceType: 'test-incorrect-resource-1',
conditions: {
anyOf: [],
},
},
{
id: '234',
resourceRef: 'default:test/resource-2',
resourceType: 'test-resource',
conditions: {
anyOf: [],
},
},
{
id: '345',
resourceRef: 'default:test/resource-3',
resourceType: 'test-incorrect-resource-2',
conditions: {
anyOf: [],
},
@@ -255,7 +271,7 @@ describe('createPermissionIntegrationRouter', () => {
expect(response.status).toEqual(400);
expect(response.error && response.error.text).toMatch(
/unexpected resource type: test-incorrect-resource/i,
/unexpected resource types: test-incorrect-resource-1, test-incorrect-resource-2/i,
);
});
@@ -174,12 +174,14 @@ export const createPermissionIntegrationRouter = <TResource>(options: {
const assertValidResourceTypes = (
requests: ApplyConditionsRequestEntry[],
) => {
const invalidResourceType = requests.find(
request => request.resourceType !== resourceType,
)?.resourceType;
const invalidResourceTypes = requests
.filter(request => request.resourceType !== resourceType)
.map(request => request.resourceType);
if (invalidResourceType) {
throw new InputError(`Unexpected resource type: ${invalidResourceType}.`);
if (invalidResourceTypes.length) {
throw new InputError(
`Unexpected resource types: ${invalidResourceTypes.join(', ')}.`,
);
}
};