From a6a66d9845b80bfcbb72c18a0bfe70c18a2827a2 Mon Sep 17 00:00:00 2001 From: Natay Aberra Date: Wed, 19 Feb 2025 14:09:58 -0500 Subject: [PATCH] PDE-5589 update field constraints error.schema --- .../lib/functional-constraints/AuthFieldisSafe.js | 14 ++++++++------ packages/schema/test/index.js | 1 - 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/schema/lib/functional-constraints/AuthFieldisSafe.js b/packages/schema/lib/functional-constraints/AuthFieldisSafe.js index c5428ebdf..5efb06578 100644 --- a/packages/schema/lib/functional-constraints/AuthFieldisSafe.js +++ b/packages/schema/lib/functional-constraints/AuthFieldisSafe.js @@ -33,7 +33,7 @@ const FORBIDDEN_KEYS = [ const isSensitiveKey = (key = '') => FORBIDDEN_KEYS.some((forbidden) => key.toLowerCase().includes(forbidden)); -const checkAuthField = (field) => { +const checkAuthField = (field, mainSchema) => { const errors = []; // if the field key contains any forbidden substring (case-insensitive), @@ -46,7 +46,7 @@ const checkAuthField = (field) => { new jsonschema.ValidationError( `cannot set isNoSecret as true for the sensitive key "${field.key}".`, field, - '/AuthFieldSchema', + 'instance.schema', 'instance.field', 'sensitive', 'field', @@ -70,8 +70,9 @@ module.exports = (definition, mainSchema) => { ) { const definitions = Array.isArray(definition) ? definition : [definition]; definitions.forEach((field, index) => { - checkAuthField(field).forEach((err) => { + checkAuthField(field, mainSchema).forEach((err) => { err.property = `instance[${index}]`; + err.schema = mainSchema.id; err.stack = err.stack.replace('instance.field', err.property); errors.push(err); }); @@ -85,7 +86,8 @@ module.exports = (definition, mainSchema) => { if (definition.authentication.inputFields) { definition.authentication.inputFields.forEach((field, index) => { - checkAuthField(field).forEach((err) => { + checkAuthField(field, mainSchema).forEach((err) => { + err.schema = AUTH_INPUT_FIELD_ID; err.property = `instance.authentication.inputFields[${index}]`; err.stack = err.stack.replace('instance.field', err.property); errors.push(err); @@ -94,8 +96,8 @@ module.exports = (definition, mainSchema) => { } if (definition.authentication.outputFields) { definition.authentication.outputFields.forEach((field, index) => { - checkAuthField(field).forEach((err) => { - err.property = `instance.authentication.outputFields[${index}]`; + checkAuthField(field, mainSchema).forEach((err) => { + err.schema = AUTH_OUTPUT_FIELD_ID; err.stack = err.stack.replace('instance.field', err.property); errors.push(err); }); diff --git a/packages/schema/test/index.js b/packages/schema/test/index.js index 058562204..92f9260b1 100644 --- a/packages/schema/test/index.js +++ b/packages/schema/test/index.js @@ -284,7 +284,6 @@ describe('app', () => { // Expect at least one error because "password" can't have isNoSecret = true results.errors.should.have.length(1); should(results.valid).eql(false); - const [error] = results.errors; error.name.should.equal('sensitive'); error.stack.should.eql(