express-shield-securekit
Version:
A modular security middleware toolkit for Express.js with built-in rate limiting, SQL injection protection, and XSS sanitization.
51 lines (42 loc) • 1.55 kB
text/typescript
import express from 'express';
import request from 'supertest';
import { sanitizeMiddleware } from '../middleware/sanitizeMiddleware';
const app = express();
app.use(express.json());
app.use(sanitizeMiddleware);
app.post('/test', (req, res) => {
res.status(200).json({ message: 'Passed' });
});
describe('Sanitize Middleware - Extended Tests', () => {
const generateXssPayload = (i: number) => ({
name: `<script>alert("xss${i}")</script>`
});
const generateSqlPayload = (i: number) => ({
query: `' OR ${i}=${i} --`
});
const generateValidPayload = (i: number) => ({
name: `User${i}`,
email: `user${i}@example.com`
});
for (let i = 1; i <= 70; i++) {
it(`XSS attack payload #${i} should be rejected`, async () => {
const res = await request(app).post('/test').send(generateXssPayload(i));
expect(res.status).toBe(400);
expect(res.body.details[0].type).toBe('XSS');
});
}
for (let i = 1; i <= 70; i++) {
it(`SQL injection payload #${i} should be rejected`, async () => {
const res = await request(app).post('/test').send(generateSqlPayload(i));
expect(res.status).toBe(400);
expect(res.body.details[0].type).toBe('SQL Injection');
});
}
for (let i = 1; i <= 60; i++) {
it(`Valid payload #${i} should pass`, async () => {
const res = await request(app).post('/test').send(generateValidPayload(i));
expect(res.status).toBe(200);
expect(res.body.message).toBe('Passed');
});
}
});