1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
/*
SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "../src/distributor/serversenteventsstream.h"
#include <QBuffer>
#include <QSignalSpy>
#include <QTest>
using namespace KUnifiedPush;
static void fakeStreamWrite(QBuffer &buffer, const char *data)
{
const auto pos = buffer.pos();
buffer.write(data);
buffer.seek(pos);
Q_EMIT buffer.readyRead();
}
class ServerSentEventsStreamTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void testRead()
{
QBuffer buffer;
buffer.open(QIODevice::ReadWrite);
ServerSentEventsStream stream;
QSignalSpy eventSpy(&stream, &ServerSentEventsStream::messageReceived);
stream.read(&buffer);
fakeStreamWrite(buffer, "event: start\ndata: {\"type\":\"start\"}\n\n");
QVERIFY(eventSpy.wait());
QCOMPARE(eventSpy.size(), 1);
auto msg = eventSpy.at(0).at(0).value<SSEMessage>();
QCOMPARE(msg.event, "start");
QCOMPARE(msg.data, "{\"type\":\"start\"}");
eventSpy.clear();
fakeStreamWrite(buffer, "");
QCOMPARE(eventSpy.size(), 0);
fakeStreamWrite(buffer, "event: keepalive\r\n");
QCOMPARE(eventSpy.size(), 0);
fakeStreamWrite(buffer, "data: {\"type\":\"keepalive\",\"keepalive\":300}\r\n\r\n");
QVERIFY(eventSpy.wait());
QCOMPARE(eventSpy.size(), 1);
msg = eventSpy.at(0).at(0).value<SSEMessage>();
QCOMPARE(msg.event, "keepalive");
QCOMPARE(msg.data, "{\"type\":\"keepalive\",\"keepalive\":300}");
}
};
QTEST_GUILESS_MAIN(ServerSentEventsStreamTest)
#include "serversenteventsstreamtest.moc"
|