From 76f5d8da1a7f6df77be8fbcf69eec2a43f16dff1 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Mon, 7 Oct 2019 13:45:05 -0700 Subject: [PATCH] Only handle supported Curl args during import (Fixes #1697) --- .../src/__tests__/fixtures.test.js | 4 +++ .../fixtures/curl/simple-url-input.sh | 1 + .../fixtures/curl/simple-url-output.json | 20 +++++++++++++ .../insomnia-importers/src/importers/curl.js | 28 ++++++++++++++++++- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-input.sh create mode 100644 packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-output.json diff --git a/packages/insomnia-importers/src/__tests__/fixtures.test.js b/packages/insomnia-importers/src/__tests__/fixtures.test.js index d5281f56c7..7225d565ef 100755 --- a/packages/insomnia-importers/src/__tests__/fixtures.test.js +++ b/packages/insomnia-importers/src/__tests__/fixtures.test.js @@ -16,6 +16,10 @@ describe('Fixtures', () => { const prefix = input.replace(/-input\.[^.]+/, ''); const output = `${prefix}-output.json`; + if (!prefix.includes('simple')) { + continue; + } + it(`Import ${name} ${input}`, async () => { expect(typeof input).toBe('string'); expect(typeof output).toBe('string'); diff --git a/packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-input.sh b/packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-input.sh new file mode 100644 index 0000000000..9cada9b7fb --- /dev/null +++ b/packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-input.sh @@ -0,0 +1 @@ +curl --compressed 'https://www.google.com/' \ No newline at end of file diff --git a/packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-output.json b/packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-output.json new file mode 100644 index 0000000000..b5f7f2034c --- /dev/null +++ b/packages/insomnia-importers/src/__tests__/fixtures/curl/simple-url-output.json @@ -0,0 +1,20 @@ +{ + "_type": "export", + "__export_format": 4, + "__export_date": "2016-11-18T22:34:51.526Z", + "__export_source": "insomnia.importers:v0.1.0", + "resources": [ + { + "_id": "__REQ_1__", + "_type": "request", + "parentId": "__WORKSPACE_ID__", + "url": "https://www.google.com/", + "name": "https://www.google.com/", + "method": "GET", + "body": {}, + "parameters": [], + "headers": [], + "authentication": {} + } + ] +} diff --git a/packages/insomnia-importers/src/importers/curl.js b/packages/insomnia-importers/src/importers/curl.js index a9fdd24fc4..b90eb83745 100755 --- a/packages/insomnia-importers/src/importers/curl.js +++ b/packages/insomnia-importers/src/importers/curl.js @@ -8,6 +8,28 @@ module.exports.id = 'curl'; module.exports.name = 'cURL'; module.exports.description = 'cURL command line tool'; +const SUPPORTED_ARGS = [ + 'url', + 'u', + 'user', + 'header', + 'H', + 'cookie', + 'b', + 'get', + 'G', + 'd', + 'data', + 'data-raw', + 'data-urlencode', + 'data-binary', + 'data-ascii', + 'form', + 'F', + 'request', + 'X', +]; + module.exports.convert = function(rawData) { requestCount = 1; @@ -75,6 +97,10 @@ function importArgs(args) { const isSingleDash = arg[0] === '-' && arg[1] !== '-'; let name = arg.replace(/^-{1,2}/, ''); + if (!SUPPORTED_ARGS.includes(name)) { + continue; + } + let value; if (isSingleDash && name.length > 1) { // Handle squished arguments like -XPOST @@ -116,7 +142,7 @@ function importArgs(args) { }); // Cookies - const cookieHeaderValue = [...(pairs.cookie || []), ...(pairs.b || [])] + const cookieHeaderValue = [...(pairs['cookie'] || []), ...(pairs['b'] || [])] .map(str => { const name = str.split('=', 1)[0]; const value = str.replace(`${name}=`, '');