From 3e7b9d46d83b8a0bac3bfd2d1d0322d3bb84afca Mon Sep 17 00:00:00 2001 From: Faisal Animashaun Date: Sat, 30 Mar 2024 21:18:17 -0400 Subject: [PATCH 1/2] feat: check command input is valid array --- index.js | 13 ++++++++++++- index.test.js | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index c15ba606..04a23d3c 100644 --- a/index.js +++ b/index.js @@ -39,7 +39,18 @@ async function run() { containerDef.image = imageURI; if (command) { - containerDef.command = command.split(' ') + const invalidCommandErrorMessage = `Invalid command: '${command}'. command must be a valid JSON array.` + try { + const parsedCommand = JSON.parse(command); + if (!Array.isArray(parsedCommand)) { + // The parsed object is not an array. + throw new Error(invalidCommandErrorMessage); + } + containerDef.command = parsedCommand; + } catch (e) { + // The string is not a valid array. + throw new Error(invalidCommandErrorMessage); + } } if (environmentVariables) { diff --git a/index.test.js b/index.test.js index 0e019dc4..6ffaa13e 100644 --- a/index.test.js +++ b/index.test.js @@ -386,7 +386,7 @@ describe('Render task definition', () => { .mockReturnValueOnce('awslogs') .mockReturnValueOnce('awslogs-create-group=true\nawslogs-group=/ecs/web\nawslogs-region=us-east-1\nawslogs-stream-prefix=ecs') .mockReturnValueOnce('key1=value1\nkey2=value2') - .mockReturnValueOnce('npm start --nice --please'); + .mockReturnValueOnce('["npm", "start", "--nice", "--please"]'); await run(); @@ -446,4 +446,21 @@ describe('Render task definition', () => { }, null, 2) ); }); + + test('error returned for invalid command', async () => { + core.getInput = jest + .fn() + .mockReturnValueOnce('task-definition.json') + .mockReturnValueOnce('web') + .mockReturnValueOnce('nginx:latest') + .mockReturnValueOnce('EXAMPLE=here') + .mockReturnValueOnce('awslogs') + .mockReturnValueOnce('awslogs-create-group=true\nawslogs-group=/ecs/web\nawslogs-region=us-east-1\nawslogs-stream-prefix=ecs') + .mockReturnValueOnce('key1=value1\nkey2=value2') + .mockReturnValueOnce('npm start --nice --please'); + + await run(); + + expect(core.setFailed).toBeCalledWith('Invalid command: \'npm start --nice --please\'. command must be a valid JSON array.'); + }); }); From 2f2f0db05c72da33d9a57861be99f3b1dff01490 Mon Sep 17 00:00:00 2001 From: Faisal Animashaun Date: Sat, 11 May 2024 23:49:41 -0400 Subject: [PATCH 2/2] run npm run package --- dist/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dist/index.js b/dist/index.js index 00e4a4b3..cbf8b89d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -45,7 +45,18 @@ async function run() { containerDef.image = imageURI; if (command) { - containerDef.command = command.split(' ') + const invalidCommandErrorMessage = `Invalid command: '${command}'. command must be a valid JSON array.` + try { + const parsedCommand = JSON.parse(command); + if (!Array.isArray(parsedCommand)) { + // The parsed object is not an array. + throw new Error(invalidCommandErrorMessage); + } + containerDef.command = parsedCommand; + } catch (e) { + // The string is not a valid array. + throw new Error(invalidCommandErrorMessage); + } } if (envFiles) {