diff --git a/packages/http/libraries/core/src/http/middleware/model/Middleware.ts b/packages/http/libraries/core/src/http/middleware/model/Middleware.ts index 278123530..fbca807cd 100644 --- a/packages/http/libraries/core/src/http/middleware/model/Middleware.ts +++ b/packages/http/libraries/core/src/http/middleware/model/Middleware.ts @@ -3,7 +3,7 @@ export interface Middleware< TRequest = any, TResponse = any, TNextFunction = any, - TResult = void, + TResult = any, > { execute( request: TRequest, diff --git a/packages/http/tools/e2e-tests/features/middleware.feature b/packages/http/tools/e2e-tests/features/middleware.feature new file mode 100644 index 000000000..d5af8ea00 --- /dev/null +++ b/packages/http/tools/e2e-tests/features/middleware.feature @@ -0,0 +1,77 @@ +Feature: middleware +The m allows to continue or stop the request processing + + Background: Having a container + Given a container + + Rule: middleware allows to continue or stop the request processing + + Scenario: middleware allows to continue request processing + Given a warrior controller with SuccessfulMiddleware for method and server + And a server from container + And a warriors HTTP request + When the request is send + Then the response status code is Ok-ish + Then the response contains the correct header + + Examples: + | server_kind | method | + | "express" | "DELETE" | + | "express" | "GET" | + | "express" | "OPTIONS" | + | "express" | "PATCH" | + | "express" | "POST" | + | "express" | "PUT" | + | "express4" | "DELETE" | + | "express4" | "GET" | + | "express4" | "OPTIONS" | + | "express4" | "PATCH" | + | "express4" | "POST" | + | "express4" | "PUT" | + | "fastify" | "DELETE" | + | "fastify" | "GET" | + | "fastify" | "OPTIONS" | + | "fastify" | "PATCH" | + | "fastify" | "POST" | + | "fastify" | "PUT" | + | "hono" | "DELETE" | + | "hono" | "GET" | + | "hono" | "OPTIONS" | + | "hono" | "PATCH" | + | "hono" | "POST" | + | "hono" | "PUT" | + + Scenario: middleware allows to stop request processing + Given a warrior controller with UnsuccessfulMiddleware for method and server + And a server from container + And a warriors HTTP request + When the request is send + Then the response status code is FORBIDDEN + Then the response contains the correct header + + Examples: + | server_kind | method | + | "express" | "DELETE" | + | "express" | "GET" | + | "express" | "OPTIONS" | + | "express" | "PATCH" | + | "express" | "POST" | + | "express" | "PUT" | + | "express4" | "DELETE" | + | "express4" | "GET" | + | "express4" | "OPTIONS" | + | "express4" | "PATCH" | + | "express4" | "POST" | + | "express4" | "PUT" | + | "fastify" | "DELETE" | + | "fastify" | "GET" | + | "fastify" | "OPTIONS" | + | "fastify" | "PATCH" | + | "fastify" | "POST" | + | "fastify" | "PUT" | + | "hono" | "DELETE" | + | "hono" | "GET" | + | "hono" | "OPTIONS" | + | "hono" | "PATCH" | + | "hono" | "POST" | + | "hono" | "PUT" | diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsDeleteSuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsDeleteSuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..8c0a0a787 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsDeleteSuccessfulExpressMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsDeleteSuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsDeleteUnsuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsDeleteUnsuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..3fa370a12 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsDeleteUnsuccessfulExpressMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../../middlewares/express/UnsuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsDeleteUnsuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware, UnsuccessfulExpressMiddleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsGetSuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsGetSuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..c703aab6a --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsGetSuccessfulExpressMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsGetSuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsGetUnsuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsGetUnsuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..9d747fac8 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsGetUnsuccessfulExpressMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../../middlewares/express/UnsuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsGetUnsuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware, UnsuccessfulExpressMiddleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsOptionsSuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsOptionsSuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..2bfa38813 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsOptionsSuccessfulExpressMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsOptionsSuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsOptionsUnsuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsOptionsUnsuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..43ab41f7d --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsOptionsUnsuccessfulExpressMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../../middlewares/express/UnsuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsOptionsUnsuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware, UnsuccessfulExpressMiddleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPatchSuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPatchSuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..db8f77bae --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPatchSuccessfulExpressMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsPatchSuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPatchUnsuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPatchUnsuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..c454fb626 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPatchUnsuccessfulExpressMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../../middlewares/express/UnsuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsPatchUnsuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware, UnsuccessfulExpressMiddleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPostSuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPostSuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..d838bb646 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPostSuccessfulExpressMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsPostSuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPostUnsuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPostUnsuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..94dffd95c --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPostUnsuccessfulExpressMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../../middlewares/express/UnsuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsPostUnsuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware, UnsuccessfulExpressMiddleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPutSuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPutSuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..5783cc704 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPutSuccessfulExpressMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsPutSuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPutUnsuccessfulExpressMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPutUnsuccessfulExpressMiddlewareController.ts new file mode 100644 index 000000000..09feb159a --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express/WarriorsPutUnsuccessfulExpressMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulExpressMiddleware } from '../../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../../middlewares/express/UnsuccessfulExpressMiddleware'; + +@controller('/warriors') +export class WarriorsPutUnsuccessfulExpressMiddlewareController { + @applyMiddleware(SuccessfulExpressMiddleware, UnsuccessfulExpressMiddleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsDeleteSuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsDeleteSuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..a4348d9fe --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsDeleteSuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsDeleteSuccessfulExpressV4MiddlewareController { + @applyMiddleware(SuccessfulExpressV4Middleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsDeleteUnsuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsDeleteUnsuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..66e2f103b --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsDeleteUnsuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,14 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../../middlewares/express4/UnsuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsDeleteUnsuccessfulExpressV4MiddlewareController { + @applyMiddleware( + SuccessfulExpressV4Middleware, + UnsuccessfulExpressV4Middleware, + ) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsGetSuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsGetSuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..245a38bd7 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsGetSuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsGetSuccessfulExpressV4MiddlewareController { + @applyMiddleware(SuccessfulExpressV4Middleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsGetUnsuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsGetUnsuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..659dc5db4 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsGetUnsuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,14 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../../middlewares/express4/UnsuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsGetUnsuccessfulExpressV4MiddlewareController { + @applyMiddleware( + SuccessfulExpressV4Middleware, + UnsuccessfulExpressV4Middleware, + ) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsOptionsSuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsOptionsSuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..34e82a0c5 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsOptionsSuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsOptionsSuccessfulExpressV4MiddlewareController { + @applyMiddleware(SuccessfulExpressV4Middleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsOptionsUnsuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsOptionsUnsuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..40f06228e --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsOptionsUnsuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,14 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../../middlewares/express4/UnsuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsOptionsUnsuccessfulExpressV4MiddlewareController { + @applyMiddleware( + SuccessfulExpressV4Middleware, + UnsuccessfulExpressV4Middleware, + ) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPatchSuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPatchSuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..105018a3f --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPatchSuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsPatchSuccessfulExpressV4MiddlewareController { + @applyMiddleware(SuccessfulExpressV4Middleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPatchUnsuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPatchUnsuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..9fe5ccc71 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPatchUnsuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,14 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../../middlewares/express4/UnsuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsPatchUnsuccessfulExpressV4MiddlewareController { + @applyMiddleware( + SuccessfulExpressV4Middleware, + UnsuccessfulExpressV4Middleware, + ) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPostSuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPostSuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..47e14666c --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPostSuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsPostSuccessfulExpressV4MiddlewareController { + @applyMiddleware(SuccessfulExpressV4Middleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPostUnsuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPostUnsuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..c83da56c8 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPostUnsuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,14 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../../middlewares/express4/UnsuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsPostUnsuccessfulExpressV4MiddlewareController { + @applyMiddleware( + SuccessfulExpressV4Middleware, + UnsuccessfulExpressV4Middleware, + ) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPutSuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPutSuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..4c920f973 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPutSuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsPutSuccessfulExpressV4MiddlewareController { + @applyMiddleware(SuccessfulExpressV4Middleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPutUnsuccessfulExpressV4MiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPutUnsuccessfulExpressV4MiddlewareController.ts new file mode 100644 index 000000000..ced6b3e0a --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/express4/WarriorsPutUnsuccessfulExpressV4MiddlewareController.ts @@ -0,0 +1,14 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulExpressV4Middleware } from '../../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../../middlewares/express4/UnsuccessfulExpressV4Middleware'; + +@controller('/warriors') +export class WarriorsPutUnsuccessfulExpressV4MiddlewareController { + @applyMiddleware( + SuccessfulExpressV4Middleware, + UnsuccessfulExpressV4Middleware, + ) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsDeleteSuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsDeleteSuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..a474d51ce --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsDeleteSuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsDeleteSuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsDeleteUnsuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsDeleteUnsuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..030345c71 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsDeleteUnsuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../../middlewares/fastify/UnsuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsDeleteUnsuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware, UnsuccessfulFastifyMiddleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsGetSuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsGetSuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..88555da59 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsGetSuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsGetSuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsGetUnsuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsGetUnsuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..3a124534e --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsGetUnsuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../../middlewares/fastify/UnsuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsGetUnsuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware, UnsuccessfulFastifyMiddleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsOptionsSuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsOptionsSuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..0c2bb3b59 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsOptionsSuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsOptionsSuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsOptionsUnsuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsOptionsUnsuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..37979c926 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsOptionsUnsuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../../middlewares/fastify/UnsuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsOptionsUnsuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware, UnsuccessfulFastifyMiddleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPatchSuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPatchSuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..03c4ba6d0 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPatchSuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsPatchSuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPatchUnsuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPatchUnsuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..664ad8b02 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPatchUnsuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../../middlewares/fastify/UnsuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsPatchUnsuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware, UnsuccessfulFastifyMiddleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPostSuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPostSuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..5d32efe20 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPostSuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsPostSuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPostUnsuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPostUnsuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..5c094e94c --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPostUnsuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../../middlewares/fastify/UnsuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsPostUnsuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware, UnsuccessfulFastifyMiddleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPutSuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPutSuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..f6dd60f73 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPutSuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsPutSuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPutUnsuccessfulFastifyMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPutUnsuccessfulFastifyMiddlewareController.ts new file mode 100644 index 000000000..b71c0fc91 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/fastify/WarriorsPutUnsuccessfulFastifyMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulFastifyMiddleware } from '../../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../../middlewares/fastify/UnsuccessfulFastifyMiddleware'; + +@controller('/warriors') +export class WarriorsPutUnsuccessfulFastifyMiddlewareController { + @applyMiddleware(SuccessfulFastifyMiddleware, UnsuccessfulFastifyMiddleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsDeleteSuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsDeleteSuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..39f4e3ad0 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsDeleteSuccessfulHonoMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsDeleteSuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsDeleteUnsuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsDeleteUnsuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..dddbca94b --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsDeleteUnsuccessfulHonoMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, DELETE } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../../middlewares/hono/UnsuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsDeleteUnsuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware, UnsuccessfulHonoMiddleware) + @DELETE() + public async deleteWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsGetSuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsGetSuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..97f788d6f --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsGetSuccessfulHonoMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsGetSuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsGetUnsuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsGetUnsuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..df314e654 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsGetUnsuccessfulHonoMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, GET } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../../middlewares/hono/UnsuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsGetUnsuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware, UnsuccessfulHonoMiddleware) + @GET() + public async getWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsOptionsSuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsOptionsSuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..f59a8df88 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsOptionsSuccessfulHonoMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsOptionsSuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsOptionsUnsuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsOptionsUnsuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..7ec85ff91 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsOptionsUnsuccessfulHonoMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, OPTIONS } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../../middlewares/hono/UnsuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsOptionsUnsuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware, UnsuccessfulHonoMiddleware) + @OPTIONS() + public async optionsWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPatchSuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPatchSuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..77e26be7e --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPatchSuccessfulHonoMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsPatchSuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPatchUnsuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPatchUnsuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..bcde92bb3 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPatchUnsuccessfulHonoMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, PATCH } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../../middlewares/hono/UnsuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsPatchUnsuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware, UnsuccessfulHonoMiddleware) + @PATCH() + public async patchWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPostSuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPostSuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..ae1cb89c6 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPostSuccessfulHonoMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsPostSuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPostUnsuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPostUnsuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..373f3e3c6 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPostUnsuccessfulHonoMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, POST } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../../middlewares/hono/UnsuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsPostUnsuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware, UnsuccessfulHonoMiddleware) + @POST() + public async postWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPutSuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPutSuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..91a0941bf --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPutSuccessfulHonoMiddlewareController.ts @@ -0,0 +1,10 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsPutSuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPutUnsuccessfulHonoMiddlewareController.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPutUnsuccessfulHonoMiddlewareController.ts new file mode 100644 index 000000000..01686358f --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/controllers/hono/WarriorsPutUnsuccessfulHonoMiddlewareController.ts @@ -0,0 +1,11 @@ +import { applyMiddleware, controller, PUT } from '@inversifyjs/http-core'; + +import { SuccessfulHonoMiddleware } from '../../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../../middlewares/hono/UnsuccessfulHonoMiddleware'; + +@controller('/warriors') +export class WarriorsPutUnsuccessfulHonoMiddlewareController { + @applyMiddleware(SuccessfulHonoMiddleware, UnsuccessfulHonoMiddleware) + @PUT() + public async putWarrior(): Promise {} +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express/SuccessfulExpressMiddleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express/SuccessfulExpressMiddleware.ts new file mode 100644 index 000000000..8c888d334 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express/SuccessfulExpressMiddleware.ts @@ -0,0 +1,18 @@ +import { Middleware } from '@inversifyjs/http-core'; +import { NextFunction, Request, Response } from 'express'; +import { injectable } from 'inversify'; + +@injectable() +export class SuccessfulExpressMiddleware + implements Middleware +{ + public async execute( + _request: Request, + response: Response, + next: NextFunction, + ): Promise { + response.setHeader('x-test-header', 'test-value'); + + next(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express/UnsuccessfulExpressMiddleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express/UnsuccessfulExpressMiddleware.ts new file mode 100644 index 000000000..8917b760a --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express/UnsuccessfulExpressMiddleware.ts @@ -0,0 +1,16 @@ +import { HttpStatusCode, Middleware } from '@inversifyjs/http-core'; +import { NextFunction, Request, Response } from 'express'; +import { injectable } from 'inversify'; + +@injectable() +export class UnsuccessfulExpressMiddleware + implements Middleware +{ + public async execute( + _request: Request, + response: Response, + _next: NextFunction, + ): Promise { + response.status(HttpStatusCode.FORBIDDEN).send(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express4/SuccessfulExpressV4Middleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express4/SuccessfulExpressV4Middleware.ts new file mode 100644 index 000000000..918a1a7cb --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express4/SuccessfulExpressV4Middleware.ts @@ -0,0 +1,18 @@ +import { Middleware } from '@inversifyjs/http-core'; +import { NextFunction, Request, Response } from 'express4'; +import { injectable } from 'inversify'; + +@injectable() +export class SuccessfulExpressV4Middleware + implements Middleware +{ + public async execute( + _request: Request, + response: Response, + next: NextFunction, + ): Promise { + response.setHeader('x-test-header', 'test-value'); + + next(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express4/UnsuccessfulExpressV4Middleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express4/UnsuccessfulExpressV4Middleware.ts new file mode 100644 index 000000000..224e0df16 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/express4/UnsuccessfulExpressV4Middleware.ts @@ -0,0 +1,16 @@ +import { HttpStatusCode, Middleware } from '@inversifyjs/http-core'; +import { NextFunction, Request, Response } from 'express4'; +import { injectable } from 'inversify'; + +@injectable() +export class UnsuccessfulExpressV4Middleware + implements Middleware +{ + public async execute( + _request: Request, + response: Response, + _next: NextFunction, + ): Promise { + response.status(HttpStatusCode.FORBIDDEN).send(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/fastify/SuccessfulFastifyMiddleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/fastify/SuccessfulFastifyMiddleware.ts new file mode 100644 index 000000000..2a0659095 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/fastify/SuccessfulFastifyMiddleware.ts @@ -0,0 +1,19 @@ +import { Middleware } from '@inversifyjs/http-core'; +import { FastifyReply, FastifyRequest, HookHandlerDoneFunction } from 'fastify'; +import { injectable } from 'inversify'; + +@injectable() +export class SuccessfulFastifyMiddleware + implements + Middleware +{ + public async execute( + _request: FastifyRequest, + response: FastifyReply, + next: HookHandlerDoneFunction, + ): Promise { + response.header('x-test-header', 'test-value'); + + next(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/fastify/UnsuccessfulFastifyMiddleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/fastify/UnsuccessfulFastifyMiddleware.ts new file mode 100644 index 000000000..bb53a7050 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/fastify/UnsuccessfulFastifyMiddleware.ts @@ -0,0 +1,17 @@ +import { HttpStatusCode, Middleware } from '@inversifyjs/http-core'; +import { FastifyReply, FastifyRequest, HookHandlerDoneFunction } from 'fastify'; +import { injectable } from 'inversify'; + +@injectable() +export class UnsuccessfulFastifyMiddleware + implements + Middleware +{ + public async execute( + _request: FastifyRequest, + response: FastifyReply, + _next: HookHandlerDoneFunction, + ): Promise { + response.status(HttpStatusCode.FORBIDDEN).send(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/hono/SuccessfulHonoMiddleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/hono/SuccessfulHonoMiddleware.ts new file mode 100644 index 000000000..04db1ac3a --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/hono/SuccessfulHonoMiddleware.ts @@ -0,0 +1,18 @@ +import { Middleware } from '@inversifyjs/http-core'; +import { Context, HonoRequest, Next } from 'hono'; +import { injectable } from 'inversify'; + +@injectable() +export class SuccessfulHonoMiddleware + implements Middleware +{ + public async execute( + _request: HonoRequest, + response: Context, + next: Next, + ): Promise { + response.header('x-test-header', 'test-value'); + + await next(); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/hono/UnsuccessfulHonoMiddleware.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/hono/UnsuccessfulHonoMiddleware.ts new file mode 100644 index 000000000..dc33d8f86 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/middlewares/hono/UnsuccessfulHonoMiddleware.ts @@ -0,0 +1,18 @@ +import { HttpStatusCode, Middleware } from '@inversifyjs/http-core'; +import { Context, HonoRequest, Next } from 'hono'; +import { injectable } from 'inversify'; + +@injectable() +export class UnsuccessfulHonoMiddleware + implements Middleware +{ + public async execute( + _request: HonoRequest, + response: Context, + _next: Next, + ): Promise { + response.status(HttpStatusCode.FORBIDDEN); + + return response.json(undefined); + } +} diff --git a/packages/http/tools/e2e-tests/src/warrior/middleware/step-definitions/givenDefinitions.ts b/packages/http/tools/e2e-tests/src/warrior/middleware/step-definitions/givenDefinitions.ts new file mode 100644 index 000000000..4f6d052e1 --- /dev/null +++ b/packages/http/tools/e2e-tests/src/warrior/middleware/step-definitions/givenDefinitions.ts @@ -0,0 +1,377 @@ +import { Given } from '@cucumber/cucumber'; +import { Container } from 'inversify'; + +import { defaultAlias } from '../../../common/models/defaultAlias'; +import { InversifyHttpWorld } from '../../../common/models/InversifyHttpWorld'; +import { getContainerOrFail } from '../../../container/calculations/getContainerOrFail'; +import { HttpMethod } from '../../../http/models/HttpMethod'; +import { ServerKind } from '../../../server/models/ServerKind'; +import { WarriorsDeleteSuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsDeleteSuccessfulExpressMiddlewareController'; +import { WarriorsDeleteUnsuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsDeleteUnsuccessfulExpressMiddlewareController'; +import { WarriorsGetSuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsGetSuccessfulExpressMiddlewareController'; +import { WarriorsGetUnsuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsGetUnsuccessfulExpressMiddlewareController'; +import { WarriorsOptionsSuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsOptionsSuccessfulExpressMiddlewareController'; +import { WarriorsOptionsUnsuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsOptionsUnsuccessfulExpressMiddlewareController'; +import { WarriorsPatchSuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsPatchSuccessfulExpressMiddlewareController'; +import { WarriorsPatchUnsuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsPatchUnsuccessfulExpressMiddlewareController'; +import { WarriorsPostSuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsPostSuccessfulExpressMiddlewareController'; +import { WarriorsPostUnsuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsPostUnsuccessfulExpressMiddlewareController'; +import { WarriorsPutSuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsPutSuccessfulExpressMiddlewareController'; +import { WarriorsPutUnsuccessfulExpressMiddlewareController } from '../controllers/express/WarriorsPutUnsuccessfulExpressMiddlewareController'; +import { WarriorsDeleteSuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsDeleteSuccessfulExpressV4MiddlewareController'; +import { WarriorsDeleteUnsuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsDeleteUnsuccessfulExpressV4MiddlewareController'; +import { WarriorsGetSuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsGetSuccessfulExpressV4MiddlewareController'; +import { WarriorsGetUnsuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsGetUnsuccessfulExpressV4MiddlewareController'; +import { WarriorsOptionsSuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsOptionsSuccessfulExpressV4MiddlewareController'; +import { WarriorsOptionsUnsuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsOptionsUnsuccessfulExpressV4MiddlewareController'; +import { WarriorsPatchSuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsPatchSuccessfulExpressV4MiddlewareController'; +import { WarriorsPatchUnsuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsPatchUnsuccessfulExpressV4MiddlewareController'; +import { WarriorsPostSuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsPostSuccessfulExpressV4MiddlewareController'; +import { WarriorsPostUnsuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsPostUnsuccessfulExpressV4MiddlewareController'; +import { WarriorsPutSuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsPutSuccessfulExpressV4MiddlewareController'; +import { WarriorsPutUnsuccessfulExpressV4MiddlewareController } from '../controllers/express4/WarriorsPutUnsuccessfulExpressV4MiddlewareController'; +import { WarriorsDeleteSuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsDeleteSuccessfulFastifyMiddlewareController'; +import { WarriorsDeleteUnsuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsDeleteUnsuccessfulFastifyMiddlewareController'; +import { WarriorsGetSuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsGetSuccessfulFastifyMiddlewareController'; +import { WarriorsGetUnsuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsGetUnsuccessfulFastifyMiddlewareController'; +import { WarriorsOptionsSuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsOptionsSuccessfulFastifyMiddlewareController'; +import { WarriorsOptionsUnsuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsOptionsUnsuccessfulFastifyMiddlewareController'; +import { WarriorsPatchSuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsPatchSuccessfulFastifyMiddlewareController'; +import { WarriorsPatchUnsuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsPatchUnsuccessfulFastifyMiddlewareController'; +import { WarriorsPostSuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsPostSuccessfulFastifyMiddlewareController'; +import { WarriorsPostUnsuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsPostUnsuccessfulFastifyMiddlewareController'; +import { WarriorsPutSuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsPutSuccessfulFastifyMiddlewareController'; +import { WarriorsPutUnsuccessfulFastifyMiddlewareController } from '../controllers/fastify/WarriorsPutUnsuccessfulFastifyMiddlewareController'; +import { WarriorsDeleteSuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsDeleteSuccessfulHonoMiddlewareController'; +import { WarriorsDeleteUnsuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsDeleteUnsuccessfulHonoMiddlewareController'; +import { WarriorsGetSuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsGetSuccessfulHonoMiddlewareController'; +import { WarriorsGetUnsuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsGetUnsuccessfulHonoMiddlewareController'; +import { WarriorsOptionsSuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsOptionsSuccessfulHonoMiddlewareController'; +import { WarriorsOptionsUnsuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsOptionsUnsuccessfulHonoMiddlewareController'; +import { WarriorsPatchSuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsPatchSuccessfulHonoMiddlewareController'; +import { WarriorsPatchUnsuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsPatchUnsuccessfulHonoMiddlewareController'; +import { WarriorsPostSuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsPostSuccessfulHonoMiddlewareController'; +import { WarriorsPostUnsuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsPostUnsuccessfulHonoMiddlewareController'; +import { WarriorsPutSuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsPutSuccessfulHonoMiddlewareController'; +import { WarriorsPutUnsuccessfulHonoMiddlewareController } from '../controllers/hono/WarriorsPutUnsuccessfulHonoMiddlewareController'; +import { SuccessfulExpressMiddleware } from '../middlewares/express/SuccessfulExpressMiddleware'; +import { UnsuccessfulExpressMiddleware } from '../middlewares/express/UnsuccessfulExpressMiddleware'; +import { SuccessfulExpressV4Middleware } from '../middlewares/express4/SuccessfulExpressV4Middleware'; +import { UnsuccessfulExpressV4Middleware } from '../middlewares/express4/UnsuccessfulExpressV4Middleware'; +import { SuccessfulFastifyMiddleware } from '../middlewares/fastify/SuccessfulFastifyMiddleware'; +import { UnsuccessfulFastifyMiddleware } from '../middlewares/fastify/UnsuccessfulFastifyMiddleware'; +import { SuccessfulHonoMiddleware } from '../middlewares/hono/SuccessfulHonoMiddleware'; +import { UnsuccessfulHonoMiddleware } from '../middlewares/hono/UnsuccessfulHonoMiddleware'; + +function getMethodWarriorSuccessfulExpressMiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteSuccessfulExpressMiddlewareController; + case HttpMethod.get: + return WarriorsGetSuccessfulExpressMiddlewareController; + case HttpMethod.options: + return WarriorsOptionsSuccessfulExpressMiddlewareController; + case HttpMethod.patch: + return WarriorsPatchSuccessfulExpressMiddlewareController; + case HttpMethod.post: + return WarriorsPostSuccessfulExpressMiddlewareController; + case HttpMethod.put: + return WarriorsPutSuccessfulExpressMiddlewareController; + } +} + +function getMethodWarriorSuccessfulExpressV4MiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteSuccessfulExpressV4MiddlewareController; + case HttpMethod.get: + return WarriorsGetSuccessfulExpressV4MiddlewareController; + case HttpMethod.options: + return WarriorsOptionsSuccessfulExpressV4MiddlewareController; + case HttpMethod.patch: + return WarriorsPatchSuccessfulExpressV4MiddlewareController; + case HttpMethod.post: + return WarriorsPostSuccessfulExpressV4MiddlewareController; + case HttpMethod.put: + return WarriorsPutSuccessfulExpressV4MiddlewareController; + } +} + +function getMethodWarriorSuccessfulFastifyMiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteSuccessfulFastifyMiddlewareController; + case HttpMethod.get: + return WarriorsGetSuccessfulFastifyMiddlewareController; + case HttpMethod.options: + return WarriorsOptionsSuccessfulFastifyMiddlewareController; + case HttpMethod.patch: + return WarriorsPatchSuccessfulFastifyMiddlewareController; + case HttpMethod.post: + return WarriorsPostSuccessfulFastifyMiddlewareController; + case HttpMethod.put: + return WarriorsPutSuccessfulFastifyMiddlewareController; + } +} + +function getMethodWarriorSuccessfulHonoMiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteSuccessfulHonoMiddlewareController; + case HttpMethod.get: + return WarriorsGetSuccessfulHonoMiddlewareController; + case HttpMethod.options: + return WarriorsOptionsSuccessfulHonoMiddlewareController; + case HttpMethod.patch: + return WarriorsPatchSuccessfulHonoMiddlewareController; + case HttpMethod.post: + return WarriorsPostSuccessfulHonoMiddlewareController; + case HttpMethod.put: + return WarriorsPutSuccessfulHonoMiddlewareController; + } +} + +function getMethodWarriorUnsuccessfulExpressMiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteUnsuccessfulExpressMiddlewareController; + case HttpMethod.get: + return WarriorsGetUnsuccessfulExpressMiddlewareController; + case HttpMethod.options: + return WarriorsOptionsUnsuccessfulExpressMiddlewareController; + case HttpMethod.patch: + return WarriorsPatchUnsuccessfulExpressMiddlewareController; + case HttpMethod.post: + return WarriorsPostUnsuccessfulExpressMiddlewareController; + case HttpMethod.put: + return WarriorsPutUnsuccessfulExpressMiddlewareController; + } +} + +function getMethodWarriorUnsuccessfulExpressV4MiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteUnsuccessfulExpressV4MiddlewareController; + case HttpMethod.get: + return WarriorsGetUnsuccessfulExpressV4MiddlewareController; + case HttpMethod.options: + return WarriorsOptionsUnsuccessfulExpressV4MiddlewareController; + case HttpMethod.patch: + return WarriorsPatchUnsuccessfulExpressV4MiddlewareController; + case HttpMethod.post: + return WarriorsPostUnsuccessfulExpressV4MiddlewareController; + case HttpMethod.put: + return WarriorsPutUnsuccessfulExpressV4MiddlewareController; + } +} + +function getMethodWarriorUnsuccessfulFastifyMiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteUnsuccessfulFastifyMiddlewareController; + case HttpMethod.get: + return WarriorsGetUnsuccessfulFastifyMiddlewareController; + case HttpMethod.options: + return WarriorsOptionsUnsuccessfulFastifyMiddlewareController; + case HttpMethod.patch: + return WarriorsPatchUnsuccessfulFastifyMiddlewareController; + case HttpMethod.post: + return WarriorsPostUnsuccessfulFastifyMiddlewareController; + case HttpMethod.put: + return WarriorsPutUnsuccessfulFastifyMiddlewareController; + } +} + +function getMethodWarriorUnsuccessfulHonoMiddlewareController( + method: HttpMethod, +): NewableFunction { + switch (method) { + case HttpMethod.delete: + return WarriorsDeleteUnsuccessfulHonoMiddlewareController; + case HttpMethod.get: + return WarriorsGetUnsuccessfulHonoMiddlewareController; + case HttpMethod.options: + return WarriorsOptionsUnsuccessfulHonoMiddlewareController; + case HttpMethod.patch: + return WarriorsPatchUnsuccessfulHonoMiddlewareController; + case HttpMethod.post: + return WarriorsPostUnsuccessfulHonoMiddlewareController; + case HttpMethod.put: + return WarriorsPutUnsuccessfulHonoMiddlewareController; + } +} + +function givenWarriorSuccessfulMiddlewareControllerForContainer( + this: InversifyHttpWorld, + method: HttpMethod, + serverKind: ServerKind, + containerAlias?: string, +): void { + const parsedContainerAlias: string = containerAlias ?? defaultAlias; + + const container: Container = + getContainerOrFail.bind(this)(parsedContainerAlias); + + let getMethodWarriorSuccessfulController: ( + method: HttpMethod, + ) => NewableFunction; + + switch (serverKind) { + case ServerKind.express: + getMethodWarriorSuccessfulController = + getMethodWarriorSuccessfulExpressMiddlewareController; + break; + case ServerKind.express4: + getMethodWarriorSuccessfulController = + getMethodWarriorSuccessfulExpressV4MiddlewareController; + break; + case ServerKind.fastify: + getMethodWarriorSuccessfulController = + getMethodWarriorSuccessfulFastifyMiddlewareController; + break; + case ServerKind.hono: + getMethodWarriorSuccessfulController = + getMethodWarriorSuccessfulHonoMiddlewareController; + break; + } + + const controller: NewableFunction = + getMethodWarriorSuccessfulController(method); + + let middleware: NewableFunction; + switch (serverKind) { + case ServerKind.express: + middleware = SuccessfulExpressMiddleware; + break; + case ServerKind.express4: + middleware = SuccessfulExpressV4Middleware; + break; + case ServerKind.fastify: + middleware = SuccessfulFastifyMiddleware; + break; + case ServerKind.hono: + middleware = SuccessfulHonoMiddleware; + break; + } + + container.bind(middleware).toSelf().inSingletonScope(); + container.bind(controller).toSelf().inSingletonScope(); +} + +function givenWarriorUnsuccessfulMiddlewareControllerForContainer( + this: InversifyHttpWorld, + method: HttpMethod, + serverKind: ServerKind, + containerAlias?: string, +): void { + const parsedContainerAlias: string = containerAlias ?? defaultAlias; + + const container: Container = + getContainerOrFail.bind(this)(parsedContainerAlias); + + let getMethodWarriorUnsuccessfulController: ( + method: HttpMethod, + ) => NewableFunction; + + switch (serverKind) { + case ServerKind.express: + getMethodWarriorUnsuccessfulController = + getMethodWarriorUnsuccessfulExpressMiddlewareController; + break; + case ServerKind.express4: + getMethodWarriorUnsuccessfulController = + getMethodWarriorUnsuccessfulExpressV4MiddlewareController; + break; + case ServerKind.fastify: + getMethodWarriorUnsuccessfulController = + getMethodWarriorUnsuccessfulFastifyMiddlewareController; + break; + case ServerKind.hono: + getMethodWarriorUnsuccessfulController = + getMethodWarriorUnsuccessfulHonoMiddlewareController; + break; + } + + const controller: NewableFunction = + getMethodWarriorUnsuccessfulController(method); + + let successfulMiddleware: NewableFunction; + + switch (serverKind) { + case ServerKind.express: + successfulMiddleware = SuccessfulExpressMiddleware; + break; + case ServerKind.express4: + successfulMiddleware = SuccessfulExpressV4Middleware; + break; + case ServerKind.fastify: + successfulMiddleware = SuccessfulFastifyMiddleware; + break; + case ServerKind.hono: + successfulMiddleware = SuccessfulHonoMiddleware; + break; + } + + let unsuccessfulMiddleware: NewableFunction; + + switch (serverKind) { + case ServerKind.express: + unsuccessfulMiddleware = UnsuccessfulExpressMiddleware; + break; + case ServerKind.express4: + unsuccessfulMiddleware = UnsuccessfulExpressV4Middleware; + break; + case ServerKind.fastify: + unsuccessfulMiddleware = UnsuccessfulFastifyMiddleware; + break; + case ServerKind.hono: + unsuccessfulMiddleware = UnsuccessfulHonoMiddleware; + break; + } + + container.bind(successfulMiddleware).toSelf().inSingletonScope(); + container.bind(unsuccessfulMiddleware).toSelf().inSingletonScope(); + container.bind(controller).toSelf().inSingletonScope(); +} + +Given( + 'a warrior controller with SuccessfulMiddleware for "{httpMethod}" method and "{serverKind}" server', + function ( + this: InversifyHttpWorld, + httpMethod: HttpMethod, + serverKind: ServerKind, + ): void { + givenWarriorSuccessfulMiddlewareControllerForContainer.bind(this)( + httpMethod, + serverKind, + ); + }, +); + +Given( + 'a warrior controller with UnsuccessfulMiddleware for "{httpMethod}" method and "{serverKind}" server', + function ( + this: InversifyHttpWorld, + httpMethod: HttpMethod, + serverKind: ServerKind, + ): void { + givenWarriorUnsuccessfulMiddlewareControllerForContainer.bind(this)( + httpMethod, + serverKind, + ); + }, +);