diff --git a/packages/bruno-toml/lib/stringify b/packages/bruno-toml/lib/stringify index e7313814c..116680f68 100644 --- a/packages/bruno-toml/lib/stringify +++ b/packages/bruno-toml/lib/stringify @@ -17,8 +17,6 @@ * You can search for "modified for bruno-toml" to see the changes */ - - 'use strict' module.exports = stringify module.exports.value = stringifyInline @@ -73,7 +71,14 @@ function stringifyObject (prefix, indent, obj) { } }) if (result.length > 0) result.push('') - const complexIndent = prefix && inlineKeys.length > 0 ? indent + ' ' : '' + + // original + // const complexIndent = prefix && inlineKeys.length > 0 ? indent + ' ' : '' + + // modified for bruno-toml + // we don't want to indent tables + const complexIndent = ''; + complexKeys.forEach(key => { result.push(stringifyComplex(prefix, complexIndent, key, obj[key])) }) @@ -292,7 +297,12 @@ function stringifyComplexTable (prefix, indent, key, value) { const fullKey = prefix + stringifyKey(key) let result = '' if (getInlineKeys(value).length > 0) { - result += indent + '[' + fullKey + ']\n' + // original + // result += indent + '[' + fullKey + ']\n' + + // modified for bruno-toml + // we don't want to indent tables + result += '[' + fullKey + ']\n' } return result + stringifyObject(fullKey + '.', indent, value) } \ No newline at end of file diff --git a/packages/bruno-toml/src/jsonToToml.js b/packages/bruno-toml/src/jsonToToml.js index 8e87b661f..de62fd611 100644 --- a/packages/bruno-toml/src/jsonToToml.js +++ b/packages/bruno-toml/src/jsonToToml.js @@ -1,5 +1,5 @@ const stringify = require('../lib/stringify'); -const { get, each } = require('lodash'); +const { get, each, filter } = require('lodash'); const jsonToToml = (json) => { const formattedJson = { @@ -15,10 +15,17 @@ const jsonToToml = (json) => { }; if (json.headers && json.headers.length) { - formattedJson.headers = {}; - each(json.headers, (header) => { + const enabledHeaders = filter(json.headers, (header) => header.enabled); + const disabledHeaders = filter(json.headers, (header) => !header.enabled); + each(enabledHeaders, (header) => { + formattedJson.headers = formattedJson.headers || {}; formattedJson.headers[header.name] = header.value; }); + each(disabledHeaders, (header) => { + formattedJson.headers = formattedJson.headers || {}; + formattedJson.headers.disabled = formattedJson.headers.disabled || {}; + formattedJson.headers.disabled[header.name] = header.value; + }); } return stringify(formattedJson); diff --git a/packages/bruno-toml/src/tomlToJson.js b/packages/bruno-toml/src/tomlToJson.js index 92c3fafa0..9c72fdb49 100644 --- a/packages/bruno-toml/src/tomlToJson.js +++ b/packages/bruno-toml/src/tomlToJson.js @@ -18,6 +18,17 @@ const tomlToJson = (toml) => { if (json.headers) { formattedJson.headers = []; Object.keys(json.headers).forEach((key) => { + if (key === 'disabled') { + Object.keys(json.headers['disabled']).forEach((disabledKey) => { + formattedJson.headers.push({ + name: disabledKey, + value: json.headers[key][disabledKey], + enabled: false + }); + }); + return; + } + formattedJson.headers.push({ name: key, value: json.headers[key], diff --git a/packages/bruno-toml/tests/headers/disabled-header/request.json b/packages/bruno-toml/tests/headers/disabled-header/request.json new file mode 100644 index 000000000..a2a7f1832 --- /dev/null +++ b/packages/bruno-toml/tests/headers/disabled-header/request.json @@ -0,0 +1,23 @@ +{ + "meta": { + "name": "Get users", + "type": "http", + "seq": 1 + }, + "http": { + "method": "GET", + "url": "https://reqres.in/api/users" + }, + "headers": [ + { + "name": "Content-Type", + "value": "application/json", + "enabled": true + }, + { + "name": "Cookie", + "value": "foo=bar", + "enabled": false + } + ] +} diff --git a/packages/bruno-toml/tests/headers/disabled-header/request.toml b/packages/bruno-toml/tests/headers/disabled-header/request.toml new file mode 100644 index 000000000..4f6e12560 --- /dev/null +++ b/packages/bruno-toml/tests/headers/disabled-header/request.toml @@ -0,0 +1,14 @@ +[meta] +name = 'Get users' +type = 'http' +seq = 1 + +[http] +method = 'GET' +url = 'https://reqres.in/api/users' + +[headers] +Content-Type = 'application/json' + +[headers.disabled] +Cookie = 'foo=bar' diff --git a/packages/bruno-toml/tests/headers/empty-header/request.json b/packages/bruno-toml/tests/headers/empty-header/request.json new file mode 100644 index 000000000..92538561a --- /dev/null +++ b/packages/bruno-toml/tests/headers/empty-header/request.json @@ -0,0 +1,23 @@ +{ + "meta": { + "name": "Get users", + "type": "http", + "seq": 1 + }, + "http": { + "method": "GET", + "url": "https://reqres.in/api/users" + }, + "headers": [ + { + "name": "Content-Type", + "value": "application/json", + "enabled": true + }, + { + "name": "Empty-Header", + "value": "", + "enabled": true + } + ] +} diff --git a/packages/bruno-toml/tests/headers/empty-header/request.toml b/packages/bruno-toml/tests/headers/empty-header/request.toml new file mode 100644 index 000000000..77dd62022 --- /dev/null +++ b/packages/bruno-toml/tests/headers/empty-header/request.toml @@ -0,0 +1,12 @@ +[meta] +name = 'Get users' +type = 'http' +seq = 1 + +[http] +method = 'GET' +url = 'https://reqres.in/api/users' + +[headers] +Content-Type = 'application/json' +Empty-Header = '' diff --git a/packages/bruno-toml/tests/headers/spaces-in-header/request.json b/packages/bruno-toml/tests/headers/spaces-in-header/request.json new file mode 100644 index 000000000..34dcfd2cf --- /dev/null +++ b/packages/bruno-toml/tests/headers/spaces-in-header/request.json @@ -0,0 +1,23 @@ +{ + "meta": { + "name": "Get users", + "type": "http", + "seq": 1 + }, + "http": { + "method": "GET", + "url": "https://reqres.in/api/users" + }, + "headers": [ + { + "name": "Content-Type", + "value": "application/json", + "enabled": true + }, + { + "name": "Spaces In Header", + "value": "", + "enabled": true + } + ] +} diff --git a/packages/bruno-toml/tests/headers/spaces-in-header/request.toml b/packages/bruno-toml/tests/headers/spaces-in-header/request.toml new file mode 100644 index 000000000..14c75a5d6 --- /dev/null +++ b/packages/bruno-toml/tests/headers/spaces-in-header/request.toml @@ -0,0 +1,12 @@ +[meta] +name = 'Get users' +type = 'http' +seq = 1 + +[http] +method = 'GET' +url = 'https://reqres.in/api/users' + +[headers] +Content-Type = 'application/json' +'Spaces In Header' = '' diff --git a/packages/bruno-toml/tests/headers/unicode-in-header/request.json b/packages/bruno-toml/tests/headers/unicode-in-header/request.json new file mode 100644 index 000000000..a88ef1b78 --- /dev/null +++ b/packages/bruno-toml/tests/headers/unicode-in-header/request.json @@ -0,0 +1,23 @@ +{ + "meta": { + "name": "Get users", + "type": "http", + "seq": 1 + }, + "http": { + "method": "GET", + "url": "https://reqres.in/api/users" + }, + "headers": [ + { + "name": "Content-Type", + "value": "application/json", + "enabled": true + }, + { + "name": "🐶", + "value": "🚀", + "enabled": true + } + ] +} diff --git a/packages/bruno-toml/tests/headers/unicode-in-header/request.toml b/packages/bruno-toml/tests/headers/unicode-in-header/request.toml new file mode 100644 index 000000000..8611bc554 --- /dev/null +++ b/packages/bruno-toml/tests/headers/unicode-in-header/request.toml @@ -0,0 +1,12 @@ +[meta] +name = 'Get users' +type = 'http' +seq = 1 + +[http] +method = 'GET' +url = 'https://reqres.in/api/users' + +[headers] +Content-Type = 'application/json' +'🐶' = '🚀' diff --git a/packages/bruno-toml/tests/index.spec.js b/packages/bruno-toml/tests/index.spec.js index 2942a3e1c..f03a0842d 100644 --- a/packages/bruno-toml/tests/index.spec.js +++ b/packages/bruno-toml/tests/index.spec.js @@ -3,7 +3,15 @@ const path = require('path'); const jsonToToml = require('../src/jsonToToml'); const tomlToJson = require('../src/tomlToJson'); -const fixtures = ['methods/get', 'methods/delete', 'headers/simple']; +const fixtures = [ + 'methods/get', + 'methods/delete', + 'headers/simple', + 'headers/empty-header', + 'headers/spaces-in-header', + 'headers/unicode-in-header', + 'headers/disabled-header' +]; describe('bruno toml', () => { fixtures.forEach((fixture) => {