1 | var fs = require('fs')
|
2 | var http = require('http')
|
3 | var nugget = require('../')
|
4 | var path = require('path')
|
5 | var test = require('tape')
|
6 |
|
7 | var data = new Buffer('hello everybody I am the data');
|
8 |
|
9 | var testServer = http.createServer(function(req, res) {
|
10 | if (!req.headers['range']) {
|
11 | res.setHeader('content-length', data.length)
|
12 | res.setHeader('accept-ranges', 'bytes')
|
13 | res.end(data)
|
14 | } else {
|
15 | var range = req.headers['range'].split('=').pop().split('-').map(function (s) {
|
16 | return parseInt(s, 10)
|
17 | })
|
18 | res.setHeader('content-length', range[1] - range[0])
|
19 | res.setHeader('content-range', range[0] + '-' + range[1] + '/' + data.length);
|
20 | res.end(data.slice(range[0], range[1]))
|
21 | }
|
22 | })
|
23 |
|
24 | var target = path.join(__dirname, 'foobar.html')
|
25 | if (fs.existsSync(target)) fs.unlinkSync(target)
|
26 |
|
27 | fs.writeFileSync(target, data.slice(0, 10))
|
28 |
|
29 | testServer.listen(0, function() {
|
30 | var port = this.address().port
|
31 | test('fetches rest of file', function(t) {
|
32 | nugget('http://localhost:' + port + '/foobar.html', {dir: __dirname, resume: true}, function(err) {
|
33 | t.ok(fs.existsSync(target), 'downloaded file')
|
34 | t.equal(fs.statSync(target).size, data.length, 'file is complete');
|
35 | if (fs.existsSync(target)) fs.unlinkSync(target)
|
36 | t.end()
|
37 | testServer.close()
|
38 | })
|
39 | })
|
40 | })
|