File indexing completed on 2024-05-19 04:45:14
0001 /* 0002 SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #include "../src/distributor/serversenteventsstream.h" 0007 0008 #include <QBuffer> 0009 #include <QSignalSpy> 0010 #include <QTest> 0011 0012 using namespace KUnifiedPush; 0013 0014 static void fakeStreamWrite(QBuffer &buffer, const char *data) 0015 { 0016 const auto pos = buffer.pos(); 0017 buffer.write(data); 0018 buffer.seek(pos); 0019 Q_EMIT buffer.readyRead(); 0020 } 0021 0022 class ServerSentEventsStreamTest : public QObject 0023 { 0024 Q_OBJECT 0025 private Q_SLOTS: 0026 void testRead() 0027 { 0028 QBuffer buffer; 0029 buffer.open(QIODevice::ReadWrite); 0030 ServerSentEventsStream stream; 0031 QSignalSpy eventSpy(&stream, &ServerSentEventsStream::messageReceived); 0032 stream.read(&buffer); 0033 0034 fakeStreamWrite(buffer, "event: start\ndata: {\"type\":\"start\"}\n\n"); 0035 QCOMPARE(eventSpy.size(), 1); 0036 auto msg = eventSpy.at(0).at(0).value<SSEMessage>(); 0037 QCOMPARE(msg.event, "start"); 0038 QCOMPARE(msg.data, "{\"type\":\"start\"}"); 0039 eventSpy.clear(); 0040 0041 fakeStreamWrite(buffer, ""); 0042 QCOMPARE(eventSpy.size(), 0); 0043 fakeStreamWrite(buffer, "event: keepalive\r\n"); 0044 QCOMPARE(eventSpy.size(), 0); 0045 fakeStreamWrite(buffer, "data: {\"type\":\"keepalive\",\"keepalive\":300}\r\n\r\n"); 0046 QCOMPARE(eventSpy.size(), 1); 0047 msg = eventSpy.at(0).at(0).value<SSEMessage>(); 0048 QCOMPARE(msg.event, "keepalive"); 0049 QCOMPARE(msg.data, "{\"type\":\"keepalive\",\"keepalive\":300}"); 0050 } 0051 }; 0052 0053 QTEST_GUILESS_MAIN(ServerSentEventsStreamTest) 0054 0055 #include "serversenteventsstreamtest.moc"