mongoose-diff-tracking
Version:
Manage Mongo Collection diff History and versions
285 lines (213 loc) • 5.9 kB
JavaScript
var unless = require('..');
var assert = require('chai').assert;
var noop = function(){};
function testMiddleware (req, res, next) {
req.called = true;
}
testMiddleware.unless = unless;
describe('express-unless', function () {
describe('with PATH(with method) exception', function () {
var mid = testMiddleware.unless({
path: [
{
url: '/test',
methods: ['POST', 'GET']
},
{
url: '/bar',
methods: ['PUT']
},
'/foo'
]
});
it('should not call the middleware when path and method match', function () {
var req = {
originalUrl: '/test?das=123',
method: 'POST'
};
mid(req, {}, noop);
assert.notOk(req.called);
req = {
originalUrl: '/test?test=123',
method: 'GET'
};
mid(req, {}, noop);
assert.notOk(req.called);
req = {
originalUrl: '/bar?test=123',
method: 'PUT'
};
mid(req, {}, noop);
assert.notOk(req.called);
req = {
originalUrl: '/foo',
method: 'PUT'
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when path or method mismatch', function () {
req = {
originalUrl: '/test?test=123',
method: 'PUT'
};
mid(req, {}, noop);
assert.ok(req.called);
req = {
originalUrl: '/unless?test=123',
method: 'PUT'
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
describe('with PATH exception', function () {
var mid = testMiddleware.unless({
path: ['/test', '/fobo']
});
it('should not call the middleware when one of the path match', function () {
var req = {
originalUrl: '/test?das=123'
};
mid(req, {}, noop);
assert.notOk(req.called);
req = {
originalUrl: '/fobo?test=123'
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when the path doesnt match', function () {
var req = {
originalUrl: '/foobar/test=123'
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
describe('with PATH (regex) exception', function () {
var mid = testMiddleware.unless({
path: ['/test', /ag$/ig]
});
it('should not call the middleware when the regex match', function () {
req = {
originalUrl: '/foboag?test=123'
};
req2 = {
originalUrl: '/foboag?test=456'
};
mid(req, {}, noop);
mid(req2, {}, noop);
assert.notOk(req.called);
assert.notOk(req2.called);
});
});
describe('with PATH (useOriginalUrl) exception', function () {
var mid = testMiddleware.unless({
path: ['/test', '/fobo'],
useOriginalUrl: false
});
it('should not call the middleware when one of the path match '+
'req.url instead of req.originalUrl', function () {
var req = {
originalUrl: '/orig/test?das=123',
url: '/test?das=123'
};
mid(req, {}, noop);
assert.notOk(req.called);
req = {
originalUrl: '/orig/fobo?test=123',
url: '/fobo?test=123'
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when the path doesnt match '+
'req.url even if path matches req.originalUrl', function () {
var req = {
originalUrl: '/test/test=123',
url: '/foobar/test=123'
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
describe('with EXT exception', function () {
var mid = testMiddleware.unless({
ext: ['jpg', 'html', 'txt']
});
it('should not call the middleware when the ext match', function () {
var req = {
originalUrl: '/foo.html?das=123'
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when the ext doesnt match', function () {
var req = {
originalUrl: '/foobar/test=123'
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
describe('with METHOD exception', function () {
var mid = testMiddleware.unless({
method: ['OPTIONS', 'DELETE']
});
it('should not call the middleware when the method match', function () {
var req = {
originalUrl: '/foo.html?das=123',
method: 'OPTIONS'
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when the method doesnt match', function () {
var req = {
originalUrl: '/foobar/test=123',
method: 'PUT'
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
describe('with custom exception', function () {
var mid = testMiddleware.unless(function (req) {
return req.baba;
});
it('should not call the middleware when the custom rule match', function () {
var req = {
baba: true
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when the custom rule doesnt match', function () {
var req = {
baba: false
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
describe('without originalUrl', function () {
var mid = testMiddleware.unless({
path: ['/test']
});
it('should not call the middleware when one of the path match', function () {
var req = {
url: '/test?das=123'
};
mid(req, {}, noop);
assert.notOk(req.called);
});
it('should call the middleware when the path doesnt match', function () {
var req = {
url: '/foobar/test=123'
};
mid(req, {}, noop);
assert.ok(req.called);
});
});
});