Skip to content

Commit 5a75f95

Browse files
committed
Added test case for Windows EOL that is cut off just before the last byte, making the first byte of the next message be a new line.
1 parent dcd4770 commit 5a75f95

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

tests/EventSourceTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,35 @@ public function testSplitMessagesWithWindowsEndOfLineSequence()
656656
}
657657
}
658658

659+
public function testSplitMessagesWithBufferedWindowsEndOfLineSequence()
660+
{
661+
$deferred = new Deferred();
662+
$browser = $this->getMockBuilder('React\Http\Browser')->disableOriginalConstructor()->getMock();
663+
$browser->expects($this->once())->method('withRejectErrorResponse')->willReturnSelf();
664+
$browser->expects($this->once())->method('requestStreaming')->willReturn($deferred->promise());
665+
666+
$es = new EventSource('http://example.com', $browser);
667+
668+
$stream = new ThroughStream();
669+
$response = new Response(200, array('Content-Type' => 'text/event-stream'), new ReadableBodyStream($stream));
670+
$deferred->resolve($response);
671+
672+
$messages = [];
673+
$es->on('message', function ($m) use (&$messages) {
674+
$messages[] = $m;
675+
});
676+
677+
$stream->write("data:hello\r\n\r");
678+
$stream->write("\ndata:hi\r\n\r\n");
679+
680+
$expected = ['hello', 'hi'];
681+
$this->assertCount(count($expected), $messages);
682+
foreach ($messages as $i => $message) {
683+
$this->assertInstanceOf('Clue\React\EventSource\MessageEvent', $message);
684+
$this->assertEquals($expected[$i], $message->data);
685+
}
686+
}
687+
659688
public function testSplitMessagesWithMixedEndOfLine()
660689
{
661690
$deferred = new Deferred();

0 commit comments

Comments
 (0)