service/response_test.go

45 lines
1.3 KiB
Go

package service
import (
"net/http/httptest"
"testing"
)
func TestResponseWriteBytes(t *testing.T) {
recorder := httptest.NewRecorder()
response := NewResponse(recorder, nil)
want := "data: 第一条\n\n"
input := make([]any, len([]byte(want)))
for i, value := range []byte(want) {
input[i] = int64(value)
}
if _, err := response.WriteBytes(input); err != nil {
t.Fatal(err)
}
if got := recorder.Body.String(); got != want {
t.Fatalf("body = %q, want %q", got, want)
}
}
func TestResponseWriteBypassesOutputFilterBuffer(t *testing.T) {
recorder := httptest.NewRecorder()
response := NewResponse(recorder, &WebServer{hasOutFilter: true})
if _, err := response.Write([]byte("stream")); err != nil {
t.Fatal(err)
}
if recorder.Body.String() != "stream" || response.filteredWrite {
t.Fatalf("direct write was buffered: wire=%q buffer=%q", recorder.Body.String(), response.body)
}
}
func TestResponseWriteFilteredOptsIntoOutputFilterBuffer(t *testing.T) {
recorder := httptest.NewRecorder()
response := NewResponse(recorder, &WebServer{hasOutFilter: true})
if _, err := response.WriteFiltered([]byte("html")); err != nil {
t.Fatal(err)
}
if recorder.Body.Len() != 0 || !response.filteredWrite || string(response.body) != "html" {
t.Fatalf("filtered write was not buffered: wire=%q buffer=%q", recorder.Body.String(), response.body)
}
}