kopia lustrzana https://github.com/c9/core
Added tests for multiple keys and ensuring the expiry system is working as intended
rodzic
6c0737c3c0
commit
9d6c7e47d7
|
@ -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);
|
||||
});
|
||||
|
||||
});
|
Ładowanie…
Reference in New Issue