Add description to function. Use sinion clock for test

This commit is contained in:
Tim Robinson 2016-10-05 21:09:00 +00:00
parent cf52ebf36a
commit c304afef71
2 changed files with 23 additions and 31 deletions

1
node_modules/c9/ratelimit.js generated vendored
View File

@ -30,6 +30,7 @@ function ratelimit(key, duration, max) {
return true;
}
// Returns a deep value from an object. E.g. resolveValue({user: {id: 5}}, "user.id") === 5
function resolveValue(obj, path) {
return path.split('.').reduce(function(prev, curr) {
return prev ? prev[curr] : undefined;

53
node_modules/c9/ratelimit_test.js generated vendored
View File

@ -5,6 +5,7 @@ require("c9/inline-mocha")(module);
var ratelimit = require("./ratelimit");
var assert = require("assert");
var async = require("async");
var sinon = require("sinon");
describe("ratelimit", function() {
@ -77,37 +78,27 @@ describe("ratelimit", function() {
});
it("Should expire keys at the correct times", function (done) {
var clock = sinon.useFakeTimers();
var limiter = ratelimit("username", 50, 2);
async.series([
function(next) {
limiter({params: {username: "mario"}}, null, function(err) {
assert(!err, err);
setTimeout(next, 40);
});
},
function (next) {
limiter({params: {username: "mario"}}, null, function(err) {
assert(!err, err);
setTimeout(next, 45);
});
},
function (next) {
limiter({params: {username: "mario"}}, null, function(err) {
assert(!err, err);
limiter({params: {username: "mario"}}, null, function(err) {
assert(err);
assert.equal(err.code, 429);
setTimeout(next, 40);
});
});
},
function (next) {
limiter({params: {username: "mario"}}, null, function(err) {
assert(!err, err);
next();
});
}
], done);
limiter({params: {username: "mario"}}, null, function(err){
assert(!err, err);
});
clock.tick(40);
limiter({params: {username: "mario"}}, null, function(err){
assert(!err, err);
});
clock.tick(45);
limiter({params: {username: "mario"}}, null, function(err){
assert(!err, err);
});
limiter({params: {username: "mario"}}, null, function(err){
assert(err);
assert.equal(err.code, 429);
});
clock.tick(40);
limiter({params: {username: "mario"}}, null, function(err){
assert(!err, err);
});
done();
});
});