From 40548a634d0fc4e1ea7b15facb475ecb0431c070 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 6 Apr 2024 11:57:11 +0200 Subject: [PATCH] backend-app-api: add routing test for DefaultRootHttpRouter Signed-off-by: Patrik Oldsberg --- .../DefaultRootHttpRouter.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages/backend-app-api/src/services/implementations/rootHttpRouter/DefaultRootHttpRouter.test.ts b/packages/backend-app-api/src/services/implementations/rootHttpRouter/DefaultRootHttpRouter.test.ts index b72b30e02e..86c117f7e0 100644 --- a/packages/backend-app-api/src/services/implementations/rootHttpRouter/DefaultRootHttpRouter.test.ts +++ b/packages/backend-app-api/src/services/implementations/rootHttpRouter/DefaultRootHttpRouter.test.ts @@ -14,6 +14,8 @@ * limitations under the License. */ +import express from 'express'; +import request from 'supertest'; import { DefaultRootHttpRouter } from './DefaultRootHttpRouter'; describe('DefaultRootHttpRouter', () => { @@ -54,4 +56,37 @@ describe('DefaultRootHttpRouter', () => { 'indexPath option may not be an empty string', ); }); + + it('will always prioritize non-index paths', async () => { + const router = DefaultRootHttpRouter.create({ indexPath: '/x' }); + const app = express(); + app.use(router.handler()); + + const routerX = express.Router(); + routerX.get('/a', (_req, res) => res.status(201).end()); + + const routerY = express.Router(); + routerY.get('/a', (_req, res) => res.status(202).end()); + + await request(app).get('/').expect(404); + await request(app).get('/a').expect(404); + await request(app).get('/x/a').expect(404); + await request(app).get('/y/a').expect(404); + + router.use('/x', routerX); + + await request(app).get('/').expect(404); + await request(app).get('/a').expect(201); + await request(app).get('/x/a').expect(201); + await request(app).get('/y/a').expect(404); + + router.use('/y', routerY); + + await request(app).get('/').expect(404); + await request(app).get('/a').expect(201); + await request(app).get('/x/a').expect(201); + await request(app).get('/y/a').expect(202); + + expect('test').toBe('test'); + }); });