diff options
author | Egor Tensin <egor@tensin.name> | 2024-01-28 11:18:12 +0100 |
---|---|---|
committer | Egor Tensin <egor@tensin.name> | 2024-01-28 11:18:12 +0100 |
commit | 2d40e8046a08373b1740922690b695a16d5e5fa6 (patch) | |
tree | eb086741d1bb01ef9ed3d0ac8e1301447e835971 /node_modules/undici/lib/mock/mock-pool.js | |
parent | workflows/test: upgrade actions (diff) | |
download | cleanup-path-2d40e8046a08373b1740922690b695a16d5e5fa6.tar.gz cleanup-path-2d40e8046a08373b1740922690b695a16d5e5fa6.zip |
bump version in package.json, upgrade dependencies
Diffstat (limited to 'node_modules/undici/lib/mock/mock-pool.js')
-rw-r--r-- | node_modules/undici/lib/mock/mock-pool.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/node_modules/undici/lib/mock/mock-pool.js b/node_modules/undici/lib/mock/mock-pool.js new file mode 100644 index 0000000..0a3a7cd --- /dev/null +++ b/node_modules/undici/lib/mock/mock-pool.js @@ -0,0 +1,59 @@ +'use strict' + +const { promisify } = require('util') +const Pool = require('../pool') +const { buildMockDispatch } = require('./mock-utils') +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = require('./mock-symbols') +const { MockInterceptor } = require('./mock-interceptor') +const Symbols = require('../core/symbols') +const { InvalidArgumentError } = require('../core/errors') + +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +class MockPool extends Pool { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockPool |