Skip to content

Commit b16d14e

Browse files
author
Ben Buckman
committed
added test for custom headers and content-length in parts (felixge/node-form-data/17)
1 parent 7860a9c commit b16d14e

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
test custom headers, added in pull request:
3+
https://github.com/felixge/node-form-data/pull/17
4+
*/
5+
6+
var common = require('../common');
7+
var assert = common.assert;
8+
var http = require('http');
9+
10+
var FormData = require(common.dir.lib + '/form_data');
11+
12+
var CRLF = '\r\n';
13+
14+
var testHeader = 'X-Test-Fake: 123';
15+
16+
var expectedLength;
17+
18+
19+
var server = http.createServer(function(req, res) {
20+
var data = '';
21+
req.setEncoding('utf8');
22+
23+
req.on('data', function(d) {
24+
data += d;
25+
});
26+
27+
req.on('end', function() {
28+
assert.ok( data.indexOf( testHeader ) != -1 );
29+
30+
// content-length would be 1000+ w/actual buffer size,
31+
// but smaller w/overridden size.
32+
assert.ok( typeof req.headers['content-length'] !== 'undefined' );
33+
assert.equal(req.headers['content-length'], expectedLength);
34+
35+
res.writeHead(200);
36+
res.end('done');
37+
});
38+
});
39+
40+
41+
server.listen(common.port, function() {
42+
var form = new FormData();
43+
44+
var options = {
45+
header:
46+
CRLF + '--' + form.getBoundary() + CRLF +
47+
testHeader +
48+
CRLF + CRLF,
49+
50+
// override content-length,
51+
// much lower than actual buffer size (1000)
52+
knownLength: 1
53+
};
54+
55+
var bufferData = [];
56+
for (var z = 0; z < 1000; z++) {
57+
bufferData.push(1);
58+
}
59+
var buffer = new Buffer(bufferData);
60+
61+
form.append('my_buffer', buffer, options);
62+
63+
// (available to req handler)
64+
expectedLength = form._lastBoundary().length + form._overheadLength + options.knownLength;
65+
66+
form.submit('http://localhost:' + common.port + '/', function(err, res) {
67+
if (err) {
68+
throw err;
69+
}
70+
71+
assert.strictEqual(res.statusCode, 200);
72+
server.close();
73+
});
74+
75+
});

0 commit comments

Comments
 (0)