Added tests for multiple keys and ensuring the expiry system is working as intended

pull/306/head
Tim Robinson 2016-05-12 17:27:48 +00:00
rodzic 6c0737c3c0
commit 9d6c7e47d7
1 zmienionych plików z 47 dodań i 0 usunięć

47
node_modules/c9/ratelimit_test.js wygenerowano vendored
Wyświetl plik

@ -7,6 +7,7 @@ var assert = require("assert");
var async = require("async");
describe("ratelimit", function() {
it("Should limit based on key", function (done) {
var limiter = ratelimit("username", 10, 1);
limiter({params: {username: "super"}}, null, function (err) {
@ -19,6 +20,19 @@ describe("ratelimit", function() {
});
});
it("Should work with different keys", function (done) {
var limiter = ratelimit("username", 10, 1);
limiter({params: {username: "super"}}, null, function (err) {
assert(!err, err);
limiter({params: {username: "aloha"}}, null, function (err) {
assert(!err, err);
done();
});
});
});
it("Should work again after a delay", function (done) {
var limiter = ratelimit("username", 10, 1);
limiter({params: {username: "super"}}, null, function (err) {
@ -53,5 +67,38 @@ describe("ratelimit", function() {
});
});
it("Should expire keys at the correct times", function (done) {
var limiter = ratelimit("username", 50, 2);
async.series([
function(next) {
limiter({params: {username: "mario"}}, null, function(err) {
assert(!err, err);
setTimeout(next, 25);
});
},
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);
limiter({params: {username: "mario"}}, null, function(err) {
assert(err);
assert.equal(err.code, 429);
setTimeout(next, 20);
});
});
},
function (next) {
limiter({params: {username: "mario"}}, null, function(err) {
assert(!err, err);
next();
});
}
], done);
});
});