summaryrefslogtreecommitdiff
path: root/std/examples/tests/echo_server_test.ts
blob: 2cf52e4660ea67ae33cc600a59028d2d76b005fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
import { assertStrictEquals, assertNotEquals } from "../../testing/asserts.ts";
import { BufReader, ReadLineResult } from "../../io/bufio.ts";

Deno.test("[examples/echo_server]", async () => {
  const encoder = new TextEncoder();
  const decoder = new TextDecoder();
  const process = Deno.run({
    cmd: [Deno.execPath(), "run", "--allow-net", "echo_server.ts"],
    cwd: "examples",
    stdout: "piped",
  });

  let conn: Deno.Conn | undefined;
  try {
    const processReader = new BufReader(process.stdout);
    const message = await processReader.readLine();

    assertNotEquals(message, null);
    assertStrictEquals(
      decoder.decode((message as ReadLineResult).line).trim(),
      "Listening on 0.0.0.0:8080"
    );

    conn = await Deno.connect({ hostname: "127.0.0.1", port: 8080 });
    const connReader = new BufReader(conn);

    await conn.write(encoder.encode("Hello echo_server\n"));
    const result = await connReader.readLine();

    assertNotEquals(result, null);

    const actualResponse = decoder
      .decode((result as ReadLineResult).line)
      .trim();
    const expectedResponse = "Hello echo_server";

    assertStrictEquals(actualResponse, expectedResponse);
  } finally {
    conn?.close();
    process.stdout.close();
    process.close();
  }
});