strong-tie/inbound-calls
0
1'use strict'2const { test } = require('node:test')3const { kRouteContext } = require('../lib/symbols')4const fastify = require('..')5 6test('handlers receive correct `this` context', async (t) => {7 t.plan(4)8 9 // simulate plugin that uses fastify-plugin10 const plugin = function (instance, opts, done) {11 instance.decorate('foo', 'foo')12 done()13 }14 plugin[Symbol.for('skip-override')] = true15 16 const instance = fastify()17 instance.register(plugin)18 19 instance.get('/', function (req, reply) {20 t.assert.ok(this.foo)21 t.assert.strictEqual(this.foo, 'foo')22 reply.send()23 })24 25 await instance.inject('/')26 27 t.assert.ok(instance.foo)28 t.assert.strictEqual(instance.foo, 'foo')29})30 31test('handlers have access to the internal context', async (t) => {32 t.plan(5)33 34 const instance = fastify()35 instance.get('/', { config: { foo: 'bar' } }, function (req, reply) {36 t.assert.ok(reply[kRouteContext])37 t.assert.ok(reply[kRouteContext].config)38 t.assert.ok(typeof reply[kRouteContext].config, Object)39 t.assert.ok(reply[kRouteContext].config.foo)40 t.assert.strictEqual(reply[kRouteContext].config.foo, 'bar')41 reply.send()42 })43 44 await instance.inject('/')45})46 