From 5130126e0c602edd406072dc47e3701fd997c00e Mon Sep 17 00:00:00 2001 From: jokj624 Date: Sun, 17 Jul 2022 12:58:43 +0900 Subject: [PATCH 1/4] Add 451 status to HttpStatusCodeLiteral --- packages/runtime/src/interfaces/response.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/runtime/src/interfaces/response.ts b/packages/runtime/src/interfaces/response.ts index 4649a698f..57f58086a 100644 --- a/packages/runtime/src/interfaces/response.ts +++ b/packages/runtime/src/interfaces/response.ts @@ -48,6 +48,7 @@ export type HttpStatusCodeLiteral = | 428 | 429 | 431 + | 451 | 500 | 501 | 502 From dc6244bba4c132563e0fb5634a055e4a3114d5c2 Mon Sep 17 00:00:00 2001 From: jokj624 Date: Sun, 17 Jul 2022 13:52:05 +0900 Subject: [PATCH 2/4] Add test --- tests/fixtures/controllers/testController.ts | 13 ++++++++++-- ...dynamic-controllers-express-server.spec.ts | 11 ++++++++++ tests/integration/express-server.spec.ts | 21 +++++++++++++++++++ tests/integration/hapi-server.spec.ts | 10 +++++++++ tests/integration/koa-server.spec.ts | 10 +++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) diff --git a/tests/fixtures/controllers/testController.ts b/tests/fixtures/controllers/testController.ts index b13357901..76ebfbbce 100644 --- a/tests/fixtures/controllers/testController.ts +++ b/tests/fixtures/controllers/testController.ts @@ -1,5 +1,5 @@ -import { Controller, Get, Route, SuccessResponse } from '@tsoa/runtime'; -import { TestModel } from '../testModel'; +import { Controller, Get, Route, SuccessResponse, Response } from '@tsoa/runtime'; +import { ErrorResponseModel, TestModel } from '../testModel'; import { NonFactoryDecorator } from '../custom/non-factory-decorator'; import { ModelService } from '../services/modelService'; @@ -55,4 +55,13 @@ export class TestController extends Controller { public async getSuccessResponse(): Promise { return; } + + @Get('unavailableForLegalReasonsStatusCode') + @Response(451) + public async getUnavailableForLegalReasonsError(): Promise { + throw { + status: 451, + messgage: 'error' + }; + } } diff --git a/tests/integration/dynamic-controllers-express-server.spec.ts b/tests/integration/dynamic-controllers-express-server.spec.ts index ecb789953..a23ea88d2 100644 --- a/tests/integration/dynamic-controllers-express-server.spec.ts +++ b/tests/integration/dynamic-controllers-express-server.spec.ts @@ -336,6 +336,17 @@ describe('Express Server', () => { 204, ); }); + + it('should unavailable for legal reasons status code', () => { + return verifyGetRequest( + basePath + `/Controller/unavailableForLegalReasonsStatusCode`, + (_err, res) => { + expect(res.status).to.equal(451); + }, + 451, + ); + }); + }); describe('Validate', () => { diff --git a/tests/integration/express-server.spec.ts b/tests/integration/express-server.spec.ts index 3f31fe653..2bddbae31 100644 --- a/tests/integration/express-server.spec.ts +++ b/tests/integration/express-server.spec.ts @@ -365,6 +365,17 @@ describe('Express Server', () => { ); }); + it('returns 451 error if thrown in controller', () => { + return verifyGetRequest( + basePath + '/GetTest/UnavailableForLegalReasonsError', + (err: any, _res: any) => { + const body = JSON.parse(err.text); + expect(body.message).to.equal('error thrown'); + }, + 451, + ); + }); + it('can invoke middlewares installed in routes and paths', () => { expect(stateOf('route')).to.be.undefined; return verifyGetRequest( @@ -452,6 +463,16 @@ describe('Express Server', () => { 204, ); }); + + it('should unavailable for legal reasons status code', () => { + return verifyGetRequest( + basePath + `/Controller/unavailableForLegalReasonsStatusCode`, + (_err, res) => { + expect(res.status).to.equal(451); + }, + 451, + ); + }); }); describe('NoExtends', () => { diff --git a/tests/integration/hapi-server.spec.ts b/tests/integration/hapi-server.spec.ts index ea5bf76c7..b5d62ee1e 100644 --- a/tests/integration/hapi-server.spec.ts +++ b/tests/integration/hapi-server.spec.ts @@ -336,6 +336,16 @@ describe('Hapi Server', () => { 204, ); }); + + it('should unavailable for legal reasons status code', () => { + return verifyGetRequest( + basePath + `/Controller/unavailableForLegalReasonsStatusCode`, + (_err, res) => { + expect(res.status).to.equal(451); + }, + 451, + ); + }); }); describe('NoExtends', () => { diff --git a/tests/integration/koa-server.spec.ts b/tests/integration/koa-server.spec.ts index 45bcdb84e..a95c90850 100644 --- a/tests/integration/koa-server.spec.ts +++ b/tests/integration/koa-server.spec.ts @@ -314,6 +314,16 @@ describe('Koa Server', () => { 204, ); }); + + it('should unavailable for legal reasons status code', () => { + return verifyGetRequest( + basePath + `/Controller/unavailableForLegalReasonsStatusCode`, + (_err, res) => { + expect(res.status).to.equal(451); + }, + 451, + ); + }); }); describe('Custom Content-Type', () => { From f8e7db7e08ecc7e8d3644099afd4cf2a166bad72 Mon Sep 17 00:00:00 2001 From: jokj624 Date: Sun, 17 Jul 2022 13:54:42 +0900 Subject: [PATCH 3/4] Delete wrong test code --- tests/integration/express-server.spec.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/tests/integration/express-server.spec.ts b/tests/integration/express-server.spec.ts index 2bddbae31..0db0f1b68 100644 --- a/tests/integration/express-server.spec.ts +++ b/tests/integration/express-server.spec.ts @@ -365,17 +365,6 @@ describe('Express Server', () => { ); }); - it('returns 451 error if thrown in controller', () => { - return verifyGetRequest( - basePath + '/GetTest/UnavailableForLegalReasonsError', - (err: any, _res: any) => { - const body = JSON.parse(err.text); - expect(body.message).to.equal('error thrown'); - }, - 451, - ); - }); - it('can invoke middlewares installed in routes and paths', () => { expect(stateOf('route')).to.be.undefined; return verifyGetRequest( From bdd25f5d7a26b7f2ab12dd14d2829e1ab393afe7 Mon Sep 17 00:00:00 2001 From: jokj624 Date: Sun, 17 Jul 2022 13:56:43 +0900 Subject: [PATCH 4/4] Add dynamic-controllers-express-server test --- tests/integration/dynamic-controllers-express-server.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/integration/dynamic-controllers-express-server.spec.ts b/tests/integration/dynamic-controllers-express-server.spec.ts index a23ea88d2..5a74635fa 100644 --- a/tests/integration/dynamic-controllers-express-server.spec.ts +++ b/tests/integration/dynamic-controllers-express-server.spec.ts @@ -336,7 +336,7 @@ describe('Express Server', () => { 204, ); }); - + it('should unavailable for legal reasons status code', () => { return verifyGetRequest( basePath + `/Controller/unavailableForLegalReasonsStatusCode`, @@ -346,7 +346,6 @@ describe('Express Server', () => { 451, ); }); - }); describe('Validate', () => {