/home/techb158/balavpn.abdallabala.com/tests
Edit: /home/techb158/balavpn.abdallabala.com/tests/rate-limit.test.js (1414B)
const assert = require("assert");
const { checkRateLimit, getClientIp, resetRateLimits } = require("../src/lib/rate-limit");
resetRateLimits();
let r = checkRateLimit("test-ip", 5, 60_000);
assert.strictEqual(r.allowed, true);
assert.strictEqual(r.remaining, 4);
assert.ok(r.reset > 0);
r = checkRateLimit("test-ip", 5, 60_000);
assert.strictEqual(r.remaining, 3);
r = checkRateLimit("test-ip", 5, 60_000);
r = checkRateLimit("test-ip", 5, 60_000);
r = checkRateLimit("test-ip", 5, 60_000);
r = checkRateLimit("test-ip", 5, 60_000);
assert.strictEqual(r.allowed, false);
assert.strictEqual(r.remaining, 0);
resetRateLimits();
r = checkRateLimit("test-ip", 5, 60_000);
assert.strictEqual(r.remaining, 4, "reset should clear all hits");
r = checkRateLimit("ip-a", 10, 60_000);
assert.strictEqual(r.remaining, 9);
r = checkRateLimit("ip-b", 10, 60_000);
assert.strictEqual(r.remaining, 9, "different keys should have independent counters");
const req = {
headers: {
get: (name) => name === "x-forwarded-for" ? "203.0.113.42, 10.0.0.1" : null
}
};
assert.strictEqual(getClientIp(req), "203.0.113.42");
const req2 = {
headers: {
get: (name) => name === "x-real-ip" ? "198.51.100.7" : null
}
};
assert.strictEqual(getClientIp(req2), "198.51.100.7");
const req3 = { headers: { get: () => null } };
assert.strictEqual(getClientIp(req3), "127.0.0.1");
console.log("All rate limit tests passed.");