From e175e4c3d99a8e9dab32c65cdd8639874751b1be Mon Sep 17 00:00:00 2001 From: Chinaza007 Date: Sun, 30 Aug 2026 01:51:41 +0100 Subject: [PATCH] done --- .../middleware/__tests__/validation.test.ts | 54 ++ backend/src/middleware/index.ts | 8 + backend/src/middleware/sanitize.js | 2 +- backend/src/middleware/validate.js | 69 +- backend/src/middleware/validate.ts | 13 +- backend/src/middleware/validation.js | 101 +++ backend/src/middleware/validation.ts | 117 +++ backend/src/services/queue-producers.js | 2 + backend/src/services/queue-producers.ts | 2 + backend/src/services/queue.js | 678 ++++++++++-------- backend/src/services/queue.test.ts | 49 +- backend/src/services/queue.ts | 31 +- backend/src/types/validation.ts | 11 + contracts/src/lib.rs | 74 +- contracts/src/storage.rs | 148 +++- docs/gas-optimization-guide.md | 10 + infra/main.tf | 97 +++ workers/src/index.ts | 60 +- 18 files changed, 1093 insertions(+), 433 deletions(-) create mode 100644 backend/src/middleware/__tests__/validation.test.ts create mode 100644 backend/src/middleware/validation.js create mode 100644 backend/src/middleware/validation.ts create mode 100644 backend/src/types/validation.ts diff --git a/backend/src/middleware/__tests__/validation.test.ts b/backend/src/middleware/__tests__/validation.test.ts new file mode 100644 index 00000000..9656727c --- /dev/null +++ b/backend/src/middleware/__tests__/validation.test.ts @@ -0,0 +1,54 @@ +import { describe, expect, it, vi } from 'vitest'; +import type { Request, Response } from 'express'; +import { z } from 'zod'; +import { commonSchemas, validateAndSanitize } from '../validation.js'; + +function req(overrides: Partial): Request { + return { + body: {}, + query: {}, + params: {}, + headers: {}, + ...overrides, + } as Request; +} + +describe('validation middleware', () => { + it('sanitizes and validates body, query, and params', () => { + const request = req({ + body: { email: ' USER@EXAMPLE.COM ', note: 'paid' }, + query: { page: '2', limit: '10' }, + params: { id: 'payment_123' }, + }); + const next = vi.fn(); + + validateAndSanitize({ + body: z.object({ + email: commonSchemas.email, + note: z.string().max(100), + }), + query: commonSchemas.pagination, + params: z.object({ id: commonSchemas.id }), + })(request, {} as Response, next); + + expect(next).toHaveBeenCalledWith(); + expect(request.body.email).toBe('user@example.com'); + expect(request.body.note).not.toContain('