File indexing completed on 2024-04-28 03:54:48

0001 /*
0002 
0003     SPDX-FileCopyrightText: 2023 Nicolas Fella <nicolas.fella@gmx.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include <KIO/TransferJob>
0009 
0010 #include <QSignalSpy>
0011 #include <QTest>
0012 
0013 class PutTest : public QObject
0014 {
0015     Q_OBJECT
0016 private Q_SLOTS:
0017     void testGet();
0018     void testGet_data();
0019 };
0020 
0021 void PutTest::testGet_data()
0022 {
0023     QTest::addColumn<QString>("url");
0024     QTest::addColumn<QByteArray>("inputData");
0025 
0026     QTest::addRow("put") << "http://localhost:5000/put/bla" << QByteArray("<p>Hello, World!</p>");
0027 }
0028 
0029 void PutTest::testGet()
0030 {
0031     QFETCH(QString, url);
0032     QFETCH(QByteArray, inputData);
0033 
0034     auto *job = KIO::put(QUrl(url), -1);
0035     job->addMetaData("content-type", "text/html");
0036 
0037     int dataReqCounter = 0;
0038     connect(job, &KIO::TransferJob::dataReq, this, [inputData, &dataReqCounter](KJob * /*job*/, QByteArray &data) {
0039         if (dataReqCounter < 3) {
0040             data = inputData;
0041         }
0042         dataReqCounter++;
0043     });
0044 
0045     QSignalSpy dataSpy(job, &KIO::TransferJob::data);
0046     QSignalSpy spy(job, &KJob::finished);
0047     spy.wait();
0048     QVERIFY(spy.size());
0049     QCOMPARE(dataReqCounter, 4);
0050 
0051     QVERIFY(dataSpy.count());
0052     const QByteArray actualData = dataSpy.first().at(1).toByteArray();
0053     QCOMPARE(actualData, inputData + inputData + inputData);
0054 
0055     QCOMPARE(job->error(), KJob::NoError);
0056 }
0057 
0058 QTEST_GUILESS_MAIN(PutTest)
0059 
0060 #include "puttest.moc"