From 306f83b1a755bf9731770cc01fb1773c667805ec Mon Sep 17 00:00:00 2001 From: Andres Jardon Date: Wed, 10 Jan 2024 12:28:31 -0800 Subject: [PATCH] fix: fix output variable validation --- packages/adk-core/test/core.test.ts | 18 +++++++++--------- packages/adk-utils/lib/util/util.ts | 2 +- packages/adk-utils/test/util.test.ts | 12 ++++++------ .../templates/codecatalyst_model_schema.json | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/adk-core/test/core.test.ts b/packages/adk-core/test/core.test.ts index dbcd2447c..20264bb20 100644 --- a/packages/adk-core/test/core.test.ts +++ b/packages/adk-core/test/core.test.ts @@ -77,15 +77,18 @@ describe('@aws/codecatalyst-adk-core', () => { it('test setOutput validation', () => { const errorMessage = `Invalid output parameter name, it must match the following pattern ${outputVariableNamePattern}`; const outputParamValue = 'outputParamValue'; - const validInput30Chars = 'Stack_ID_12345678910111213145'; + const validInput40Chars = 'Stack_ID-1234567891011121314512345678911'; + const validInput = 'Stack_ID'; const emptyInput = ''; const invalidInput = 'Stack ID'; const tooLongInput = 'longer_than_255_chars_123456789101112131415161718487612357845768929562892576458234765287495628495682412345678910111213141516171848761235784576892956289257645823476528749562849568241234567891011121314151617184876123578457689295628925764582347652874956284959'; - const startsWithInvalidChar = '-Stack_ID'; - const endsWithInvalidChar = 'Stack_ID-'; + const validInputSpecialChar = '-StackA_a-@_ID'; + const invalidInputWithInvalidSpecialChar = 'Stack$#:ID'; - expect(adkCore.setOutput(validInput30Chars, outputParamValue).code === undefined).toBeTruthy(); + expect(adkCore.setOutput(validInput40Chars, outputParamValue).code === undefined).toBeTruthy(); + expect(adkCore.setOutput(validInput, outputParamValue).code === undefined).toBeTruthy(); + expect(adkCore.setOutput(validInputSpecialChar, outputParamValue).code === undefined).toBeTruthy(); expect(adkCore.setOutput(emptyInput, outputParamValue).code === 1).toBeTruthy(); expect(adkCore.setOutput(emptyInput, outputParamValue).stdout === errorMessage).toBeTruthy(); @@ -96,11 +99,8 @@ describe('@aws/codecatalyst-adk-core', () => { expect(adkCore.setOutput(tooLongInput, outputParamValue).code === 1).toBeTruthy(); expect(adkCore.setOutput(tooLongInput, outputParamValue).stdout === errorMessage).toBeTruthy(); - expect(adkCore.setOutput(startsWithInvalidChar, outputParamValue).code === 1).toBeTruthy(); - expect(adkCore.setOutput(startsWithInvalidChar, outputParamValue).stdout === errorMessage).toBeTruthy(); - - expect(adkCore.setOutput(endsWithInvalidChar, outputParamValue).code === 1).toBeTruthy(); - expect(adkCore.setOutput(endsWithInvalidChar, outputParamValue).stdout === errorMessage).toBeTruthy(); + expect(adkCore.setOutput(invalidInputWithInvalidSpecialChar, outputParamValue).code === 1).toBeTruthy(); + expect(adkCore.setOutput(invalidInputWithInvalidSpecialChar, outputParamValue).stdout === errorMessage).toBeTruthy(); }); }); diff --git a/packages/adk-utils/lib/util/util.ts b/packages/adk-utils/lib/util/util.ts index e35a173cc..55f84b33a 100644 --- a/packages/adk-utils/lib/util/util.ts +++ b/packages/adk-utils/lib/util/util.ts @@ -1,6 +1,6 @@ import fs from 'fs'; -export const outputVariableNamePattern = new RegExp(/^[A-Za-z0-9@\\-_]+$/); +export const outputVariableNamePattern = new RegExp(/^[A-Za-z0-9@\-_]+$/); /** * Sanitizes (escapes) special characters in the command and its arguments. diff --git a/packages/adk-utils/test/util.test.ts b/packages/adk-utils/test/util.test.ts index 48ecb8c58..ccb3cdb4f 100644 --- a/packages/adk-utils/test/util.test.ts +++ b/packages/adk-utils/test/util.test.ts @@ -129,19 +129,19 @@ describe('ADK-Util test', () => { it('test validateOutputVariableName', async () => { const validInput = 'Stack_ID'; - const validInput30Chars = 'Stack_ID_12345678910111213145'; + const validInput40Chars = 'Stack_ID-1234567891011121314512345678911'; const emptyInput = ''; const invalidInput = 'Stack ID'; const tooLongInput = 'longer_than_255_chars_123456789101112131415161718487612357845768929562892576458234765287495628495682412345678910111213141516171848761235784576892956289257645823476528749562849568241234567891011121314151617184876123578457689295628925764582347652874956284959'; - const startsWithInvalidChar = '-Stack_ID'; - const endsWithInvalidChar = 'Stack_ID-'; + const validInputSpecialChar = '-StackA_a-@_ID'; + const invalidInputWithInvalidSpecialChar = 'Stack/$#:ID'; expect(isValidOutputVariableName(validInput)).toBeTruthy(); - expect(isValidOutputVariableName(validInput30Chars)).toBeTruthy(); + expect(isValidOutputVariableName(validInput40Chars)).toBeTruthy(); expect(isValidOutputVariableName(emptyInput)).toBeFalsy(); expect(isValidOutputVariableName(invalidInput)).toBeFalsy(); expect(isValidOutputVariableName(tooLongInput)).toBeFalsy(); - expect(isValidOutputVariableName(startsWithInvalidChar)).toBeFalsy(); - expect(isValidOutputVariableName(endsWithInvalidChar)).toBeFalsy(); + expect(isValidOutputVariableName(validInputSpecialChar)).toBeTruthy(); + expect(isValidOutputVariableName(invalidInputWithInvalidSpecialChar)).toBeFalsy(); }); }); diff --git a/packages/adk/templates/codecatalyst_model_schema.json b/packages/adk/templates/codecatalyst_model_schema.json index 806954bd3..b0a2cccec 100644 --- a/packages/adk/templates/codecatalyst_model_schema.json +++ b/packages/adk/templates/codecatalyst_model_schema.json @@ -91,7 +91,7 @@ "description": "Action output variables", "type": "object", "propertyNames": { - "pattern": "^[A-Za-z0-9][A-Za-z0-9\\-_]{1,30}[A-Za-z0-9]$" + "pattern": "^[A-Za-z0-9@\\-_]+$" }, "minProperties": 1, "maxProperties": 10,