summaryrefslogtreecommitdiff
path: root/node_modules/needle/test/output_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/needle/test/output_spec.js')
-rw-r--r--node_modules/needle/test/output_spec.js254
1 files changed, 0 insertions, 254 deletions
diff --git a/node_modules/needle/test/output_spec.js b/node_modules/needle/test/output_spec.js
deleted file mode 100644
index 14fc5bb..0000000
--- a/node_modules/needle/test/output_spec.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var should = require('should'),
- needle = require('./../'),
- http = require('http'),
- sinon = require('sinon'),
- stream = require('stream'),
- fs = require('fs'),
- port = 11111,
- server;
-
-describe('with output option', function() {
-
- var server, handler, file = '/tmp/foobar.out';
-
- function send_request_cb(where, cb) {
- var url = 'http://localhost:' + port + '/whatever.file';
- return needle.get(url, { output: where }, cb);
- }
-
- function send_request_stream(where, cb) {
- var url = 'http://localhost:' + port + '/whatever.file';
- var stream = needle.get(url, { output: where });
- stream.on('end', cb);
- }
-
- // this will only work in UNICES
- function get_open_file_descriptors() {
- var list = fs.readdirSync('/proc/self/fd');
- return list.length;
- }
-
- var send_request = send_request_cb;
-
- before(function(){
- server = http.createServer(function(req, res) {
- handler(req, res);
- }).listen(port);
- });
-
- after(function() {
- server.close();
- })
-
- beforeEach(function() {
- try { fs.unlinkSync(file) } catch(e) { };
- })
-
- describe('and a 404 response', function() {
-
- before(function() {
- handler = function(req, res) {
- res.writeHead(404, {'Content-Type': 'text/plain' });
- res.end();
- }
- })
-
- it('doesnt attempt to write a file', function(done) {
- var spy = sinon.spy(fs, 'createWriteStream');
- send_request(file, function(err, resp) {
- resp.statusCode.should.eql(404);
- spy.called.should.eql(false);
- spy.restore();
- done();
- })
- })
-
- it('doesnt actually write a file', function(done) {
- send_request(file, function(err, resp) {
- resp.statusCode.should.eql(404);
- fs.existsSync(file).should.eql(false);
- done();
- })
- })
-
- })
-
- describe('and a 200 response', function() {
-
- describe('for an empty response', function() {
-
- before(function() {
- handler = function(req, res) {
- res.writeHead(200, { 'Content-Type': 'text/plain' });
- res.end();
- }
- })
-
- it('uses a writableStream', function(done) {
- var spy = sinon.spy(fs, 'createWriteStream');
- send_request(file, function(err, resp) {
- resp.statusCode.should.eql(200);
- spy.called.should.eql(true);
- spy.restore();
- done();
- })
- })
-
- it('writes a file', function(done) {
- fs.existsSync(file).should.eql(false);
- send_request(file, function(err, resp) {
- fs.existsSync(file).should.eql(true);
- done();
- })
- })
-
- it('file is zero bytes in length', function(done) {
- send_request(file, function(err, resp) {
- fs.statSync(file).size.should.equal(0);
- done();
- })
- })
-
- if (process.platform != 'win32') {
- it('closes the file descriptor', function(done) {
- var open_descriptors = get_open_file_descriptors();
- send_request(file + Math.random(), function(err, resp) {
- var current_descriptors = get_open_file_descriptors();
- open_descriptors.should.eql(current_descriptors);
- done()
- })
- })
- }
-
- })
-
- describe('for a JSON response', function() {
-
- before(function() {
- handler = function(req, res) {
- res.writeHead(200, { 'Content-Type': 'application/javascript' });
- res.end(JSON.stringify({foo: 'bar'}));
- }
- })
-
- it('uses a writableStream', function(done) {
- var spy = sinon.spy(fs, 'createWriteStream');
- send_request(file, function(err, resp) {
- resp.statusCode.should.eql(200);
- spy.called.should.eql(true);
- spy.restore();
- done();
- })
- })
-
- it('writes a file', function(done) {
- fs.existsSync(file).should.eql(false);
- send_request(file, function(err, resp) {
- fs.existsSync(file).should.eql(true);
- done();
- })
- })
-
- it('file size equals response length', function(done) {
- send_request(file, function(err, resp) {
- fs.statSync(file).size.should.equal(resp.bytes);
- done();
- })
- })
-
- it('response pipeline is honoured (JSON is decoded by default)', function(done) {
- send_request_stream(file, function(err, resp) {
- // we need to wait a bit since writing to config.output
- // happens independently of needle's callback logic.
- setTimeout(function() {
- fs.readFileSync(file).toString().should.eql('{\"foo\":\"bar\"}');
- done();
- }, 20);
- })
- })
-
- it('closes the file descriptor', function(done) {
- var open_descriptors = get_open_file_descriptors();
- send_request(file + Math.random(), function(err, resp) {
- var current_descriptors = get_open_file_descriptors();
- open_descriptors.should.eql(current_descriptors);
- done()
- })
- })
-
- })
-
- describe('for a binary file', function() {
-
- var pixel = Buffer.from("base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs", "base64");
-
- before(function() {
- handler = function(req, res) {
- res.writeHead(200, { 'Content-Type': 'application/octet-stream', 'Transfer-Encoding': 'chunked' });
- res.write(pixel.slice(0, 10));
- res.write(pixel.slice(10, 20));
- res.write(pixel.slice(20, 30));
- res.write(pixel.slice(30));
- res.end();
- }
- })
-
- it('uses a writableStream', function(done) {
- var spy = sinon.spy(fs, 'createWriteStream');
- send_request(file, function(err, resp) {
- resp.statusCode.should.eql(200);
- spy.called.should.eql(true);
- spy.restore();
- done();
- })
- })
-
- it('writes a file', function(done) {
- fs.existsSync(file).should.eql(false);
- send_request(file, function(err, resp) {
- fs.existsSync(file).should.eql(true);
- done();
- })
- })
-
- it('file size equals response length', function(done) {
- send_request(file, function(err, resp) {
- fs.statSync(file).size.should.equal(resp.bytes);
- done();
- })
- })
-
- it('file is equal to original buffer', function(done) {
- send_request(file, function(err, resp) {
- // we need to wait a bit since writing to config.output
- // happens independently of needle's callback logic.
- setTimeout(function() {
- fs.readFileSync(file).should.eql(pixel);
- done();
- }, 20);
- })
- })
-
- it('returns the data in resp.body too', function(done) {
- send_request(file, function(err, resp) {
- resp.body.should.eql(pixel);
- done();
- })
- })
-
- if (process.platform != 'win32') {
- it('closes the file descriptor', function(done) {
- var open_descriptors = get_open_file_descriptors();
- send_request(file + Math.random(), function(err, resp) {
- var current_descriptors = get_open_file_descriptors();
- open_descriptors.should.eql(current_descriptors);
- done()
- })
- })
- }
-
- })
-
- })
-
-})