Set 200 code for post requests (#21214)

as title, nestJS use to set 201 for post requests but some services
(like google) requests 200 response code

See
https://discord.com/channels/1130383047699738754/1511054250971758642/1511785364027609099
for context
This commit is contained in:
martmull
2026-06-04 11:14:51 +02:00
committed by GitHub
parent 475cd9e7fe
commit 4ad8d8e98e
2 changed files with 67 additions and 0 deletions
@@ -0,0 +1,60 @@
import { HttpStatus } from '@nestjs/common';
import { HTTP_CODE_METADATA } from '@nestjs/common/constants';
import { type Request } from 'express';
import { HTTPMethod } from 'twenty-shared/types';
import { RouteTriggerService } from 'src/engine/core-modules/logic-function/logic-function-trigger/triggers/route/route-trigger.service';
import { RouteTriggerController } from 'src/engine/metadata-modules/route-trigger/route-trigger.controller';
describe('RouteTriggerController', () => {
let controller: RouteTriggerController;
const handle = jest.fn();
beforeEach(() => {
const routeTriggerService = {
handle,
} as unknown as RouteTriggerService;
controller = new RouteTriggerController(routeTriggerService);
});
afterEach(() => {
jest.clearAllMocks();
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
describe('response status code', () => {
it.each([
['get', RouteTriggerController.prototype.get],
['post', RouteTriggerController.prototype.post],
['put', RouteTriggerController.prototype.put],
['patch', RouteTriggerController.prototype.patch],
['delete', RouteTriggerController.prototype.delete],
])('should respond with 200 for %s', (_method, handler) => {
const httpCode = Reflect.getMetadata(HTTP_CODE_METADATA, handler);
expect(httpCode).toBe(HttpStatus.OK);
});
});
describe('post', () => {
it('should delegate to the service with the POST http method', async () => {
const request = { path: '/s/webhooks/google/leads' } as Request;
const expectedResult = {};
handle.mockResolvedValue(expectedResult);
const result = await controller.post(request);
expect(handle).toHaveBeenCalledWith({
request,
httpMethod: HTTPMethod.POST,
});
expect(result).toBe(expectedResult);
});
});
});
@@ -2,6 +2,8 @@ import {
Controller,
Delete,
Get,
HttpCode,
HttpStatus,
Patch,
Post,
Put,
@@ -25,6 +27,7 @@ export class RouteTriggerController {
constructor(private readonly routeTriggerService: RouteTriggerService) {}
@Get('*path')
@HttpCode(HttpStatus.OK)
async get(@Req() request: Request) {
return await this.routeTriggerService.handle({
request,
@@ -33,6 +36,7 @@ export class RouteTriggerController {
}
@Post('*path')
@HttpCode(HttpStatus.OK)
async post(@Req() request: Request) {
return await this.routeTriggerService.handle({
request,
@@ -41,6 +45,7 @@ export class RouteTriggerController {
}
@Put('*path')
@HttpCode(HttpStatus.OK)
async put(@Req() request: Request) {
return await this.routeTriggerService.handle({
request,
@@ -49,6 +54,7 @@ export class RouteTriggerController {
}
@Patch('*path')
@HttpCode(HttpStatus.OK)
async patch(@Req() request: Request) {
return await this.routeTriggerService.handle({
request,
@@ -57,6 +63,7 @@ export class RouteTriggerController {
}
@Delete('*path')
@HttpCode(HttpStatus.OK)
async delete(@Req() request: Request) {
return await this.routeTriggerService.handle({
request,