mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
Deps updates
This commit is contained in:
40
node_modules/cors/test/basic-auth.js
generated
vendored
Normal file
40
node_modules/cors/test/basic-auth.js
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
express = require('express'),
|
||||
supertest = require('supertest'),
|
||||
basicAuth = require('basic-auth-connect'),
|
||||
cors = require('../lib');
|
||||
|
||||
var app;
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
app = express();
|
||||
app.use(basicAuth('username', 'password'));
|
||||
app.use(cors());
|
||||
app.post('/', function (req, res) {
|
||||
res.send('hello world');
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
describe('basic auth', function () {
|
||||
it('POST works', function (done) {
|
||||
supertest(app)
|
||||
.post('/')
|
||||
.auth('username', 'password')
|
||||
.expect(200)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.eql('hello world');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
81
node_modules/cors/test/body-events.js
generated
vendored
Normal file
81
node_modules/cors/test/body-events.js
generated
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
express = require('express'),
|
||||
supertest = require('supertest'),
|
||||
bodyParser = require('body-parser'),
|
||||
cors = require('../lib');
|
||||
|
||||
var dynamicOrigin,
|
||||
app1,
|
||||
app2,
|
||||
text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed justo turpis, tempor id sem fringilla, cursus tristique purus. Mauris a sollicitudin magna. Etiam dui lacus, vehicula non dictum at, cursus vitae libero. Curabitur lorem nulla, sollicitudin id enim ut, vehicula rhoncus felis. Ut nec iaculis velit. Vivamus at augue nulla. Fusce at molestie arcu. Duis at dui at tellus mattis tincidunt. Vestibulum sit amet dictum metus. Curabitur nec pretium ante. Proin vulputate elit ac lorem gravida, sit amet placerat lorem fringilla. Mauris fermentum, diam et volutpat auctor, ante enim imperdiet purus, sit amet tincidunt ipsum nulla nec est. Fusce id ipsum in sem malesuada laoreet vitae non magna. Praesent commodo turpis in nulla egestas, eu posuere magna venenatis. Integer in aliquam sem. Fusce quis lorem tincidunt eros rutrum lobortis.\n\nNam aliquam cursus ipsum, a hendrerit purus. Cras ultrices viverra nunc ac lacinia. Sed sed diam orci. Vestibulum ut orci a nibh scelerisque pretium. Sed suscipit vestibulum metus, ac ultricies leo sodales a. Aliquam erat volutpat. Vestibulum mauris massa, luctus et libero vel, cursus suscipit nulla. Cras sed erat quis massa fermentum congue. Mauris ultrices sem ligula, id malesuada lectus tincidunt eget. Donec sed nisl elit. Aenean ac lobortis massa. Phasellus felis nisl, dictum a dui volutpat, dictum sagittis diam. Vestibulum lacinia tellus vel commodo consequat.\n\nNulla at varius nibh, non posuere enim. Curabitur urna est, ultrices vel sem nec, consequat molestie nisi. Aliquam sed augue sit amet ante viverra pretium. Cras aliquam turpis vitae eros gravida egestas. Etiam quis dolor non quam suscipit iaculis. Sed euismod est libero, ac ullamcorper elit hendrerit vitae. Vivamus sollicitudin nulla dolor, vitae porta lacus suscipit ac.\n\nSed volutpat, magna in scelerisque dapibus, eros ante volutpat nisi, ac condimentum diam sem sed justo. Aenean justo risus, bibendum vitae blandit ac, mattis quis nunc. Quisque non felis nec justo auctor accumsan non id odio. Mauris vel dui feugiat dolor dapibus convallis in et neque. Phasellus fermentum sollicitudin tortor ac pretium. Proin tristique accumsan nulla eu venenatis. Cras porta lorem ac arcu accumsan pulvinar. Sed dignissim leo augue, a pretium ante viverra id. Phasellus blandit at purus a malesuada. Nam et cursus mauris. Vivamus accumsan augue laoreet lectus lacinia eleifend. Fusce sit amet felis nunc. Pellentesque eu turpis nisl.\n\nPellentesque vitae quam feugiat, volutpat lectus et, faucibus massa. Maecenas consectetur quis nisi eu aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam laoreet condimentum laoreet. Praesent sit amet massa sit amet dui porta condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed volutpat massa nec risus malesuada hendrerit.';
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
dynamicOrigin = function (origin, cb) {
|
||||
setTimeout(function () {
|
||||
cb(null, true);
|
||||
}, 200);
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
app1 = express();
|
||||
app1.use(cors({origin: dynamicOrigin}));
|
||||
app1.use(bodyParser.json());
|
||||
app1.post('/', function (req, res) {
|
||||
res.send(req.body);
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
app2 = express();
|
||||
app2.use(bodyParser.json());
|
||||
app2.use(cors({origin: dynamicOrigin}));
|
||||
app2.post('/', function (req, res) {
|
||||
res.send(req.body);
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
describe('body-parser-events', function () {
|
||||
describe('app1 (cors before bodyparser)', function () {
|
||||
it('POST works', function (done) {
|
||||
var body = {
|
||||
example: text
|
||||
};
|
||||
supertest(app1)
|
||||
.post('/')
|
||||
.send(body)
|
||||
.expect(200)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.body.should.eql(body);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('app2 (bodyparser before cors)', function () {
|
||||
it('POST works', function (done) {
|
||||
var body = {
|
||||
example: text
|
||||
};
|
||||
supertest(app2)
|
||||
.post('/')
|
||||
.send(body)
|
||||
.expect(200)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.body.should.eql(body);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
652
node_modules/cors/test/cors.js
generated
vendored
Normal file
652
node_modules/cors/test/cors.js
generated
vendored
Normal file
@ -0,0 +1,652 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
cors = require('../lib');
|
||||
|
||||
var fakeRequest = function (headers) {
|
||||
return {
|
||||
headers: headers || {
|
||||
'origin': 'request.com',
|
||||
'access-control-request-headers': 'requestedHeader1,requestedHeader2'
|
||||
},
|
||||
pause: function () {
|
||||
// do nothing
|
||||
return;
|
||||
},
|
||||
resume: function () {
|
||||
// do nothing
|
||||
return;
|
||||
}
|
||||
};
|
||||
},
|
||||
fakeResponse = function () {
|
||||
var headers = {};
|
||||
return {
|
||||
allHeaders: function () {
|
||||
return headers;
|
||||
},
|
||||
getHeader: function (key) {
|
||||
return headers[key];
|
||||
},
|
||||
setHeader: function (key, value) {
|
||||
headers[key] = value;
|
||||
return;
|
||||
},
|
||||
get: function (key) {
|
||||
return headers[key];
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
describe('cors', function () {
|
||||
it('passes control to next middleware', function (done) {
|
||||
// arrange
|
||||
var req, res, next;
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors()(req, res, next);
|
||||
});
|
||||
|
||||
it('shortcircuits preflight requests', function (done) {
|
||||
// arrange
|
||||
var req, res, next;
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.statusCode.should.equal(204);
|
||||
done();
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
done('should not be called');
|
||||
};
|
||||
|
||||
// act
|
||||
cors()(req, res, next);
|
||||
});
|
||||
|
||||
it('doesn\'t shortcircuit preflight requests with preflightContinue option', function (done) {
|
||||
// arrange
|
||||
var req, res, next;
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
done('should not be called');
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors({preflightContinue: true})(req, res, next);
|
||||
});
|
||||
|
||||
it('normalizes method names', function (done) {
|
||||
// arrange
|
||||
var req, res, next;
|
||||
req = fakeRequest();
|
||||
req.method = 'options';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.statusCode.should.equal(204);
|
||||
done();
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
done('should not be called');
|
||||
};
|
||||
|
||||
// act
|
||||
cors()(req, res, next);
|
||||
});
|
||||
|
||||
it('no options enables default CORS to all origins', function (done) {
|
||||
// arrange
|
||||
var req, res, next;
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('*');
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Methods'));
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors()(req, res, next);
|
||||
});
|
||||
|
||||
it('OPTION call with no options enables default CORS to all origins and methods', function (done) {
|
||||
// arrange
|
||||
var req, res, next;
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.statusCode.should.equal(204);
|
||||
done();
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('*');
|
||||
res.getHeader('Access-Control-Allow-Methods').should.equal('GET,PUT,PATCH,POST,DELETE');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors()(req, res, next);
|
||||
});
|
||||
|
||||
describe('passing static options', function () {
|
||||
it('overrides defaults', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: 'example.com',
|
||||
methods: ['FOO', 'bar'],
|
||||
headers: ['FIZZ', 'buzz'],
|
||||
credentials: true,
|
||||
maxAge: 123
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.statusCode.should.equal(204);
|
||||
done();
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('example.com');
|
||||
res.getHeader('Access-Control-Allow-Methods').should.equal('FOO,bar');
|
||||
res.getHeader('Access-Control-Allow-Headers').should.equal('FIZZ,buzz');
|
||||
res.getHeader('Access-Control-Allow-Credentials').should.equal('true');
|
||||
res.getHeader('Access-Control-Allow-Max-Age').should.equal('123');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('matches request origin against regexp', function(done) {
|
||||
var req = fakeRequest();
|
||||
var res = fakeResponse();
|
||||
var options = { origin: /^(.+\.)?request.com$/ };
|
||||
cors(options)(req, res, function(err) {
|
||||
should.not.exist(err);
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal(req.headers.origin);
|
||||
should.exist(res.getHeader('Vary'));
|
||||
res.getHeader('Vary').should.equal('Origin');
|
||||
return done();
|
||||
});
|
||||
});
|
||||
|
||||
it('matches request origin against array of origin checks', function(done) {
|
||||
var req = fakeRequest();
|
||||
var res = fakeResponse();
|
||||
var options = { origin: [ /foo\.com$/, 'request.com' ] };
|
||||
cors(options)(req, res, function(err) {
|
||||
should.not.exist(err);
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal(req.headers.origin);
|
||||
should.exist(res.getHeader('Vary'));
|
||||
res.getHeader('Vary').should.equal('Origin');
|
||||
return done();
|
||||
});
|
||||
});
|
||||
|
||||
it('doesn\'t match request origin against array of invalid origin checks', function(done) {
|
||||
var req = fakeRequest();
|
||||
var res = fakeResponse();
|
||||
var options = { origin: [ /foo\.com$/, 'bar.com' ] };
|
||||
cors(options)(req, res, function(err) {
|
||||
should.not.exist(err);
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Origin'));
|
||||
should.not.exist(res.getHeader('Vary'));
|
||||
return done();
|
||||
});
|
||||
});
|
||||
|
||||
it('origin of false disables cors', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: false,
|
||||
methods: ['FOO', 'bar'],
|
||||
headers: ['FIZZ', 'buzz'],
|
||||
credentials: true,
|
||||
maxAge: 123
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Origin'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Methods'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Headers'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Credentials'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Max-Age'));
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('can override origin', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: 'example.com'
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('example.com');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('includes Vary header for specific origins', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: 'example.com'
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
should.exist(res.getHeader('Vary'));
|
||||
res.getHeader('Vary').should.equal('Origin');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('appends to an existing Vary header', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: 'example.com'
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
res.setHeader('Vary', 'Foo');
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Vary').should.equal('Foo, Origin');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('origin defaults to *', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('*');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('specifying true for origin reflects requesting origin', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: true
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('request.com');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('should allow origin when callback returns true', function (done) {
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: function (sentOrigin, cb) {
|
||||
sentOrigin.should.equal('request.com');
|
||||
cb(null, true);
|
||||
}
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('request.com');
|
||||
done();
|
||||
};
|
||||
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('should not allow origin when callback returns false', function (done) {
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: function (sentOrigin, cb) {
|
||||
sentOrigin.should.equal('request.com');
|
||||
cb(null, false);
|
||||
}
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Origin'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Methods'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Headers'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Credentials'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Max-Age'));
|
||||
done();
|
||||
};
|
||||
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('should not override options.origin callback', function (done) {
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
origin: function (sentOrigin, cb) {
|
||||
var isValid = sentOrigin === 'request.com';
|
||||
cb(null, isValid);
|
||||
}
|
||||
};
|
||||
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('request.com');
|
||||
};
|
||||
|
||||
cors(options)(req, res, next);
|
||||
|
||||
req = fakeRequest({
|
||||
'origin': 'invalid-request.com'
|
||||
});
|
||||
res = fakeResponse();
|
||||
|
||||
next = function () {
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Origin'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Methods'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Headers'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Credentials'));
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Max-Age'));
|
||||
done();
|
||||
};
|
||||
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
|
||||
it('can override methods', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
methods: ['method1', 'method2']
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.statusCode.should.equal(204);
|
||||
done();
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Methods').should.equal('method1,method2');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('methods defaults to GET, PUT, PATCH, POST, DELETE', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.statusCode.should.equal(204);
|
||||
done();
|
||||
};
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Methods').should.equal('GET,PUT,PATCH,POST,DELETE');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('can specify allowed headers', function (done) {
|
||||
// arrange
|
||||
var req, res, options;
|
||||
options = {
|
||||
allowedHeaders: ['header1', 'header2']
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Headers').should.equal('header1,header2');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, null);
|
||||
});
|
||||
|
||||
it('specifying an empty list or string of allowed headers will result in no response header for allowed headers', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
allowedHeaders: []
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Headers'));
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('if no allowed headers are specified, defaults to requested allowed headers', function (done) {
|
||||
// arrange
|
||||
var req, res, options;
|
||||
options = {
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Headers').should.equal('requestedHeader1,requestedHeader2');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, null);
|
||||
});
|
||||
|
||||
it('can specify exposed headers', function (done) {
|
||||
// arrange
|
||||
var req, res, options, next;
|
||||
options = {
|
||||
exposedHeaders: ['custom-header1', 'custom-header2']
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Expose-Headers').should.equal('custom-header1,custom-header2');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('includes credentials if explicitly enabled', function (done) {
|
||||
// arrange
|
||||
var req, res, options;
|
||||
options = {
|
||||
credentials: true
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Credentials').should.equal('true');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, null);
|
||||
});
|
||||
|
||||
it('does not includes credentials unless explicitly enabled', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Credentials'));
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
|
||||
it('includes maxAge when specified', function (done) {
|
||||
// arrange
|
||||
var req, res, options;
|
||||
options = {
|
||||
maxAge: 456
|
||||
};
|
||||
req = fakeRequest();
|
||||
req.method = 'OPTIONS';
|
||||
res = fakeResponse();
|
||||
res.end = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Max-Age').should.equal('456');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, null);
|
||||
});
|
||||
|
||||
it('does not includes maxAge unless specified', function (done) {
|
||||
// arrange
|
||||
var req, res, next, options;
|
||||
options = {
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
should.not.exist(res.getHeader('Access-Control-Allow-Max-Age'));
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(options)(req, res, next);
|
||||
});
|
||||
});
|
||||
|
||||
describe('passing a function to build options', function () {
|
||||
it('handles options specified via callback', function (done) {
|
||||
// arrange
|
||||
var req, res, next, delegate;
|
||||
delegate = function (req2, cb) {
|
||||
cb(null, {
|
||||
origin: 'delegate.com'
|
||||
});
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function () {
|
||||
// assert
|
||||
res.getHeader('Access-Control-Allow-Origin').should.equal('delegate.com');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(delegate)(req, res, next);
|
||||
});
|
||||
|
||||
it('handles error specified via callback', function (done) {
|
||||
// arrange
|
||||
var req, res, next, delegate;
|
||||
delegate = function (req2, cb) {
|
||||
cb('some error');
|
||||
};
|
||||
req = fakeRequest();
|
||||
res = fakeResponse();
|
||||
next = function (err) {
|
||||
// assert
|
||||
err.should.equal('some error');
|
||||
done();
|
||||
};
|
||||
|
||||
// act
|
||||
cors(delegate)(req, res, next);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
77
node_modules/cors/test/error-response.js
generated
vendored
Normal file
77
node_modules/cors/test/error-response.js
generated
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
express = require('express'),
|
||||
supertest = require('supertest'),
|
||||
cors = require('../lib');
|
||||
|
||||
var app;
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
app = express();
|
||||
app.use(cors());
|
||||
|
||||
app.post('/five-hundred', function (req, res, next) {
|
||||
next(new Error('nope'));
|
||||
});
|
||||
|
||||
app.post('/four-oh-one', function (req, res, next) {
|
||||
next(new Error('401'));
|
||||
});
|
||||
|
||||
app.post('/four-oh-four', function (req, res, next) {
|
||||
next();
|
||||
});
|
||||
|
||||
app.use(function (err, req, res, next) {
|
||||
if (err.message === '401') {
|
||||
res.status(401).send('unauthorized');
|
||||
} else {
|
||||
next(err);
|
||||
}
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
describe('error response', function () {
|
||||
it('500', function (done) {
|
||||
supertest(app)
|
||||
.post('/five-hundred')
|
||||
.expect(500)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.startWith('Error: nope');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('401', function (done) {
|
||||
supertest(app)
|
||||
.post('/four-oh-one')
|
||||
.expect(401)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.eql('unauthorized');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('404', function (done) {
|
||||
supertest(app)
|
||||
.post('/four-oh-four')
|
||||
.expect(404)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
98
node_modules/cors/test/example-app.js
generated
vendored
Normal file
98
node_modules/cors/test/example-app.js
generated
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
express = require('express'),
|
||||
supertest = require('supertest'),
|
||||
cors = require('../lib');
|
||||
|
||||
var simpleApp,
|
||||
complexApp;
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
simpleApp = express();
|
||||
simpleApp.head('/', cors(), function (req, res) {
|
||||
res.status(204).send();
|
||||
});
|
||||
simpleApp.get('/', cors(), function (req, res) {
|
||||
res.send('Hello World (Get)');
|
||||
});
|
||||
simpleApp.post('/', cors(), function (req, res) {
|
||||
res.send('Hello World (Post)');
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
complexApp = express();
|
||||
complexApp.options('/', cors());
|
||||
complexApp.delete('/', cors(), function (req, res) {
|
||||
res.send('Hello World (Delete)');
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
describe('example app(s)', function () {
|
||||
describe('simple methods', function () {
|
||||
it('GET works', function (done) {
|
||||
supertest(simpleApp)
|
||||
.get('/')
|
||||
.expect(200)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.eql('Hello World (Get)');
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('HEAD works', function (done) {
|
||||
supertest(simpleApp)
|
||||
.head('/')
|
||||
.expect(204)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('POST works', function (done) {
|
||||
supertest(simpleApp)
|
||||
.post('/')
|
||||
.expect(200)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.eql('Hello World (Post)');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('complex methods', function () {
|
||||
it('OPTIONS works', function (done) {
|
||||
supertest(complexApp)
|
||||
.options('/')
|
||||
.expect(204)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('DELETE works', function (done) {
|
||||
supertest(complexApp)
|
||||
.del('/')
|
||||
.expect(200)
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.eql('Hello World (Delete)');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
56
node_modules/cors/test/issue-2.js
generated
vendored
Normal file
56
node_modules/cors/test/issue-2.js
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
express = require('express'),
|
||||
supertest = require('supertest'),
|
||||
cors = require('../lib');
|
||||
|
||||
var app,
|
||||
corsOptions;
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
app = express();
|
||||
corsOptions = {
|
||||
origin: true,
|
||||
methods: ['POST'],
|
||||
credentials: true,
|
||||
maxAge: 3600
|
||||
};
|
||||
app.options('/api/login', cors(corsOptions));
|
||||
app.post('/api/login', cors(corsOptions), function (req, res) {
|
||||
res.send('LOGIN');
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
describe('issue #2', function () {
|
||||
it('OPTIONS works', function (done) {
|
||||
supertest(app)
|
||||
.options('/api/login')
|
||||
.expect(204)
|
||||
.set('Origin', 'http://example.com')
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('http://example.com');
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('POST works', function (done) {
|
||||
supertest(app)
|
||||
.post('/api/login')
|
||||
.expect(200)
|
||||
.set('Origin', 'http://example.com')
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('http://example.com');
|
||||
res.text.should.eql('LOGIN');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
58
node_modules/cors/test/issue-31.js
generated
vendored
Normal file
58
node_modules/cors/test/issue-31.js
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
(function () {
|
||||
/*global describe, it*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var should = require('should'),
|
||||
express = require('express'),
|
||||
supertest = require('supertest'),
|
||||
cors = require('../lib');
|
||||
|
||||
var app,
|
||||
mainRouter,
|
||||
itemsRouter;
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
itemsRouter = new express.Router();
|
||||
itemsRouter.get('/', function (req, res) {
|
||||
res.send('hello world');
|
||||
});
|
||||
|
||||
mainRouter = new express.Router();
|
||||
mainRouter.use('/items', itemsRouter);
|
||||
|
||||
app = express();
|
||||
app.use(cors());
|
||||
app.use(mainRouter);
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
describe('issue #31', function () {
|
||||
it('OPTIONS works', function (done) {
|
||||
supertest(app)
|
||||
.options('/items')
|
||||
.expect(204)
|
||||
.set('Origin', 'http://example.com')
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('GET works', function (done) {
|
||||
supertest(app)
|
||||
.get('/items')
|
||||
.expect(200)
|
||||
.set('Origin', 'http://example.com')
|
||||
.end(function (err, res) {
|
||||
should.not.exist(err);
|
||||
res.headers['access-control-allow-origin'].should.eql('*');
|
||||
res.text.should.eql('hello world');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
3
node_modules/cors/test/mocha.opts
generated
vendored
Normal file
3
node_modules/cors/test/mocha.opts
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
--ui bdd
|
||||
--reporter spec
|
||||
--require should
|
Reference in New Issue
Block a user