current commit
260930.1 · feat: Added @perseveranza-pets/milo as alternative experimental HTTP parser (#5492)
'use strict'

const { test } = require('node:test')
const { Client } = require('..')
const { H1Parser } = require('../lib/dispatcher/parser-h1')
const { kParser, kUseMilo } = require('../lib/core/symbols')

function createSocket () {
  const socket = {
    destroyed: false,
    errored: null,
    readable: true,
    readableLength: 0,
    on () { return this },
    once () { return this },
    removeListener () { return this },
    unshift () {}
  }

  return socket
}

test('uses Milo when enabled on a Client', async (t) => {
  const client = new Client('http://localhost:1', { useMilo: true })
  const socket = createSocket()

  const connectH1 = require('../lib/dispatcher/client-h1')
  connectH1(client, socket)

  t.assert.strictEqual(client[kUseMilo], true)
  t.assert.ok(socket[kParser] instanceof H1Parser)
  socket[kParser].destroy()
})

test('allows disabling Milo explicitly', async (t) => {
  const client = new Client('http://localhost:1', { useMilo: false })
  const socket = createSocket()

  const connectH1 = require('../lib/dispatcher/client-h1')
  connectH1(client, socket)

  t.assert.strictEqual(client[kUseMilo], false)
  t.assert.ok(!(socket[kParser] instanceof H1Parser))
  socket[kParser].destroy()
})