Open
Description
When using a base path, the /
route doesn't seem to run middleware properly.
I wrote a failing test case using CORS as an example to illustrate:
it('Middleware runs for root path when basepathed', async function() {
const testApi = require('../index')({
base: 'base-path'
})
testApi.use((req, res, next) => {
res.cors()
next()
})
testApi.use((err, req, res, next) => {
res.cors()
next()
})
testApi.get('/', async () => {
return { status: 'ok' }
})
let _event = Object.assign({},event,{ path: '/base-path/' }) // even got a trailing slash and everything :(
let result = await testApi.run(_event,{})
expect(result.multiValueHeaders).to.have.property('access-control-allow-origin')
})
The route itself runs and returns { status: 'ok' }
but the CORS headers are missing. If the registered route is changed it works as expected:
// ...
testApi.get('/potato', async () => {
return { status: 'ok' }
})
let _event = Object.assign({},event,{ path: '/base-path/potato' })
// ... this works.
Interestingly, the error middleware runs fine regardless of the route. If you remove the route /
and change the event path to something like '/base-path'
you'll get a 404 (or 405, don't recall) but the CORS headers will be there
Metadata
Metadata
Assignees
Labels
No labels