45 lines
1.3 KiB
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)
|
|
}
|
|
}
|