65 lines
No EOL
1.6 KiB
JavaScript
65 lines
No EOL
1.6 KiB
JavaScript
import { rateLimit, authRateLimit } from '../middleware/rateLimit.js';
|
|
import express from 'express';
|
|
import request from 'supertest';
|
|
|
|
describe('Rate Limit Middleware', () => {
|
|
let app;
|
|
|
|
beforeEach(() => {
|
|
app = express();
|
|
app.use(express.json());
|
|
});
|
|
|
|
it('should allow requests within limit', (done) => {
|
|
const middleware = rateLimit({ max: 2, windowMs: 1000 });
|
|
|
|
app.get('/test', middleware, (req, res) => {
|
|
res.status(200).json({ message: 'OK' });
|
|
});
|
|
|
|
request(app)
|
|
.get('/test')
|
|
.expect(200)
|
|
.end(done);
|
|
});
|
|
|
|
it('should block requests exceeding limit', (done) => {
|
|
const middleware = rateLimit({ max: 1, windowMs: 1000 });
|
|
|
|
app.get('/test', middleware, (req, res) => {
|
|
res.status(200).json({ message: 'OK' });
|
|
});
|
|
|
|
// Erster Request sollte erfolgreich sein
|
|
request(app)
|
|
.get('/test')
|
|
.expect(200)
|
|
.end(() => {
|
|
// Zweiter Request sollte blockiert werden
|
|
request(app)
|
|
.get('/test')
|
|
.expect(429)
|
|
.end(done);
|
|
});
|
|
});
|
|
|
|
it('should apply auth rate limiting correctly', (done) => {
|
|
const middleware = authRateLimit({ max: 1, windowMs: 1000 });
|
|
|
|
app.get('/auth-test', middleware, (req, res) => {
|
|
res.status(200).json({ message: 'OK' });
|
|
});
|
|
|
|
// Erster Request sollte erfolgreich sein
|
|
request(app)
|
|
.get('/auth-test')
|
|
.expect(200)
|
|
.end(() => {
|
|
// Zweiter Request sollte blockiert werden
|
|
request(app)
|
|
.get('/auth-test')
|
|
.expect(429)
|
|
.end(done);
|
|
});
|
|
});
|
|
}); |