Files
ShieldAI/test-maxpayload.ts
Michael Freno 7b925c89bd Fix 3 Code Review findings on FRE-4574
- P2: Replace wget with curl for ECS health check (Alpine lacks wget)
- P2: Add AWS credentials step to CI terraform-plan job for S3 backend auth
- P3: Remove unused GitHub provider from infra/main.tf

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 07:09:39 -04:00

61 lines
1.7 KiB
TypeScript

import { WebSocketServer, WebSocket } from 'ws';
import { createServer } from 'http';
import { randomBytes } from 'crypto';
/**
* Test WebSocket maxPayload limit enforcement
*/
async function testMaxPayloadLimit() {
console.log('Testing WebSocket maxPayload limit (64KB)...');
// Create HTTP server
const httpServer = createServer();
// Create WebSocket server with maxPayload = 64KB
const wss = new WebSocketServer({
port: 0, // Use random available port
maxPayload: 65536, // 64KB
});
let testPassed = false;
wss.on('connection', (ws) => {
console.log('✓ Client connected');
// Send a message larger than 64KB
const oversizedMessage = 'x'.repeat(70000); // 70KB
console.log(`Attempting to send ${oversizedMessage.length} bytes...`);
ws.send(oversizedMessage, (err) => {
if (err) {
console.log('✓ Error received as expected:', err.message);
console.log('✓ maxPayload limit is correctly enforced!');
testPassed = true;
} else {
console.log('✗ No error received - maxPayload NOT enforced!');
}
});
ws.on('close', () => {
httpServer.close(() => {
wss.close(() => {
if (testPassed) {
console.log('\n✅ TEST PASSED: WebSocket maxPayload limit (64KB) is working correctly');
process.exit(0);
} else {
console.log('\n❌ TEST FAILED: WebSocket maxPayload limit not enforced');
process.exit(1);
}
});
});
});
});
httpServer.listen(0, () => {
console.log(`WebSocket server listening on port ${httpServer.address().port}`);
});
}
testMaxPayloadLimit().catch(console.error);