diff --git a/node_modules/c9/ratelimit.js b/node_modules/c9/ratelimit.js index 4cb15f81..1b045036 100644 --- a/node_modules/c9/ratelimit.js +++ b/node_modules/c9/ratelimit.js @@ -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; diff --git a/node_modules/c9/ratelimit_test.js b/node_modules/c9/ratelimit_test.js index 034e5751..7cff5de9 100644 --- a/node_modules/c9/ratelimit_test.js +++ b/node_modules/c9/ratelimit_test.js @@ -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(); }); - }); \ No newline at end of file