odin/node_modules/requests/test/requests.test.js
2022-11-26 15:56:34 +01:00

100 lines
2.2 KiB
JavaScript

'use strict';
var path = require('path');
var fs = require('fs');
var assume = require('assume');
var requests = require('../');
var staticserver = require('./static');
/**
* Make a URL unique so we can bust the browser cache which could affect
*
* @param {String} url Transform to an URL.
* @returns {String} A unique URL.
* @api private
*/
function unique(url) {
return url + '?t=' + (+new Date());
}
describe('requests', function () {
var closeServer;
var req;
before(function (done) {
//
// Start-up a small static file server so we can download files and fixtures
// inside our tests.
//
staticserver(function (close) {
closeServer = close;
}, done);
});
after(function (done) {
closeServer(done);
});
beforeEach(function () {
req = requests(unique('http://localhost:8080/index.html'), { manual: true });
});
afterEach(function () {
req.destroy();
});
it('is exported as function', function () {
assume(requests).is.a('function');
});
it('sets the stream\'s booleans', function () {
assume(req.readable).is.true();
assume(req.writable).is.false();
});
it('stores active requests', function () {
assume(requests.active[req.id]).equals(req);
});
it('successfully makes a request', function (done) {
var resp = '';
req.on('data', function (data) {
resp += data;
});
req.on('end', function () {
fs.readFile(
path.resolve(__dirname, 'index.html'),
{ encoding: 'utf8' },
function (err, file) {
if (err) {
throw err;
}
assume(resp).equals(file);
done();
}
);
});
req.open();
});
it('does not receive content for 204 requests', function (done) {
req.destroy();
req = requests(unique('http://localhost:8080/204'));
req.on('data', function () {
throw new Error('I should never be called');
});
req.on('end', done);
});
describe('#destroy', function () {
it('removes the .active instance', function () {
assume(requests.active[req.id]).equals(req);
req.destroy();
assume(requests.active[req.id]).is.undefined();
});
});
});