expresser
Version:
A ready-to-use platform for Node.js web apps, built on top of Express.
104 lines (81 loc) • 2.99 kB
JavaScript
// TEST: DOWNLOADER
require("coffee-script/register");
var chai = require("chai");
chai.should();
describe("Downloader Tests", function() {
var env = process.env;
if (!env.NODE_ENV || env.NODE_ENV == "") env.NODE_ENV = "test";
var settings = require("../lib/settings.coffee");
if (!settings.testKeysLoaded) {
settings.loadFromJson("settings.test.keys.json");
settings.testKeysLoaded = true;
}
var fs = require("fs");
var utils = null;
var downloader = null;
// TESTS STARTS HERE!!!
// ----------------------------------------------------------------------------------
before(function() {
utils = require("../lib/utils.coffee");
downloader = require("../lib/downloader.coffee");
});
it("Is single instance", function() {
downloader.singleInstance = true;
var downloader2 = require("../lib/downloader.coffee");
downloader.singleInstance.should.equal(downloader2.singleInstance);
});
it("Has settings defined", function() {
settings.should.have.property("downloader");
});
it("Download with redirect (Google index html)", function(done) {
this.timeout(10000);
var callback = function(err, obj) {
if (err) {
throw err;
} else {
fs.unlinkSync(obj.saveTo);
done();
}
};
var saveTo = __dirname + "/download-google.html";
downloader.download("http://google.com/", saveTo, callback);
});
it("Force stop a download", function(done) {
this.timeout(10000);
settings.downloader.preventDuplicates = false;
var d, saveTo, downUrl;
var callback = function(err, obj) {
done();
};
saveTo = __dirname + "/download-test-stop.zip";
downUrl = "http://ipv4.download.thinkbroadband.com/100MB.zip";
d = downloader.download(downUrl, saveTo, callback);
d.stop()
});
it("Prevent duplicate downloads", function(done) {
this.timeout(10000);
settings.downloader.preventDuplicates = true;
var d1, d2, saveTo, downUrl;
var callback1 = function(err, obj) {
try {
if (fs.existsSync(obj.saveTo)) {
fs.unlinkSync(obj.saveTo);
}
} catch (ex) {
done(ex);
}
};
var callback2 = function(err, obj) {
d1.stop();
if (err && err.duplicate && d1 != d2) {
done();
} else {
done("Duplicate download was not prevented, or returned download objects are equal.");
}
};
saveTo = __dirname + "/download-test.zip";
downUrl = "http://ipv4.download.thinkbroadband.com/5MB.zip";
d1 = downloader.download(downUrl, saveTo, callback1);
d2 = downloader.download(downUrl, saveTo, callback2);
});
});