Skip to content

Commit e63fa4c

Browse files
committed
Remove unnecessary comments, adding support for multiple http methods, adding test-unit script
1 parent c34cdfe commit e63fa4c

File tree

9 files changed

+241
-237
lines changed

9 files changed

+241
-237
lines changed

codegens/r-httr/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
To run Code-Gen, ensure that you have NodeJS >= v8. A copy of the NodeJS installable can be downloaded from https://nodejs.org/en/download/package-manager.
66

77
## Using the Module
8-
The module will expose an object which will have property `convert` which is the function for converting the Postman-SDK request to swift code snippet.
8+
The module will expose an object which will have property `convert` which is the function for converting the Postman-SDK request to r httr snippet.
99

1010
### convert function
1111
Convert function takes three parameters

codegens/r-httr/lib/rHttr.js

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ function getRequestMethod (request) {
8989
* @returns {String} - array in the form of [ key => value ]
9090
*/
9191
function getSnippetArray (mapToSnippetArray, indentation, sanitize) {
92-
// mapToSnippetArray = groupHeadersSameKey(mapToSnippetArray);
9392
let mappedArray = mapToSnippetArray.map((entry) => {
9493
return `${indentation}'${sanitize ? sanitizeString(entry.key, true) : entry.key}' = ` +
9594
`${sanitize ? '\'' + sanitizeString(entry.value) + '\'' : entry.value}`;
@@ -172,33 +171,16 @@ function getEncodeSnippetByMode (mode) {
172171
* @param {number} requestTimeout - The request timeout in the options
173172
* @returns {String} - returns generated snippet
174173
*/
175-
function getSnippetPostPutOrPatchForm (url, hasParams, hasHeaders, methodUC, mode, requestTimeout = 0) {
174+
function getSnippetFromMethod (url, hasParams, hasHeaders, methodUC, mode, requestTimeout = 0) {
176175
let paramsSnippet = hasParams ? ', body = body' : '',
177176
headersSnippet = hasHeaders ? ', add_headers(headers)' : '',
178177
encodeSnippet = getEncodeSnippetByMode(mode),
179178
timeoutSnippet = requestTimeout ? `, timeout(${requestTimeout})` : '';
180179

181-
return `res <- ${methodUC}("${url}"` +
180+
return `res <- VERB("${methodUC}", url = "${url}"` +
182181
`${paramsSnippet}${headersSnippet}${encodeSnippet}${timeoutSnippet})\n`;
183182
}
184183

185-
/**
186-
* Creates the snippet request for the getUrl method
187-
*
188-
* @module convert
189-
*
190-
* @param {string} url - string url of the service
191-
* @param {string} hasHeaders - wheter or not include the headers
192-
* @param {string} methodUC - the request method upper cased
193-
* @param {number} requestTimeout - the request timeout from options
194-
* @returns {String} - returns generated snippet
195-
*/
196-
function getSnippetGetOrDeleteURL (url, hasHeaders, methodUC, requestTimeout = 0) {
197-
let headersSnippet = hasHeaders ? ', add_headers(headers)' : '',
198-
requestTimeoutSnippet = requestTimeout === 0 ? '' : `, timeout(${requestTimeout})`;
199-
return `res <- ${methodUC}("${url}"${headersSnippet}${requestTimeoutSnippet})\n`;
200-
}
201-
202184
/**
203185
* Creates the snippet request for either get ulr or post form
204186
*
@@ -215,11 +197,8 @@ function getSnippetGetOrDeleteURL (url, hasHeaders, methodUC, requestTimeout = 0
215197
function getSnippetRequest ({url, method, hasParams, hasHeaders, mode, requestTimeout}) {
216198
const methodUC = method.toUpperCase();
217199
let snippetRequest = '';
218-
if (methodUC === 'GET' || methodUC === 'DELETE') {
219-
snippetRequest = getSnippetGetOrDeleteURL(url, hasHeaders, methodUC, requestTimeout);
220-
}
221-
if (methodUC === 'POST' || methodUC === 'PUT' || methodUC === 'PATCH') {
222-
snippetRequest = getSnippetPostPutOrPatchForm(url, hasParams, hasHeaders, methodUC, mode, requestTimeout);
200+
if (methodUC && methodUC !== '') {
201+
snippetRequest = getSnippetFromMethod(url, hasParams, hasHeaders, methodUC, mode, requestTimeout);
223202
}
224203
return snippetRequest;
225204
}
@@ -293,8 +272,7 @@ module.exports = {
293272

294273
convert,
295274
getSnippetHeaders,
296-
getSnippetPostPutOrPatchForm,
297-
getSnippetGetOrDeleteURL,
275+
getSnippetFromMethod,
298276
getSnippetRequest,
299277
getIndentation
300278
};

codegens/r-httr/lib/util/parseBody.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ function parseRawBody (body, indentation, bodyTrim, contentType) {
103103
}
104104
}
105105
else {
106-
// bodySnippet += `"${sanitizeString(body.toString(), bodyTrim)}"`;
107106
bodySnippet += JSON.stringify(body.toString());
108107
}
109108
return bodySnippet;
@@ -167,14 +166,6 @@ function getContentFileFormData (data) {
167166
* @returns {String} snippet of the body generation
168167
*/
169168
function buildFormDataParamFile (data, indentation, bodyTrim) {
170-
// let name = `${indentation.repeat(2)}[\n${indentation.repeat(3)}` +
171-
// `'name' => '${sanitizeString(data.key, bodyTrim)}',\n` +
172-
// `${indentation.repeat(3)}'contents' => ${getContentFileFormData(data)},\n` +
173-
// `${indentation.repeat(3)}'filename' => '${sanitizeString(data.src, bodyTrim)}',\n` +
174-
// `${indentation.repeat(3)}'headers' => [\n` +
175-
// `${indentation.repeat(4)}'Content-Type' => '<Content-type header>'\n${indentation.repeat(3)}]\n` +
176-
// `${indentation.repeat(2)}]`;
177-
// return name;
178169
return `${indentation}'${sanitizeString(data.key, bodyTrim)}' = upload_file('${getContentFileFormData(data)}')`;
179170
}
180171

codegens/r-httr/npm/test-unit.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/usr/bin/env node
2+
/* eslint-env node, es6 */
3+
// ---------------------------------------------------------------------------------------------------------------------
4+
// This script is intended to execute all unit tests.
5+
// ---------------------------------------------------------------------------------------------------------------------
6+
7+
var shell = require('shelljs'),
8+
9+
// set directories and files for test and coverage report
10+
path = require('path'),
11+
12+
NYC = require('nyc'),
13+
chalk = require('chalk'),
14+
recursive = require('recursive-readdir'),
15+
16+
COV_REPORT_PATH = '.coverage',
17+
SPEC_SOURCE_DIR = path.join(__dirname, '..', 'test', 'unit');
18+
19+
module.exports = function (exit) {
20+
// banner line
21+
console.info(chalk.yellow.bold('Running unit tests using mocha on node...'));
22+
23+
shell.test('-d', COV_REPORT_PATH) && shell.rm('-rf', COV_REPORT_PATH);
24+
shell.mkdir('-p', COV_REPORT_PATH);
25+
26+
var Mocha = require('mocha'),
27+
nyc = new NYC({
28+
reportDir: COV_REPORT_PATH,
29+
tempDirectory: COV_REPORT_PATH,
30+
reporter: ['text', 'lcov', 'text-summary'],
31+
exclude: ['config', 'test'],
32+
hookRunInContext: true,
33+
hookRunInThisContext: true
34+
});
35+
36+
nyc.wrap();
37+
// add all spec files to mocha
38+
recursive(SPEC_SOURCE_DIR, function (err, files) {
39+
if (err) { console.error(err); return exit(1); }
40+
41+
var mocha = new Mocha({ timeout: 1000 * 60 });
42+
43+
files.filter(function (file) { // extract all test files
44+
return (file.substr(-8) === '.test.js');
45+
}).forEach(mocha.addFile.bind(mocha));
46+
47+
mocha.run(function (runError) {
48+
runError && console.error(runError.stack || runError);
49+
50+
nyc.reset();
51+
nyc.writeCoverageFile();
52+
nyc.report();
53+
exit(runError ? 1 : 0);
54+
});
55+
return undefined;
56+
});
57+
};
58+
59+
// ensure we run this script exports if this is a direct stdin.tty run
60+
!module.parent && module.exports(shell.exit);

codegens/r-httr/npm/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ var chalk = require('chalk'),
77

88
require('async').series([
99
require('./test-lint'),
10-
require('./test-newman')
10+
require('./test-newman'),
1111
// Add a separate folder for every new suite of tests
12-
// require('./test-unit')
12+
require('./test-unit')
1313
// require('./test-browser')
1414
// require('./test-integration')
1515
], function (code) {

codegens/r-httr/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@postman/codegen-r-httr",
33
"version": "0.0.1",
4-
"description": "Converts Postman SDK Requests to swift code snippet",
4+
"description": "Converts Postman SDK Requests to r-httr code snippet",
55
"main": "index.js",
66
"com_postman_plugin": {
77
"type": "code_generator",
@@ -16,7 +16,8 @@
1616
"scripts": {
1717
"test": "node npm/test.js",
1818
"test-lint": "node npm/test-lint.js",
19-
"test-newman": "node npm/test-newman.js"
19+
"test-newman": "node npm/test-newman.js",
20+
"test-unit": "node npm/test-unit.js"
2021
},
2122
"repository": {
2223
"type": "git",

codegens/r-httr/test/unit/convert.test.js

Lines changed: 138 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,145 @@
11
var expect = require('chai').expect,
2-
{ convert } = require('../../index');
3-
// sdk = require('postman-collection'),
4-
// fs = require('fs'),
5-
// path = require('path');
6-
// collectionsPath = './fixtures';
2+
{ convert } = require('../../index'),
3+
sdk = require('postman-collection'),
4+
fs = require('fs'),
5+
path = require('path');
6+
77

88
describe('convert function', function () {
99

10-
// it('should convert a simple get request', function (done) {
11-
// const collection = new sdk.Collection(JSON.parse(
12-
// fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
13-
// collection.items.members.forEach((item) => {
14-
// convert(item.request, { asyncType: 'sync' }, function (err, snippet) {
15-
// if (err) {
16-
// console.error(err);
17-
// }
18-
// expect(snippet).to.not.be.empty;
19-
// });
20-
// });
21-
// done();
22-
// });
10+
it('should convert a simple get request', function (done) {
11+
const collection = new sdk.Collection(JSON.parse(
12+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
13+
convert(collection.items.members[1].request, {}, function (err, snippet) {
14+
if (err) {
15+
console.error(err);
16+
}
17+
expect(snippet).to.not.be.empty;
18+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
19+
});
20+
done();
21+
});
22+
23+
it('should convert a simple get request with timeout', function (done) {
24+
const collection = new sdk.Collection(JSON.parse(
25+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
26+
// collection.items.members.forEach((item) => {
27+
convert(collection.items.members[1].request, { requestTimeout: 3 }, function (err, snippet) {
28+
if (err) {
29+
console.error(err);
30+
}
31+
expect(snippet).to.not.be.empty;
32+
expect(snippet.includes('timeout(3)')).to.be.true;
33+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
34+
});
35+
// });
36+
done();
37+
});
38+
39+
it('should convert a post request with formdata', function (done) {
40+
const collection = new sdk.Collection(JSON.parse(
41+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
42+
// collection.items.members.forEach((item) => {
43+
convert(collection.items.members[4].request, {}, function (err, snippet) {
44+
if (err) {
45+
console.error(err);
46+
}
47+
expect(snippet).to.not.be.empty;
48+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
49+
});
50+
// });
51+
done();
52+
});
53+
54+
it('should convert a post request with raw data', function (done) {
55+
const collection = new sdk.Collection(JSON.parse(
56+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
57+
// collection.items.members.forEach((item) => {
58+
convert(collection.items.members[6].request, {}, function (err, snippet) {
59+
if (err) {
60+
console.error(err);
61+
}
62+
expect(snippet).to.not.be.empty;
63+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
64+
});
65+
// });
66+
done();
67+
});
68+
69+
it('should convert a post request with urlencoded', function (done) {
70+
const collection = new sdk.Collection(JSON.parse(
71+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
72+
// collection.items.members.forEach((item) => {
73+
convert(collection.items.members[7].request, {}, function (err, snippet) {
74+
if (err) {
75+
console.error(err);
76+
}
77+
expect(snippet).to.not.be.empty;
78+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
79+
});
80+
// });
81+
done();
82+
});
83+
84+
it('should convert a post request with json with raw', function (done) {
85+
const collection = new sdk.Collection(JSON.parse(
86+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
87+
// collection.items.members.forEach((item) => {
88+
convert(collection.items.members[8].request, {}, function (err, snippet) {
89+
if (err) {
90+
console.error(err);
91+
}
92+
expect(snippet).to.not.be.empty;
93+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
94+
});
95+
// });
96+
done();
97+
});
98+
99+
it('should convert a post request with javascript with raw', function (done) {
100+
const collection = new sdk.Collection(JSON.parse(
101+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
102+
// collection.items.members.forEach((item) => {
103+
convert(collection.items.members[9].request, {}, function (err, snippet) {
104+
if (err) {
105+
console.error(err);
106+
}
107+
expect(snippet).to.not.be.empty;
108+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
109+
});
110+
// });
111+
done();
112+
});
113+
114+
it('should convert a post request with xml with raw', function (done) {
115+
const collection = new sdk.Collection(JSON.parse(
116+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
117+
// collection.items.members.forEach((item) => {
118+
convert(collection.items.members[10].request, {}, function (err, snippet) {
119+
if (err) {
120+
console.error(err);
121+
}
122+
expect(snippet).to.not.be.empty;
123+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
124+
});
125+
// });
126+
done();
127+
});
128+
129+
it('should convert a post request with binary file', function (done) {
130+
const collection = new sdk.Collection(JSON.parse(
131+
fs.readFileSync(path.resolve(__dirname, './fixtures/sample_collection.json').toString())));
132+
// collection.items.members.forEach((item) => {
133+
convert(collection.items.members[25].request, {}, function (err, snippet) {
134+
if (err) {
135+
console.error(err);
136+
}
137+
expect(snippet).to.not.be.empty;
138+
fs.writeFileSync(path.join(__dirname, './fixtures/snippet.r'), snippet);
139+
});
140+
// });
141+
done();
142+
});
23143

24144
it('should throw an error when callback is not a function', function () {
25145
expect(function () { convert({}, {}); })

codegens/r-httr/test/unit/options.test.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ var expect = require('chai').expect,
1111
},
1212
{
1313
3: 'requestTimeout'
14-
},
15-
{
16-
4: 'followRedirect'
17-
}, {
18-
5: 'asyncType'
1914
}
2015
];
2116

0 commit comments

Comments
 (0)