From 2f34622e8fd3f42a71d62a4d22a3d2ed879c19c5 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Thu, 28 Sep 2023 16:20:44 -0700 Subject: [PATCH 1/2] check existence of value in header --- .../testing/testController/common/utils.ts | 2 +- .../testing/testController/utils.unit.test.ts | 39 ++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/client/testing/testController/common/utils.ts b/src/client/testing/testController/common/utils.ts index f34d0172abd6..f5f416529c42 100644 --- a/src/client/testing/testController/common/utils.ts +++ b/src/client/testing/testController/common/utils.ts @@ -114,7 +114,7 @@ export function parseJsonRPCHeadersAndData(rawData: string): ParsedRPCHeadersAnd break; } const [key, value] = line.split(':'); - if (value.trim()) { + if (value && value.trim()) { if ([JSONRPC_UUID_HEADER, JSONRPC_CONTENT_LENGTH_HEADER, JSONRPC_CONTENT_TYPE_HEADER].includes(key)) { headerMap.set(key.trim(), value.trim()); } diff --git a/src/test/testing/testController/utils.unit.test.ts b/src/test/testing/testController/utils.unit.test.ts index 12100252d1a9..da77d3886c1e 100644 --- a/src/test/testing/testController/utils.unit.test.ts +++ b/src/test/testing/testController/utils.unit.test.ts @@ -65,7 +65,44 @@ suite('Test Controller Utils: JSON RPC', () => { assert.deepStrictEqual(rpcContent.extractedJSON, json); assert.deepStrictEqual(rpcContent.remainingRawData, rawDataString); }); -}); + + test('Valid constant', async () => { + const data = `{"cwd": "/Users/eleanorboyd/testingFiles/inc_dec_example", "status": "success", "result": {"test_dup_class.test_a.TestSomething.test_a": {"test": "test_dup_class.test_a.TestSomething.test_a", "outcome": "success", "message": "None", "traceback": null, "subtest": null}}}`; + const secondPayload = `Content-Length: 270 +Content-Type: application/json +Request-uuid: 496c86b1-608f-4886-9436-ec00538e144c + +${data}`; + const payload = `Content-Length: 270 +Content-Type: application/json +Request-uuid: 496c86b1-608f-4886-9436-ec00538e144c + +${data}${secondPayload}`; + + const rpcHeaders = parseJsonRPCHeadersAndData(payload); + assert.deepStrictEqual(rpcHeaders.headers.size, 3); + const rpcContent = ExtractJsonRPCData(rpcHeaders.headers.get('Content-Length'), rpcHeaders.remainingRawData); + assert.deepStrictEqual(rpcContent.extractedJSON, data); + assert.deepStrictEqual(rpcContent.remainingRawData, secondPayload); + }); + test('Valid content length as only header with carriage return', async () => { + const payload = `Content-Length: 7 + `; + + const rpcHeaders = parseJsonRPCHeadersAndData(payload); + assert.deepStrictEqual(rpcHeaders.headers.size, 1); + const rpcContent = ExtractJsonRPCData(rpcHeaders.headers.get('Content-Length'), rpcHeaders.remainingRawData); + assert.deepStrictEqual(rpcContent.extractedJSON, ''); + assert.deepStrictEqual(rpcContent.remainingRawData, ''); + }); + test('Valid content length header with no value', async () => { + const payload = `Content-Length:`; + + const rpcHeaders = parseJsonRPCHeadersAndData(payload); + const rpcContent = ExtractJsonRPCData(rpcHeaders.headers.get('Content-Length'), rpcHeaders.remainingRawData); + assert.deepStrictEqual(rpcContent.extractedJSON, ''); + assert.deepStrictEqual(rpcContent.remainingRawData, ''); + }); suite('Test Controller Utils: Other', () => { interface TestCase { From 104badea0d690409186e4d96f08793147bb9c5f3 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Fri, 29 Sep 2023 14:39:18 -0700 Subject: [PATCH 2/2] fix formatting --- .../testing/testController/utils.unit.test.ts | 103 +++++++++--------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/src/test/testing/testController/utils.unit.test.ts b/src/test/testing/testController/utils.unit.test.ts index da77d3886c1e..014261a40232 100644 --- a/src/test/testing/testController/utils.unit.test.ts +++ b/src/test/testing/testController/utils.unit.test.ts @@ -104,57 +104,58 @@ ${data}${secondPayload}`; assert.deepStrictEqual(rpcContent.remainingRawData, ''); }); -suite('Test Controller Utils: Other', () => { - interface TestCase { - name: string; - input: string; - expectedParent: string; - expectedSubtest: string; - } - - const testCases: Array = [ - { - name: 'Single parameter, named', - input: 'test_package.ClassName.test_method (param=value)', - expectedParent: 'test_package.ClassName.test_method', - expectedSubtest: '(param=value)', - }, - { - name: 'Single parameter, unnamed', - input: 'test_package.ClassName.test_method [value]', - expectedParent: 'test_package.ClassName.test_method', - expectedSubtest: '[value]', - }, - { - name: 'Multiple parameters, named', - input: 'test_package.ClassName.test_method (param1=value1, param2=value2)', - expectedParent: 'test_package.ClassName.test_method', - expectedSubtest: '(param1=value1, param2=value2)', - }, - { - name: 'Multiple parameters, unnamed', - input: 'test_package.ClassName.test_method [value1, value2]', - expectedParent: 'test_package.ClassName.test_method', - expectedSubtest: '[value1, value2]', - }, - { - name: 'Names with special characters', - input: 'test_package.ClassName.test_method (param1=value/1, param2=value+2)', - expectedParent: 'test_package.ClassName.test_method', - expectedSubtest: '(param1=value/1, param2=value+2)', - }, - { - name: 'Names with spaces', - input: 'test_package.ClassName.test_method ["a b c d"]', - expectedParent: 'test_package.ClassName.test_method', - expectedSubtest: '["a b c d"]', - }, - ]; - - testCases.forEach((testCase) => { - test(`splitTestNameWithRegex: ${testCase.name}`, () => { - const splitResult = splitTestNameWithRegex(testCase.input); - assert.deepStrictEqual(splitResult, [testCase.expectedParent, testCase.expectedSubtest]); + suite('Test Controller Utils: Other', () => { + interface TestCase { + name: string; + input: string; + expectedParent: string; + expectedSubtest: string; + } + + const testCases: Array = [ + { + name: 'Single parameter, named', + input: 'test_package.ClassName.test_method (param=value)', + expectedParent: 'test_package.ClassName.test_method', + expectedSubtest: '(param=value)', + }, + { + name: 'Single parameter, unnamed', + input: 'test_package.ClassName.test_method [value]', + expectedParent: 'test_package.ClassName.test_method', + expectedSubtest: '[value]', + }, + { + name: 'Multiple parameters, named', + input: 'test_package.ClassName.test_method (param1=value1, param2=value2)', + expectedParent: 'test_package.ClassName.test_method', + expectedSubtest: '(param1=value1, param2=value2)', + }, + { + name: 'Multiple parameters, unnamed', + input: 'test_package.ClassName.test_method [value1, value2]', + expectedParent: 'test_package.ClassName.test_method', + expectedSubtest: '[value1, value2]', + }, + { + name: 'Names with special characters', + input: 'test_package.ClassName.test_method (param1=value/1, param2=value+2)', + expectedParent: 'test_package.ClassName.test_method', + expectedSubtest: '(param1=value/1, param2=value+2)', + }, + { + name: 'Names with spaces', + input: 'test_package.ClassName.test_method ["a b c d"]', + expectedParent: 'test_package.ClassName.test_method', + expectedSubtest: '["a b c d"]', + }, + ]; + + testCases.forEach((testCase) => { + test(`splitTestNameWithRegex: ${testCase.name}`, () => { + const splitResult = splitTestNameWithRegex(testCase.input); + assert.deepStrictEqual(splitResult, [testCase.expectedParent, testCase.expectedSubtest]); + }); }); }); });