Support comment updates and multipart post uploads
هذا الالتزام موجود في:
29
src/common/guards/multipart-form-data.guard.spec.ts
Normal file
29
src/common/guards/multipart-form-data.guard.spec.ts
Normal file
@@ -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);
|
||||
});
|
||||
});
|
||||
20
src/common/guards/multipart-form-data.guard.ts
Normal file
20
src/common/guards/multipart-form-data.guard.ts
Normal file
@@ -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');
|
||||
}
|
||||
}
|
||||
المرجع في مشكلة جديدة
حظر مستخدم