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 ErrorTest : public QObject
0014 {
0015     Q_OBJECT
0016 private Q_SLOTS:
0017     void testGet();
0018     void testGet_data();
0019 
0020     void testPut();
0021     void testPut_data();
0022 };
0023 
0024 void ErrorTest::testGet_data()
0025 {
0026     QTest::addColumn<QString>("url");
0027     QTest::addColumn<int>("expectedError");
0028 
0029     QTest::addRow("noerror") << "http://localhost:5000/error/no" << (int)KJob::NoError;
0030     QTest::addRow("404") << "http://localhost:5000/error/404" << (int)KIO::ERR_DOES_NOT_EXIST;
0031     QTest::addRow("400") << "http://localhost:5000/error/400" << (int)KIO::ERR_DOES_NOT_EXIST;
0032     QTest::addRow("403") << "http://localhost:5000/error/403" << (int)KIO::ERR_DOES_NOT_EXIST;
0033     QTest::addRow("451") << "http://localhost:5000/error/451" << (int)KIO::ERR_DOES_NOT_EXIST;
0034     QTest::addRow("500") << "http://localhost:5000/error/500" << (int)KIO::ERR_INTERNAL_SERVER;
0035     QTest::addRow("502") << "http://localhost:5000/error/502" << (int)KIO::ERR_INTERNAL_SERVER;
0036     QTest::addRow("507") << "http://localhost:5000/error/507" << (int)KIO::ERR_INTERNAL_SERVER;
0037 }
0038 
0039 void ErrorTest::testGet()
0040 {
0041     QFETCH(QString, url);
0042     QFETCH(int, expectedError);
0043 
0044     auto *job = KIO::get(QUrl(url));
0045 
0046     QSignalSpy dataSpy(job, &KIO::TransferJob::data);
0047     QSignalSpy spy(job, &KJob::finished);
0048     spy.wait();
0049     QVERIFY(spy.size());
0050 
0051     QCOMPARE(job->error(), expectedError);
0052 }
0053 
0054 void ErrorTest::testPut_data()
0055 {
0056     QTest::addColumn<QString>("url");
0057     QTest::addColumn<int>("expectedError");
0058 
0059     QTest::addRow("noerror") << "http://localhost:5000/error/no" << (int)KJob::NoError;
0060     QTest::addRow("404") << "http://localhost:5000/error/404" << (int)KIO::ERR_DOES_NOT_EXIST;
0061     QTest::addRow("400") << "http://localhost:5000/error/400" << (int)KIO::ERR_DOES_NOT_EXIST;
0062     QTest::addRow("403") << "http://localhost:5000/error/403" << (int)KIO::ERR_DOES_NOT_EXIST;
0063     QTest::addRow("405") << "http://localhost:5000/error/405" << (int)KIO::ERR_DOES_NOT_EXIST;
0064     QTest::addRow("451") << "http://localhost:5000/error/451" << (int)KIO::ERR_DOES_NOT_EXIST;
0065     QTest::addRow("500") << "http://localhost:5000/error/500" << (int)KIO::ERR_INTERNAL_SERVER;
0066     QTest::addRow("502") << "http://localhost:5000/error/502" << (int)KIO::ERR_INTERNAL_SERVER;
0067     QTest::addRow("507") << "http://localhost:5000/error/507" << (int)KIO::ERR_INTERNAL_SERVER;
0068 }
0069 
0070 void ErrorTest::testPut()
0071 {
0072     QFETCH(QString, url);
0073     QFETCH(int, expectedError);
0074 
0075     auto *job = KIO::put(QUrl(url), -1);
0076 
0077     QSignalSpy dataSpy(job, &KIO::TransferJob::data);
0078     QSignalSpy spy(job, &KJob::finished);
0079     spy.wait();
0080     QVERIFY(spy.size());
0081 
0082     QCOMPARE(job->error(), expectedError);
0083 }
0084 
0085 QTEST_GUILESS_MAIN(ErrorTest)
0086 
0087 #include "errortest.moc"