Skip to content

Instantly share code, notes, and snippets.

@joshbeckman
Last active October 15, 2016 15:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joshbeckman/89f62e46072e5a14775e9fd9ce813949 to your computer and use it in GitHub Desktop.
Save joshbeckman/89f62e46072e5a14775e9fd9ce813949 to your computer and use it in GitHub Desktop.
Here are some initial tests
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 () {})
})
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