diff --git a/autotests/channellistjobtest.cpp b/autotests/channellistjobtest.cpp index 2dcc1a1e..7e077629 100644 --- a/autotests/channellistjobtest.cpp +++ b/autotests/channellistjobtest.cpp @@ -1,42 +1,64 @@ /* Copyright (c) 2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License or ( at your option ) version 3 or, at the discretion of KDE e.V. ( which shall act as a proxy as in section 14 of the GPLv3 ), any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "channellistjobtest.h" #include "restapi/channellistjob.h" #include + +#include QTEST_GUILESS_MAIN(ChannelListJobTest) ChannelListJobTest::ChannelListJobTest(QObject *parent) : QObject(parent) { } void ChannelListJobTest::shouldHaveDefaultValue() { ChannelListJob job; QVERIFY(!job.restApiMethod()); QVERIFY(!job.networkAccessManager()); QVERIFY(!job.start()); QVERIFY(job.requireHttpAuthentication()); QVERIFY(job.authToken().isEmpty()); QVERIFY(job.userId().isEmpty()); QVERIFY(!job.ruqolaLogger()); } + +void ChannelListJobTest::shouldGenerateRequest() +{ + ChannelListJob job; + RestApiMethod *method = new RestApiMethod; + const QString authToken = QStringLiteral("foo"); + const QString userId = QStringLiteral("user"); + job.setUserId(userId); + job.setAuthToken(authToken); + + method->setServerUrl(QStringLiteral("http://www.kde.org")); + job.setRestApiMethod(method); + const QNetworkRequest request = job.request(); + QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/channels.list"))); + QCOMPARE(request.rawHeader(QByteArrayLiteral("X-Auth-Token")), authToken.toLocal8Bit()); + QCOMPARE(request.rawHeader(QByteArrayLiteral("X-User-Id")), userId.toLocal8Bit()); + + delete method; +} + diff --git a/autotests/channellistjobtest.h b/autotests/channellistjobtest.h index c5632092..4edbf0bd 100644 --- a/autotests/channellistjobtest.h +++ b/autotests/channellistjobtest.h @@ -1,37 +1,38 @@ /* Copyright (c) 2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License or ( at your option ) version 3 or, at the discretion of KDE e.V. ( which shall act as a proxy as in section 14 of the GPLv3 ), any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef CHANNELLISTJOBTEST_H #define CHANNELLISTJOBTEST_H #include class ChannelListJobTest : public QObject { Q_OBJECT public: explicit ChannelListJobTest(QObject *parent = nullptr); ~ChannelListJobTest() = default; private Q_SLOTS: void shouldHaveDefaultValue(); + void shouldGenerateRequest(); }; #endif // CHANNELLISTJOBTEST_H diff --git a/autotests/starmessagejobtest.cpp b/autotests/starmessagejobtest.cpp index ad79774e..29588e07 100644 --- a/autotests/starmessagejobtest.cpp +++ b/autotests/starmessagejobtest.cpp @@ -1,110 +1,116 @@ /* Copyright (c) 2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License or ( at your option ) version 3 or, at the discretion of KDE e.V. ( which shall act as a proxy as in section 14 of the GPLv3 ), any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "starmessagejobtest.h" #include "restapi/starmessagejob.h" #include #include #include QTEST_GUILESS_MAIN(StarMessageJobTest) StarMessageJobTest::StarMessageJobTest(QObject *parent) : QObject(parent) { } void StarMessageJobTest::shouldHaveDefaultValue() { StarMessageJob job; QVERIFY(job.requireHttpAuthentication()); QVERIFY(!job.networkAccessManager()); QVERIFY(!job.restApiMethod()); QVERIFY(!job.start()); QVERIFY(job.authToken().isEmpty()); QVERIFY(job.userId().isEmpty()); QVERIFY(job.messageId().isEmpty()); QVERIFY(!job.ruqolaLogger()); QVERIFY(job.starMessage()); } void StarMessageJobTest::shouldHaveMessageId() { StarMessageJob job; RestApiMethod *method = new RestApiMethod; method->setServerUrl(QStringLiteral("http://www.kde.org")); job.setRestApiMethod(method); QVERIFY(!job.canStart()); QNetworkAccessManager *mNetworkAccessManager = new QNetworkAccessManager; job.setNetworkAccessManager(mNetworkAccessManager); QVERIFY(!job.canStart()); const QString auth = QStringLiteral("foo"); const QString userId = QStringLiteral("foo"); job.setAuthToken(auth); QVERIFY(!job.canStart()); job.setUserId(userId); QVERIFY(!job.canStart()); job.setMessageId(QStringLiteral("bla")); QVERIFY(job.canStart()); delete method; delete mNetworkAccessManager; } void StarMessageJobTest::shouldGenerateStarMessageRequest() { StarMessageJob job; RestApiMethod *method = new RestApiMethod; + const QString authToken = QStringLiteral("foo"); + const QString userId = QStringLiteral("user"); + job.setUserId(userId); + job.setAuthToken(authToken); method->setServerUrl(QStringLiteral("http://www.kde.org")); job.setRestApiMethod(method); const QString messageId = QStringLiteral("foo"); job.setMessageId(messageId); const QNetworkRequest request = job.request(); QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/chat.starMessage"))); QCOMPARE(request.attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool(), true); QCOMPARE(request.attribute(QNetworkRequest::HTTP2AllowedAttribute).toBool(), true); QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json")); + QCOMPARE(request.rawHeader(QByteArrayLiteral("X-Auth-Token")), authToken.toLocal8Bit()); + QCOMPARE(request.rawHeader(QByteArrayLiteral("X-User-Id")), userId.toLocal8Bit()); delete method; } void StarMessageJobTest::shouldGenerateUnStarMessageRequest() { StarMessageJob job; job.setStarMessage(false); RestApiMethod *method = new RestApiMethod; method->setServerUrl(QStringLiteral("http://www.kde.org")); job.setRestApiMethod(method); const QString messageId = QStringLiteral("foo"); job.setMessageId(messageId); const QNetworkRequest request = job.request(); QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/chat.unStarMessage"))); QCOMPARE(request.attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool(), true); QCOMPARE(request.attribute(QNetworkRequest::HTTP2AllowedAttribute).toBool(), true); QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json")); delete method; } void StarMessageJobTest::shouldGenerateJson() { StarMessageJob job; const QString messageId = QStringLiteral("foo1"); job.setMessageId(messageId); QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral("{\"messageId\":\"%1\"}").arg(messageId).toLatin1()); }