0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-30 09:08:00 -04:00
denoland-deno/std/examples/tests/echo_server_test.ts
2020-03-21 09:53:47 -04:00

46 lines
1.4 KiB
TypeScript

// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
import { assertStrictEq, assertNotEquals } from "../../testing/asserts.ts";
import { BufReader, ReadLineResult } from "../../io/bufio.ts";
import { randomPort } from "../../http/test_util.ts";
const port = randomPort();
Deno.test("[examples/echo_server]", async () => {
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const process = Deno.run({
args: [Deno.execPath(), "--allow-net", "echo_server.ts", `${port}`],
cwd: "examples",
stdout: "piped"
});
let conn: Deno.Conn | undefined;
try {
const processReader = new BufReader(process.stdout!);
const message = await processReader.readLine();
assertNotEquals(message, Deno.EOF);
assertStrictEq(
decoder.decode((message as ReadLineResult).line).trim(),
"Listening on 0.0.0.0:" + port
);
conn = await Deno.connect({ hostname: "127.0.0.1", port });
const connReader = new BufReader(conn);
await conn.write(encoder.encode("Hello echo_server\n"));
const result = await connReader.readLine();
assertNotEquals(result, Deno.EOF);
const actualResponse = decoder
.decode((result as ReadLineResult).line)
.trim();
const expectedResponse = "Hello echo_server";
assertStrictEq(actualResponse, expectedResponse);
} finally {
conn?.close();
process.stdout!.close();
process.close();
}
});