@@ -56,6 +56,13 @@ public function testParseDataWithCarrigeReturnAndNewlineOverTwoLines()
56
56
$ this ->assertEquals ("hello \n" , $ message ->data );
57
57
}
58
58
59
+ public function testParseDataWithNonUtf8AndNullBytesReturnsDataWithUnicodeReplacement ()
60
+ {
61
+ $ message = MessageEvent::parse ("data: h \x00ll \xFF! " , '' );
62
+
63
+ $ this ->assertEquals ("h \x00ll�! " , $ message ->data );
64
+ }
65
+
59
66
public function testParseReturnsMessageWithIdFromStream ()
60
67
{
61
68
$ message = MessageEvent::parse ("data: hello \r\nid: 1 " , '' );
@@ -88,6 +95,22 @@ public function testParseWithMultipleIdsReturnsMessageWithLastEventIdFromStream(
88
95
$ this ->assertEquals ('2 ' , $ message ->lastEventId );
89
96
}
90
97
98
+ public function testParseWithIdWithNonUtf8BytesReturnsMessageWithLastEventIdFromStreamWithUnicodeReplacement ()
99
+ {
100
+ $ message = MessageEvent::parse ("data: hello \nid: h \xFFllo! " , '' );
101
+
102
+ $ this ->assertEquals ("hello " , $ message ->data );
103
+ $ this ->assertEquals ("h�llo! " , $ message ->lastEventId );
104
+ }
105
+
106
+ public function testParseWithIdWithNullByteReturnsMessageWithLastEventIdFromLastEventId ()
107
+ {
108
+ $ message = MessageEvent::parse ("data: hello \nid: h \x00llo! " , '1 ' );
109
+
110
+ $ this ->assertEquals ("hello " , $ message ->data );
111
+ $ this ->assertEquals ('1 ' , $ message ->lastEventId );
112
+ }
113
+
91
114
public function testParseReturnsMessageWithTypeFromStream ()
92
115
{
93
116
$ message = MessageEvent::parse ("data: hello \r\nevent: join " , '' );
@@ -120,6 +143,14 @@ public function testParseWithEmptyEventReturnsMessageWithDefaultMessageType()
120
143
$ this ->assertEquals ('message ' , $ message ->type );
121
144
}
122
145
146
+ public function testParseWithEventTypeWithNonUtf8AndNullBytesReturnsTypeWithUnicodeReplacement ()
147
+ {
148
+ $ message = MessageEvent::parse ("data: hello \nevent: h \x00ll \xFF! " , '' );
149
+
150
+ $ this ->assertEquals ("hello " , $ message ->data );
151
+ $ this ->assertEquals ("h \x00ll�! " , $ message ->type );
152
+ }
153
+
123
154
public function retryTimeDataProvider ()
124
155
{
125
156
return [
0 commit comments