diff --git a/test/issues/374/routes/entity/.autohooks.js b/test/issues/374/routes/entity/.autohooks.js new file mode 100644 index 00000000..951e9583 --- /dev/null +++ b/test/issues/374/routes/entity/.autohooks.js @@ -0,0 +1,8 @@ +'use strict' + +module.exports = async function (app, opts) { + app.addHook('onRequest', async (req, reply) => { + req.hooked = req.hooked || [] + req.hooked.push('root') + }) +} diff --git a/test/issues/374/routes/entity/_entity/index.js b/test/issues/374/routes/entity/_entity/index.js new file mode 100644 index 00000000..c6d63048 --- /dev/null +++ b/test/issues/374/routes/entity/_entity/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url, hooked: req.hooked, params: req.params }) + }) +} diff --git a/test/issues/374/routes/entity/index.js b/test/issues/374/routes/entity/index.js new file mode 100644 index 00000000..0b14399b --- /dev/null +++ b/test/issues/374/routes/entity/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url, hooked: req.hooked }) + }) +} diff --git a/test/issues/374/routes/index.js b/test/issues/374/routes/index.js new file mode 100644 index 00000000..51a699b4 --- /dev/null +++ b/test/issues/374/routes/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url }) + }) +} diff --git a/test/issues/374/test.js b/test/issues/374/test.js new file mode 100644 index 00000000..ce1d05c0 --- /dev/null +++ b/test/issues/374/test.js @@ -0,0 +1,45 @@ +'use strict' + +const t = require('tap') +const path = require('node:path') +const Fastify = require('fastify') +const autoLoad = require('../../../') + +t.plan(10) + +const app = Fastify() + +app.register(autoLoad, { + dir: path.join(__dirname, 'routes'), + autoHooks: true, + cascadeHooks: true, + routeParams: true +}) + +app.ready(function (err) { + t.error(err) + + app.inject({ + url: '/' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/' }) + }) + + app.inject({ + url: '/entity' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/entity', hooked: ['root'] }) + }) + + app.inject({ + url: '/entity/1' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/entity/1', hooked: ['root'], params: { entity: 1 } }) + }) +}) diff --git a/test/issues/376/routes/entity/.autohooks.js b/test/issues/376/routes/entity/.autohooks.js new file mode 100644 index 00000000..951e9583 --- /dev/null +++ b/test/issues/376/routes/entity/.autohooks.js @@ -0,0 +1,8 @@ +'use strict' + +module.exports = async function (app, opts) { + app.addHook('onRequest', async (req, reply) => { + req.hooked = req.hooked || [] + req.hooked.push('root') + }) +} diff --git a/test/issues/376/routes/entity/index.js b/test/issues/376/routes/entity/index.js new file mode 100644 index 00000000..0b14399b --- /dev/null +++ b/test/issues/376/routes/entity/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url, hooked: req.hooked }) + }) +} diff --git a/test/issues/376/routes/index.js b/test/issues/376/routes/index.js new file mode 100644 index 00000000..51a699b4 --- /dev/null +++ b/test/issues/376/routes/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (app, opts, next) { + app.get('/', async function (req, reply) { + reply.status(200).send({ path: req.url }) + }) +} diff --git a/test/issues/376/test.js b/test/issues/376/test.js new file mode 100644 index 00000000..d1f42b2d --- /dev/null +++ b/test/issues/376/test.js @@ -0,0 +1,58 @@ +'use strict' + +const t = require('tap') +const path = require('node:path') +const Fastify = require('fastify') +const autoLoad = require('../../../') + +t.plan(13) + +const app = Fastify() + +app.register(autoLoad, { + dir: path.join(__dirname, 'routes'), + autoHooks: true, + options: { prefix: '/api' } +}) + +app.register(autoLoad, { + dir: path.join(__dirname, 'routes'), + autoHooks: true, + options: { prefix: '/prefix/' } +}) + +app.ready(function (err) { + t.error(err) + + app.inject({ + url: '/api' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/api' }) + }) + + app.inject({ + url: '/api/entity' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/api/entity', hooked: ['root'] }) + }) + + app.inject({ + url: '/prefix' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/prefix' }) + }) + + app.inject({ + url: '/prefix/entity' + }, function (err, res) { + t.error(err) + t.equal(res.statusCode, 200) + t.same(res.json(), { path: '/prefix/entity', hooked: ['root'] }) + }) +})