| package protocol | |
| import ( | |
| "io" | |
| "net/http" | |
| "strings" | |
| "testing" | |
| ) | |
| func TestScanSSELinesHandlesLongSingleLine(t *testing.T) { | |
| payload := strings.Repeat("x", 2*1024*1024+4096) | |
| body := "data: {\"p\":\"response/content\",\"v\":\"" + payload + "\"}\n" | |
| resp := &http.Response{Body: io.NopCloser(strings.NewReader(body))} | |
| var got string | |
| err := ScanSSELines(resp, func(line []byte) bool { | |
| got = string(line) | |
| return true | |
| }) | |
| if err != nil { | |
| t.Fatalf("ScanSSELines returned error: %v", err) | |
| } | |
| if !strings.Contains(got, payload) { | |
| t.Fatalf("long SSE line was not preserved: got len=%d want payload len=%d", len(got), len(payload)) | |
| } | |
| } | |