Skip to content

Commit 9bbfe66

Browse files
committed
Merge pull request #1 from carlos8f/json_parser_2
Add test and avoid parse exception
2 parents e625909 + 36b80b4 commit 9bbfe66

File tree

2 files changed

+44
-4
lines changed

2 files changed

+44
-4
lines changed

lib/json_parser.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ JSONParser.prototype.write = function(buffer) {
2323
}
2424

2525
JSONParser.prototype.end = function() {
26-
var fields = JSON.parse(this.data.toString('utf8'))
27-
for (var field in fields) {
28-
this.onField(field, fields[field]);
29-
}
26+
try {
27+
var fields = JSON.parse(this.data.toString('utf8'))
28+
for (var field in fields) {
29+
this.onField(field, fields[field]);
30+
}
31+
} catch (e) {}
3032
this.data = null;
3133

3234
this.onEnd();

test/integration/test-json.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var common = require('../common');
2+
var formidable = common.formidable;
3+
var http = require('http');
4+
var assert = require('assert');
5+
6+
var testData = {
7+
numbers: [1, 2, 3, 4, 5],
8+
nested: { key: 'value' }
9+
};
10+
11+
var server = http.createServer(function(req, res) {
12+
var form = new formidable.IncomingForm();
13+
14+
form.parse(req, function(err, fields, files) {
15+
assert.deepEqual(fields, testData);
16+
17+
res.end();
18+
server.close();
19+
});
20+
});
21+
22+
var port = common.port;
23+
24+
server.listen(port, function(err){
25+
assert.equal(err, null);
26+
27+
var request = http.request({
28+
port: port,
29+
method: 'POST',
30+
headers: {
31+
'Content-Type': 'application/json'
32+
}
33+
});
34+
35+
request.write(JSON.stringify(testData));
36+
request.end();
37+
});
38+

0 commit comments

Comments
 (0)