main
1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15import net from 'node:net'
16
17export const fakeServer = (data = []) => {
18 const server = net.createServer()
19 server.on('connection', (conn) => {
20 conn.on('data', () => {
21 const d = data.shift() || 'pong'
22 const _d = d.toString('utf-8').split(/\r?\n/).join('\r\n')
23 conn.write(_d)
24 })
25 })
26 server.stop = () => new Promise((resolve) => server.close(() => resolve()))
27 server.start = async (port) => {
28 const p = port || (await (await import('get-port')).getPort())
29 server.url = `http://127.0.0.1:${p}`
30 return new Promise((resolve) => server.listen(p, () => resolve(server)))
31 }
32
33 return server
34}