34 lines
966 B
Go
34 lines
966 B
Go
package proxy
|
|
|
|
import "testing"
|
|
|
|
func TestSSEEventTrackerRejectsEventAfterTerminalEvent(t *testing.T) {
|
|
var tracker sseEventTracker
|
|
tracker.Write([]byte("data: [DONE]\n\ndata: unexpected\n\n"))
|
|
|
|
if tracker.Complete() {
|
|
t.Fatal("SSE stream with an event after its terminal event must not be complete")
|
|
}
|
|
}
|
|
|
|
func TestSSEEventTrackerAcceptsCROnlyEventBoundary(t *testing.T) {
|
|
var tracker sseEventTracker
|
|
tracker.Write([]byte("data: [DONE]\r\r"))
|
|
|
|
if !tracker.Complete() {
|
|
t.Fatal("terminal SSE event with CR-only boundary should be complete")
|
|
}
|
|
}
|
|
|
|
func TestSSEEventTrackerStopsBufferingOverLimit(t *testing.T) {
|
|
tracker := newSSEEventTracker(8)
|
|
tracker.Write([]byte("data: 123456789"))
|
|
|
|
if tracker.Complete() {
|
|
t.Fatal("overflowed SSE tracker must not report a complete stream")
|
|
}
|
|
if len(tracker.buf) != 0 || !tracker.overflow {
|
|
t.Fatalf("overflow state=%v buffered=%d, want overflow with released buffer", tracker.overflow, len(tracker.buf))
|
|
}
|
|
}
|