Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions backend/src/api/routes/auth.route.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import request from 'supertest';
import express from 'express';
import authRouter from './auth.route';
import { authLimiter } from '../middleware/rate-limit.middleware';

const app = express();
app.use(express.json());
app.use('/sep10', authLimiter, authRouter);

describe('Auth Route Rate Limiting', () => {
it('should return 429 when rate limit is exceeded', async () => {
// authLimiter max is 10, let's send 11 requests
for (let i = 0; i < 10; i++) {
await request(app).post('/sep10').send({ account: 'GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' });
}
const response = await request(app).post('/sep10').send({ account: 'GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' });
expect(response.status).toBe(429);
});
});
6 changes: 5 additions & 1 deletion backend/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import relayerRouter from './api/routes/relayer.route';
import recurringPaymentsRouter from './api/routes/recurring-payments.route';
import configRouter from './api/routes/config.route';
import sep31Router from './api/routes/sep31.route';
import authRouter from './api/routes/auth.route';
import { errorHandler } from './api/middleware/error.middleware';
import { metricsMiddleware, connectionTracker } from './api/middleware/metrics.middleware';
import { securityHeadersMiddleware } from './api/middleware/security-headers.middleware';
Expand All @@ -25,7 +26,7 @@ import feeReportRouter from './api/routes/fee-report.route';
import { feeReportScheduler } from './workers/fee-report.scheduler';
import eventRouter from './api/routes/event.route';
import notificationsRouter from './api/routes/notifications.route';
import { publicLimiter } from './api/middleware/rate-limit.middleware';
import { publicLimiter, authLimiter } from './api/middleware/rate-limit.middleware';
import { notificationService } from './services/notification.service';
import { createEmailProvider, ConsoleSmsProvider, ConsolePushProvider } from './lib/notifications/providers';
import { NotificationType } from './services/notification.service';
Expand Down Expand Up @@ -144,6 +145,9 @@ app.use('/api/relayer', relayerRouter);
// SEP-40 Swap Rates API
app.use('/sep40', sep40Router);

// SEP-10 Auth routes
app.use('/sep10', authLimiter, authRouter);

// SEP-12 KYC routes
app.use('/sep12', sep12Router);

Expand Down