22
33package com.browserbase.api.core.handlers
44
5+ import com.browserbase.api.core.JsonValue
56import com.browserbase.api.core.http.Headers
67import com.browserbase.api.core.http.HttpResponse
78import com.browserbase.api.core.http.SseMessage
89import com.browserbase.api.core.jsonMapper
10+ import com.browserbase.api.errors.SseException
911import java.io.InputStream
1012import java.util.stream.Collectors.toList
1113import org.assertj.core.api.Assertions.assertThat
@@ -21,64 +23,105 @@ internal class SseHandlerTest {
2123 internal val expectedMessages : List <SseMessage >? = null ,
2224 internal val expectedException : Exception ? = null ,
2325 ) {
24- DATA_MISSING_EVENT (
26+ EVENT_AND_DATA (
2527 buildString {
28+ append(" event: starting\n " )
2629 append(" data: {\" foo\" :true}\n " )
2730 append(" \n " )
2831 },
29- listOf (sseMessageBuilder().data(" {\" foo\" :true}" ).build()),
32+ listOf (sseMessageBuilder().event( " starting " ). data(" {\" foo\" :true}" ).build()),
3033 ),
31- MULTIPLE_DATA_MISSING_EVENT (
34+ EVENT_MISSING_DATA (
3235 buildString {
36+ append(" event: starting\n " )
37+ append(" \n " )
38+ },
39+ listOf (sseMessageBuilder().event(" starting" ).build()),
40+ ),
41+ MULTIPLE_EVENTS_AND_DATA (
42+ buildString {
43+ append(" event: starting\n " )
3344 append(" data: {\" foo\" :true}\n " )
3445 append(" \n " )
46+ append(" event: connected\n " )
3547 append(" data: {\" bar\" :false}\n " )
3648 append(" \n " )
3749 },
3850 listOf (
39- sseMessageBuilder().data(" {\" foo\" :true}" ).build(),
40- sseMessageBuilder().data(" {\" bar\" :false}" ).build(),
51+ sseMessageBuilder().event(" starting" ).data(" {\" foo\" :true}" ).build(),
52+ sseMessageBuilder().event(" connected" ).data(" {\" bar\" :false}" ).build(),
53+ ),
54+ ),
55+ MULTIPLE_EVENTS_MISSING_DATA (
56+ buildString {
57+ append(" event: starting\n " )
58+ append(" \n " )
59+ append(" event: connected\n " )
60+ append(" \n " )
61+ },
62+ listOf (
63+ sseMessageBuilder().event(" starting" ).build(),
64+ sseMessageBuilder().event(" connected" ).build(),
4165 ),
4266 ),
4367 DATA_JSON_ESCAPED_DOUBLE_NEW_LINE (
4468 buildString {
69+ append(" event: starting\n " )
4570 append(" data: {\n " )
4671 append(" data: \" foo\" :\n " )
4772 append(" data: true}\n " )
4873 append(" \n\n " )
4974 },
50- listOf (sseMessageBuilder().data(" {\n\" foo\" :\n true}" ).build()),
75+ listOf (sseMessageBuilder().event( " starting " ). data(" {\n\" foo\" :\n true}" ).build()),
5176 ),
5277 MULTIPLE_DATA_LINES (
5378 buildString {
79+ append(" event: starting\n " )
5480 append(" data: {\n " )
5581 append(" data: \" foo\" :\n " )
5682 append(" data: true}\n " )
5783 append(" \n\n " )
5884 },
59- listOf (sseMessageBuilder().data(" {\n\" foo\" :\n true}" ).build()),
85+ listOf (sseMessageBuilder().event( " starting " ). data(" {\n\" foo\" :\n true}" ).build()),
6086 ),
6187 SPECIAL_NEW_LINE_CHARACTER (
6288 buildString {
89+ append(" event: starting\n " )
6390 append(" data: {\" content\" :\" culpa\" }\n " )
6491 append(" \n " )
92+ append(" event: connected\n " )
6593 append(" data: {\" content\" :\" \u2028 \" }\n " )
6694 append(" \n " )
95+ append(" event: starting\n " )
6796 append(" data: {\" content\" :\" foo\" }\n " )
6897 append(" \n " )
6998 },
7099 listOf (
71- sseMessageBuilder().data(" {\" content\" :\" culpa\" }" ).build(),
72- sseMessageBuilder().data(" {\" content\" :\" \u2028 \" }" ).build(),
73- sseMessageBuilder().data(" {\" content\" :\" foo\" }" ).build(),
100+ sseMessageBuilder().event( " starting " ). data(" {\" content\" :\" culpa\" }" ).build(),
101+ sseMessageBuilder().event( " connected " ). data(" {\" content\" :\" \u2028 \" }" ).build(),
102+ sseMessageBuilder().event( " starting " ). data(" {\" content\" :\" foo\" }" ).build(),
74103 ),
75104 ),
76105 MULTI_BYTE_CHARACTER (
77106 buildString {
107+ append(" event: starting\n " )
78108 append(" data: {\" content\" :\" \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0438 \" }\n " )
79109 append(" \n " )
80110 },
81- listOf (sseMessageBuilder().data(" {\" content\" :\" известни\" }" ).build()),
111+ listOf (sseMessageBuilder().event(" starting" ).data(" {\" content\" :\" известни\" }" ).build()),
112+ ),
113+ ERROR_EVENT (
114+ buildString {
115+ append(" event: error\n " )
116+ append(" data: {\" errorProperty\" :\" 42\" }\n " )
117+ append(" \n " )
118+ },
119+ expectedException =
120+ SseException .builder()
121+ .statusCode(0 )
122+ .headers(Headers .builder().build())
123+ .body(JsonValue .from(mapOf (" errorProperty" to " 42" )))
124+ .build(),
82125 ),
83126 }
84127
0 commit comments