Support comment updates and multipart post uploads

هذا الالتزام موجود في:
2026-05-16 01:54:52 +03:00
الأصل 160bb27a59
التزام 045c74014c
11 ملفات معدلة مع 534 إضافات و48 حذوفات

عرض الملف

@@ -0,0 +1,29 @@
import { ExecutionContext, UnsupportedMediaTypeException } from '@nestjs/common';
import { MultipartFormDataGuard } from './multipart-form-data.guard';
describe('MultipartFormDataGuard', () => {
const guard = new MultipartFormDataGuard();
const createContext = (contentType: string | null): ExecutionContext =>
({
switchToHttp: () => ({
getRequest: () => ({
is: (type: string) => (contentType === type ? contentType : false),
}),
}),
}) as ExecutionContext;
it('allows multipart/form-data requests', () => {
expect(guard.canActivate(createContext('multipart/form-data'))).toBe(true);
});
it('rejects non-multipart requests', () => {
expect(() => guard.canActivate(createContext('application/json'))).toThrow(
new UnsupportedMediaTypeException('Content-Type must be multipart/form-data'),
);
});
it('rejects requests without a content type match', () => {
expect(() => guard.canActivate(createContext(null))).toThrow(UnsupportedMediaTypeException);
});
});

عرض الملف

@@ -0,0 +1,20 @@
import {
CanActivate,
ExecutionContext,
Injectable,
UnsupportedMediaTypeException,
} from '@nestjs/common';
import { Request } from 'express';
@Injectable()
export class MultipartFormDataGuard implements CanActivate {
canActivate(context: ExecutionContext): boolean {
const request = context.switchToHttp().getRequest<Request>();
if (request.is('multipart/form-data')) {
return true;
}
throw new UnsupportedMediaTypeException('Content-Type must be multipart/form-data');
}
}