mirror of
https://github.com/sstent/alex_app1.git
synced 2026-01-26 00:52:15 +00:00
76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
var common = require('../common');
|
|
var BOUNDARY = '---------------------------10102754414578508781458777923',
|
|
FIXTURE = TEST_FIXTURES+'/multi_video.upload',
|
|
fs = require('fs'),
|
|
util = require(common.lib + '/util'),
|
|
http = require('http'),
|
|
formidable = require(common.lib + '/index'),
|
|
server = http.createServer();
|
|
|
|
server.on('request', function(req, res) {
|
|
var form = new formidable.IncomingForm(),
|
|
uploads = {};
|
|
|
|
form.uploadDir = TEST_TMP;
|
|
form.hash = 'sha1';
|
|
form.parse(req);
|
|
|
|
form
|
|
.on('fileBegin', function(field, file) {
|
|
assert.equal(field, 'upload');
|
|
|
|
var tracker = {file: file, progress: [], ended: false};
|
|
uploads[file.filename] = tracker;
|
|
file
|
|
.on('progress', function(bytesReceived) {
|
|
tracker.progress.push(bytesReceived);
|
|
assert.equal(bytesReceived, file.length);
|
|
})
|
|
.on('end', function() {
|
|
tracker.ended = true;
|
|
});
|
|
})
|
|
.on('field', function(field, value) {
|
|
assert.equal(field, 'title');
|
|
assert.equal(value, '');
|
|
})
|
|
.on('file', function(field, file) {
|
|
assert.equal(field, 'upload');
|
|
assert.strictEqual(uploads[file.filename].file, file);
|
|
})
|
|
.on('end', function() {
|
|
assert.ok(uploads['shortest_video.flv']);
|
|
assert.ok(uploads['shortest_video.flv'].ended);
|
|
assert.ok(uploads['shortest_video.flv'].progress.length > 3);
|
|
assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a');
|
|
assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.length);
|
|
assert.ok(uploads['shortest_video.mp4']);
|
|
assert.ok(uploads['shortest_video.mp4'].ended);
|
|
assert.ok(uploads['shortest_video.mp4'].progress.length > 3);
|
|
assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f');
|
|
|
|
server.close();
|
|
res.writeHead(200);
|
|
res.end('good');
|
|
});
|
|
});
|
|
|
|
server.listen(TEST_PORT, function() {
|
|
var client = http.createClient(TEST_PORT),
|
|
stat = fs.statSync(FIXTURE),
|
|
headers = {
|
|
'content-type': 'multipart/form-data; boundary='+BOUNDARY,
|
|
'content-length': stat.size,
|
|
}
|
|
request = client.request('POST', '/', headers),
|
|
fixture = new fs.ReadStream(FIXTURE);
|
|
|
|
fixture
|
|
.on('data', function(b) {
|
|
request.write(b);
|
|
})
|
|
.on('end', function() {
|
|
request.end();
|
|
});
|
|
});
|