summaryrefslogtreecommitdiff
path: root/node_modules/nugget/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/nugget/test')
-rw-r--r--node_modules/nugget/test/cli.js11
-rw-r--r--node_modules/nugget/test/resume.html1
-rw-r--r--node_modules/nugget/test/resume.js41
-rw-r--r--node_modules/nugget/test/test.js38
4 files changed, 91 insertions, 0 deletions
diff --git a/node_modules/nugget/test/cli.js b/node_modules/nugget/test/cli.js
new file mode 100644
index 0000000..7d7313f
--- /dev/null
+++ b/node_modules/nugget/test/cli.js
@@ -0,0 +1,11 @@
+var fs = require('fs')
+var path = require('path')
+var spawn = require('tape-spawn')
+var test = require('tape')
+
+test('usage', function (t) {
+ var child = spawn(t, path.join(__dirname, '..', 'bin.js'))
+ child.stdout.match(fs.readFileSync(path.join(__dirname, '..', 'usage.txt')).toString() + '\n')
+ child.stderr.empty()
+ child.end()
+})
diff --git a/node_modules/nugget/test/resume.html b/node_modules/nugget/test/resume.html
new file mode 100644
index 0000000..b6fc4c6
--- /dev/null
+++ b/node_modules/nugget/test/resume.html
@@ -0,0 +1 @@
+hello \ No newline at end of file
diff --git a/node_modules/nugget/test/resume.js b/node_modules/nugget/test/resume.js
new file mode 100644
index 0000000..291ce0e
--- /dev/null
+++ b/node_modules/nugget/test/resume.js
@@ -0,0 +1,41 @@
+var fs = require('fs')
+var http = require('http')
+var nugget = require('../')
+var path = require('path')
+var test = require('tape')
+
+var data = new Buffer('hello everybody I am the data')
+
+var testServer = http.createServer(function (req, res) {
+ if (!req.headers['range']) {
+ res.setHeader('content-length', data.length)
+ res.setHeader('accept-ranges', 'bytes')
+ res.end(data)
+ } else {
+ var range = req.headers['range'].split('=').pop().split('-').map(function (s) {
+ return parseInt(s, 10)
+ })
+ res.setHeader('content-length', range[1] - range[0])
+ res.setHeader('content-range', range[0] + '-' + range[1] + '/' + data.length)
+ res.end(data.slice(range[0], range[1]))
+ }
+})
+
+var target = path.join(__dirname, 'foobar.html')
+if (fs.existsSync(target)) fs.unlinkSync(target)
+
+fs.writeFileSync(target, data.slice(0, 10))
+
+testServer.listen(0, function () {
+ var port = this.address().port
+ test('fetches rest of file', function (t) {
+ nugget('http://localhost:' + port + '/foobar.html', {dir: __dirname, resume: true, quiet: true}, function (err) {
+ if (err) t.ifErr(err)
+ t.ok(fs.existsSync(target), 'downloaded file')
+ t.equal(fs.statSync(target).size, data.length, 'file is complete')
+ if (fs.existsSync(target)) fs.unlinkSync(target)
+ t.end()
+ testServer.close()
+ })
+ })
+})
diff --git a/node_modules/nugget/test/test.js b/node_modules/nugget/test/test.js
new file mode 100644
index 0000000..62ccb25
--- /dev/null
+++ b/node_modules/nugget/test/test.js
@@ -0,0 +1,38 @@
+var fs = require('fs')
+var http = require('http')
+var nugget = require('../')
+var path = require('path')
+var test = require('tape')
+
+var testServer = http.createServer(function (req, res) {
+ res.end('hello')
+})
+
+var target = path.join(__dirname, 'resume.html')
+if (fs.existsSync(target)) fs.unlinkSync(target)
+
+testServer.listen(0, function () {
+ var port = this.address().port
+ test('fetches file', function (t) {
+ nugget('http://localhost:' + port + '/resume.html', {dir: __dirname, quiet: true}, function (err) {
+ if (err) t.ifErr(err)
+ t.ok(fs.existsSync(target), 'downloaded file')
+ if (fs.existsSync(target)) fs.unlinkSync(target)
+ t.end()
+ })
+ })
+
+ test('has progress events', function (t) {
+ var gotProgress = false
+ var dl = nugget('http://localhost:' + port + '/resume.html', {dir: __dirname, quiet: true}, function (err) {
+ t.notOk(err, 'no error')
+ t.ok(gotProgress, 'got progress event')
+ t.end()
+ testServer.close()
+ })
+ dl.once('progress', function (data) {
+ t.ok(data.hasOwnProperty('percentage'), 'has percentage')
+ gotProgress = true
+ })
+ })
+})