Last active
October 15, 2016 15:22
-
-
Save joshbeckman/89f62e46072e5a14775e9fd9ce813949 to your computer and use it in GitHub Desktop.
Here are some initial tests
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var assert = require('chai').assert | |
var request = require('supertest') | |
var async = require('async') | |
var defaults = require('../defaults') | |
require('../example/app.js') | |
describe('Mongo-Throttle', function () { | |
// app.use('/api/', throttle()) | |
describe('With no configs,', function () { | |
it('should set headers', function (done) { | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
assert.ok(res.headers['x-rate-limit-limit']) | |
assert.ok(res.headers['x-rate-limit-remaining']) | |
assert.ok(res.headers['x-rate-limit-reset']) | |
done() | |
}) | |
}) | |
it('should decrement headers/count', function (done) { | |
var remaining = 0 | |
async.series([ | |
function (done) { | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
assert.ok(res.headers['x-rate-limit-limit']) | |
assert.ok(res.headers['x-rate-limit-remaining']) | |
assert.ok(res.headers['x-rate-limit-reset']) | |
remaining = parseInt(res.headers['x-rate-limit-remaining'], 10) | |
done() | |
}) | |
}, | |
function (done) { | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
assert.ok(res.headers['x-rate-limit-remaining']) | |
assert.ok((remaining - 1).toString() === res.headers['x-rate-limit-remaining']) | |
done() | |
}) | |
} | |
], done) | |
}) | |
it('should decrement reset time', function (done) { | |
var reset = 0 | |
async.series([ | |
function (done) { | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
assert.ok(res.headers['x-rate-limit-limit']) | |
assert.ok(res.headers['x-rate-limit-remaining']) | |
assert.ok(res.headers['x-rate-limit-reset']) | |
reset = parseInt(res.headers['x-rate-limit-reset'], 10) | |
done() | |
}) | |
}, | |
function (done) { | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
assert.ok(res.headers['x-rate-limit-reset']) | |
assert.ok(reset > parseInt(res.headers['x-rate-limit-reset'], 10)) | |
done() | |
}) | |
} | |
], done) | |
}) | |
it('should set default limit', function (done) { | |
this.timeout(1000000) | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
assert.ok(res.headers['x-rate-limit-limit']) | |
assert.ok(defaults.rateLimit.max.toString() === res.headers['x-rate-limit-limit']) | |
done() | |
}) | |
}) | |
}) | |
// app.use(throttle({ rateLimit: { ttl: 600, max: 5 } })) | |
describe('Configire Limit', function () {}) | |
// app.use(throttle(function (req, res, hits, remaining) { | |
// var until = new Date((new Date()).getTime() + remaining) | |
// res.statusCode = 420 | |
// res.send('You shall not pass ' + hits + ' until ' + until + '!') | |
// })) | |
describe('Configire Custom Limit Header', function () {}) | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/package.json b/package.json | |
index 81b5449..c5e181a 100644 | |
--- a/package.json | |
+++ b/package.json | |
@@ -43,6 +43,7 @@ | |
"mongoose": "^4.6.3" | |
}, | |
"devDependencies": { | |
+ "async": "^2.1.1", | |
"chai": "^3.5.0", | |
"express": "^4.14.0", | |
"mocha": "^3.1.2", | |
diff --git a/test/mocha.test.js b/test/mocha.test.js | |
index fc33f00..f1821e4 100644 | |
--- a/test/mocha.test.js | |
+++ b/test/mocha.test.js | |
@@ -1,60 +1,91 @@ | |
var assert = require('chai').assert | |
var request = require('supertest') | |
+var async = require('async') | |
+var defaults = require('../defaults') | |
require('../example/app.js') | |
describe('Mongo-Throttle', function () { | |
// app.use('/api/', throttle()) | |
- describe('No Configs', function () { | |
- it('Test', function (done) { | |
+ describe('With no configs,', function () { | |
+ it('should set headers', function (done) { | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
- console.log(res.headers['x-rate-limit-limit']) | |
- console.log(res.headers['x-rate-limit-remaining']) | |
- console.log(res.headers['x-rate-limit-reset']) | |
- assert.equal(true, true) | |
+ assert.ok(res.headers['x-rate-limit-limit']) | |
+ assert.ok(res.headers['x-rate-limit-remaining']) | |
+ assert.ok(res.headers['x-rate-limit-reset']) | |
done() | |
}) | |
}) | |
- it('Test2', function (done) { | |
- request('localhost:3000') | |
- .get('/') | |
- .expect(200, function (err, res) { | |
- if (err) return done(err) | |
- assert.equal(err, null) | |
- console.log(res.headers['x-rate-limit-limit']) | |
- console.log(res.headers['x-rate-limit-remaining']) | |
- console.log(res.headers['x-rate-limit-reset']) | |
- assert.equal(true, true) | |
- done() | |
- }) | |
+ it('should decrement headers/count', function (done) { | |
+ var remaining = 0 | |
+ async.series([ | |
+ function (done) { | |
+ request('localhost:3000') | |
+ .get('/') | |
+ .expect(200, function (err, res) { | |
+ if (err) return done(err) | |
+ assert.equal(err, null) | |
+ assert.ok(res.headers['x-rate-limit-limit']) | |
+ assert.ok(res.headers['x-rate-limit-remaining']) | |
+ assert.ok(res.headers['x-rate-limit-reset']) | |
+ remaining = parseInt(res.headers['x-rate-limit-remaining'], 10) | |
+ done() | |
+ }) | |
+ }, | |
+ function (done) { | |
+ request('localhost:3000') | |
+ .get('/') | |
+ .expect(200, function (err, res) { | |
+ if (err) return done(err) | |
+ assert.equal(err, null) | |
+ assert.ok(res.headers['x-rate-limit-remaining']) | |
+ assert.ok((remaining - 1).toString() === res.headers['x-rate-limit-remaining']) | |
+ done() | |
+ }) | |
+ } | |
+ ], done) | |
}) | |
- it('Test3', function (done) { | |
- request('localhost:3000') | |
- .get('/') | |
- .expect(200, function (err, res) { | |
- if (err) return done(err) | |
- assert.equal(err, null) | |
- console.log(res.headers['x-rate-limit-limit']) | |
- console.log(res.headers['x-rate-limit-remaining']) | |
- console.log(res.headers['x-rate-limit-reset']) | |
- assert.equal(true, true) | |
- done() | |
- }) | |
+ it('should decrement reset time', function (done) { | |
+ var reset = 0 | |
+ async.series([ | |
+ function (done) { | |
+ request('localhost:3000') | |
+ .get('/') | |
+ .expect(200, function (err, res) { | |
+ if (err) return done(err) | |
+ assert.equal(err, null) | |
+ assert.ok(res.headers['x-rate-limit-limit']) | |
+ assert.ok(res.headers['x-rate-limit-remaining']) | |
+ assert.ok(res.headers['x-rate-limit-reset']) | |
+ reset = parseInt(res.headers['x-rate-limit-reset'], 10) | |
+ done() | |
+ }) | |
+ }, | |
+ function (done) { | |
+ request('localhost:3000') | |
+ .get('/') | |
+ .expect(200, function (err, res) { | |
+ if (err) return done(err) | |
+ assert.equal(err, null) | |
+ assert.ok(res.headers['x-rate-limit-reset']) | |
+ assert.ok(reset > parseInt(res.headers['x-rate-limit-reset'], 10)) | |
+ done() | |
+ }) | |
+ } | |
+ ], done) | |
}) | |
- it('Test4', function (done) { | |
+ it('should set default limit', function (done) { | |
this.timeout(1000000) | |
request('localhost:3000') | |
.get('/') | |
.expect(200, function (err, res) { | |
if (err) return done(err) | |
assert.equal(err, null) | |
- console.log(res.headers['x-rate-limit-limit']) | |
- console.log(res.headers['x-rate-limit-remaining']) | |
- console.log(res.headers['x-rate-limit-reset']) | |
- assert.equal(true, true) | |
+ assert.ok(res.headers['x-rate-limit-limit']) | |
+ assert.ok(defaults.rateLimit.max.toString() === res.headers['x-rate-limit-limit']) | |
done() | |
}) | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment