// Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Ported from // https://github.com/golang/go/blob/master/src/net/http/responsewrite_test.go import { test, assert, assertEqual } from "https://deno.land/x/testing/testing.ts"; import { listenAndServe, ServerRequest, setContentLength, Response } from "./http"; import { Buffer } from "./buffer"; import { BufWriter } from "./bufio"; interface ResponseTest { response: Response; raw: string; } const responseTests: ResponseTest[] = [ // Default response { response: {}, raw: "HTTP/1.1 200 OK\r\n" + "\r\n" }, // HTTP/1.1, chunked coding; empty trailer; close { response: { status: 200, body: new Buffer(new TextEncoder().encode("abcdef")) }, raw: "HTTP/1.1 200 OK\r\n" + "transfer-encoding: chunked\r\n\r\n" + "6\r\nabcdef\r\n0\r\n\r\n" } ]; test(async function responseWrite() { for (const testCase of responseTests) { const buf = new Buffer(); const bufw = new BufWriter(buf); const request = new ServerRequest(); request.w = bufw; await request.respond(testCase.response); assertEqual(buf.toString(), testCase.raw); } });