@@ -61,13 +61,10 @@ func TestSSEServer(t *testing.T) {
6161 defer sseResp .Body .Close ()
6262
6363 // Read the endpoint event
64- buf := make ([]byte , 1024 )
65- n , err := sseResp .Body .Read (buf )
64+ endpointEvent , err := readSeeEvent (sseResp )
6665 if err != nil {
6766 t .Fatalf ("Failed to read SSE response: %v" , err )
6867 }
69-
70- endpointEvent := string (buf [:n ])
7168 if ! strings .Contains (endpointEvent , "event: endpoint" ) {
7269 t .Fatalf ("Expected endpoint event, got: %s" , endpointEvent )
7370 }
@@ -109,19 +106,6 @@ func TestSSEServer(t *testing.T) {
109106 if resp .StatusCode != http .StatusAccepted {
110107 t .Errorf ("Expected status 202, got %d" , resp .StatusCode )
111108 }
112-
113- // Verify response
114- var response map [string ]interface {}
115- if err := json .NewDecoder (resp .Body ).Decode (& response ); err != nil {
116- t .Fatalf ("Failed to decode response: %v" , err )
117- }
118-
119- if response ["jsonrpc" ] != "2.0" {
120- t .Errorf ("Expected jsonrpc 2.0, got %v" , response ["jsonrpc" ])
121- }
122- if response ["id" ].(float64 ) != 1 {
123- t .Errorf ("Expected id 1, got %v" , response ["id" ])
124- }
125109 })
126110
127111 t .Run ("Can handle multiple sessions" , func (t * testing.T ) {
@@ -210,8 +194,17 @@ func TestSSEServer(t *testing.T) {
210194 }
211195 defer resp .Body .Close ()
212196
197+ endpointEvent , err = readSeeEvent (sseResp )
198+ if err != nil {
199+ t .Fatalf ("Failed to read SSE response: %v" , err )
200+ }
201+ respFromSee := strings .TrimSpace (
202+ strings .Split (strings .Split (endpointEvent , "data: " )[1 ], "\n " )[0 ],
203+ )
204+
205+ fmt .Printf ("========> %v" , respFromSee )
213206 var response map [string ]interface {}
214- if err := json .NewDecoder (resp . Body ).Decode (& response ); err != nil {
207+ if err := json .NewDecoder (strings . NewReader ( respFromSee ) ).Decode (& response ); err != nil {
215208 t .Errorf (
216209 "Session %d: Failed to decode response: %v" ,
217210 sessionNum ,
@@ -588,13 +581,10 @@ func TestSSEServer(t *testing.T) {
588581 defer sseResp .Body .Close ()
589582
590583 // Read the endpoint event
591- buf := make ([]byte , 1024 )
592- n , err := sseResp .Body .Read (buf )
584+ endpointEvent , err := readSeeEvent (sseResp )
593585 if err != nil {
594586 t .Fatalf ("Failed to read SSE response: %v" , err )
595587 }
596-
597- endpointEvent := string (buf [:n ])
598588 messageURL := strings .TrimSpace (
599589 strings .Split (strings .Split (endpointEvent , "data: " )[1 ], "\n " )[0 ],
600590 )
@@ -634,8 +624,16 @@ func TestSSEServer(t *testing.T) {
634624 }
635625
636626 // Verify response
627+ endpointEvent , err = readSeeEvent (sseResp )
628+ if err != nil {
629+ t .Fatalf ("Failed to read SSE response: %v" , err )
630+ }
631+ respFromSee := strings .TrimSpace (
632+ strings .Split (strings .Split (endpointEvent , "data: " )[1 ], "\n " )[0 ],
633+ )
634+
637635 var response map [string ]interface {}
638- if err := json .NewDecoder (resp . Body ).Decode (& response ); err != nil {
636+ if err := json .NewDecoder (strings . NewReader ( respFromSee ) ).Decode (& response ); err != nil {
639637 t .Fatalf ("Failed to decode response: %v" , err )
640638 }
641639
@@ -673,8 +671,17 @@ func TestSSEServer(t *testing.T) {
673671 }
674672 defer resp .Body .Close ()
675673
674+ endpointEvent , err = readSeeEvent (sseResp )
675+ if err != nil {
676+ t .Fatalf ("Failed to read SSE response: %v" , err )
677+ }
678+
679+ respFromSee = strings .TrimSpace (
680+ strings .Split (strings .Split (endpointEvent , "data: " )[1 ], "\n " )[0 ],
681+ )
682+
676683 response = make (map [string ]interface {})
677- if err := json .NewDecoder (resp . Body ).Decode (& response ); err != nil {
684+ if err := json .NewDecoder (strings . NewReader ( respFromSee ) ).Decode (& response ); err != nil {
678685 t .Fatalf ("Failed to decode response: %v" , err )
679686 }
680687
@@ -855,3 +862,12 @@ func TestSSEServer(t *testing.T) {
855862 }
856863 })
857864}
865+
866+ func readSeeEvent (sseResp * http.Response ) (string , error ) {
867+ buf := make ([]byte , 1024 )
868+ n , err := sseResp .Body .Read (buf )
869+ if err != nil {
870+ return "" , err
871+ }
872+ return string (buf [:n ]), nil
873+ }
0 commit comments