// SPDX-FileCopyrightText: 2019 Linus Jahn // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppHttpUploadIq.h" #include "util.h" #include class tst_QXmppHttpUploadIq : public QObject { Q_OBJECT private: Q_SLOT void testRequest(); Q_SLOT void testIsRequest_data(); Q_SLOT void testIsRequest(); Q_SLOT void testSlot(); Q_SLOT void testIsSlot_data(); Q_SLOT void testIsSlot(); }; void tst_QXmppHttpUploadIq::testRequest() { const QByteArray xml( "" "" ""); QXmppHttpUploadRequestIq iq; parsePacket(iq, xml); QCOMPARE(iq.fileName(), QString("très cool.jpg")); QCOMPARE(iq.size(), 23456); QCOMPARE(iq.contentType().name(), QString("image/jpeg")); serializePacket(iq, xml); // test setters iq.setFileName("icon.png"); QCOMPARE(iq.fileName(), QString("icon.png")); iq.setSize(23421337); QCOMPARE(iq.size(), 23421337); iq.setContentType(QMimeDatabase().mimeTypeForName("image/png")); QCOMPARE(iq.contentType().name(), QString("image/png")); } void tst_QXmppHttpUploadIq::testIsRequest_data() { QTest::addColumn("xml"); QTest::addColumn("isRequest"); QTest::newRow("wrong-stanza") << QByteArray("") << false; QTest::newRow("empty-iq") << QByteArray("") << false; QTest::newRow("wrong-ns") << QByteArray("") << false; QTest::newRow("correct") << QByteArray("") << true; } void tst_QXmppHttpUploadIq::testIsRequest() { QFETCH(QByteArray, xml); QFETCH(bool, isRequest); QDomDocument doc; QVERIFY(doc.setContent(xml, true)); QCOMPARE(QXmppHttpUploadRequestIq::isHttpUploadRequestIq(doc.documentElement()), isRequest); } void tst_QXmppHttpUploadIq::testSlot() { const QByteArray xml( "" "" "" "
Basic Base64String==
" "
foo=bar; user=romeo
" "
" "" "
" "
"); QXmppHttpUploadSlotIq iq; parsePacket(iq, xml); QCOMPARE(iq.putUrl(), QUrl("https://upload.montague.tld/4a771ac1-f0b2-4a4a" "-9700-f2a26fa2bb67/tr%C3%A8s%20cool.jpg")); QCOMPARE(iq.getUrl(), QUrl("https://download.montague.tld/4a771ac1-f0b2-4a" "4a-9700-f2a26fa2bb67/tr%C3%A8s%20cool.jpg")); QMap headers; headers["Authorization"] = "Basic Base64String=="; headers["Cookie"] = "foo=bar; user=romeo"; QCOMPARE(iq.putHeaders(), headers); serializePacket(iq, xml); // test setters iq.setGetUrl(QUrl("https://dl.example.org/user/file")); QCOMPARE(iq.getUrl(), QUrl("https://dl.example.org/user/file")); iq.setPutUrl(QUrl("https://ul.example.org/user/file")); QCOMPARE(iq.putUrl(), QUrl("https://ul.example.org/user/file")); QMap emptyMap; iq.setPutHeaders(emptyMap); QCOMPARE(iq.putHeaders(), emptyMap); } void tst_QXmppHttpUploadIq::testIsSlot_data() { QTest::addColumn("xml"); QTest::addColumn("isSlot"); QTest::newRow("wrong-stanza") << QByteArray("") << false; QTest::newRow("empty-iq") << QByteArray("") << false; QTest::newRow("wrong-ns") << QByteArray("") << false; QTest::newRow("correct") << QByteArray("") << true; } void tst_QXmppHttpUploadIq::testIsSlot() { QFETCH(QByteArray, xml); QFETCH(bool, isSlot); QDomDocument doc; QVERIFY(doc.setContent(xml, true)); QCOMPARE(QXmppHttpUploadSlotIq::isHttpUploadSlotIq(doc.documentElement()), isSlot); } QTEST_MAIN(tst_QXmppHttpUploadIq) #include "tst_qxmpphttpuploadiq.moc"