File indexing completed on 2025-02-02 04:51:32

0001 /*
0002    SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "starmessagejobtest.h"
0008 #include "chat/starmessagejob.h"
0009 #include "restapimethod.h"
0010 #include <QJsonDocument>
0011 #include <QTest>
0012 QTEST_GUILESS_MAIN(StarMessageJobTest)
0013 using namespace RocketChatRestApi;
0014 StarMessageJobTest::StarMessageJobTest(QObject *parent)
0015     : QObject(parent)
0016 {
0017 }
0018 
0019 void StarMessageJobTest::shouldHaveDefaultValue()
0020 {
0021     StarMessageJob job;
0022     QVERIFY(job.requireHttpAuthentication());
0023     QVERIFY(!job.networkAccessManager());
0024     QVERIFY(!job.restApiMethod());
0025     QVERIFY(!job.start());
0026     QVERIFY(job.authToken().isEmpty());
0027     QVERIFY(job.authCode().isEmpty());
0028     QVERIFY(job.authMethod().isEmpty());
0029     QVERIFY(job.userId().isEmpty());
0030     QVERIFY(job.messageId().isEmpty());
0031     QVERIFY(!job.restApiLogger());
0032     QVERIFY(job.starMessage());
0033     QVERIFY(!job.hasQueryParameterSupport());
0034 }
0035 
0036 void StarMessageJobTest::shouldHaveMessageId()
0037 {
0038     StarMessageJob job;
0039     RestApiMethod method;
0040     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0041     job.setRestApiMethod(&method);
0042     QVERIFY(!job.canStart());
0043     QNetworkAccessManager mNetworkAccessManager;
0044     job.setNetworkAccessManager(&mNetworkAccessManager);
0045     QVERIFY(!job.canStart());
0046     const QString auth = QStringLiteral("foo");
0047     const QString userId = QStringLiteral("foo");
0048     job.setAuthToken(auth);
0049     QVERIFY(!job.canStart());
0050     job.setUserId(userId);
0051     QVERIFY(!job.canStart());
0052     job.setMessageId(QStringLiteral("bla"));
0053     QVERIFY(job.canStart());
0054 }
0055 
0056 void StarMessageJobTest::shouldGenerateStarMessageRequest()
0057 {
0058     StarMessageJob job;
0059     RestApiMethod method;
0060     const QString authToken = QStringLiteral("foo");
0061     const QString userId = QStringLiteral("user");
0062     job.setUserId(userId);
0063     job.setAuthToken(authToken);
0064     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0065     job.setRestApiMethod(&method);
0066     const QString messageId = QStringLiteral("foo");
0067     job.setMessageId(messageId);
0068     const QNetworkRequest request = job.request();
0069     QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/chat.starMessage")));
0070     QCOMPARE(request.attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool(), true);
0071     QCOMPARE(request.attribute(QNetworkRequest::Http2AllowedAttribute).toBool(), true);
0072     QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json"));
0073     QCOMPARE(request.rawHeader(QByteArrayLiteral("X-Auth-Token")), authToken.toLocal8Bit());
0074     QCOMPARE(request.rawHeader(QByteArrayLiteral("X-User-Id")), userId.toLocal8Bit());
0075 }
0076 
0077 void StarMessageJobTest::shouldGenerateUnStarMessageRequest()
0078 {
0079     StarMessageJob job;
0080     job.setStarMessage(false);
0081     RestApiMethod method;
0082     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0083     job.setRestApiMethod(&method);
0084     const QString messageId = QStringLiteral("foo");
0085     job.setMessageId(messageId);
0086     const QNetworkRequest request = job.request();
0087     QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/chat.unStarMessage")));
0088     QCOMPARE(request.attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool(), true);
0089     QCOMPARE(request.attribute(QNetworkRequest::Http2AllowedAttribute).toBool(), true);
0090     QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json"));
0091 }
0092 
0093 void StarMessageJobTest::shouldGenerateJson()
0094 {
0095     StarMessageJob job;
0096     const QString messageId = QStringLiteral("foo1");
0097     job.setMessageId(messageId);
0098     QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral(R"({"messageId":"%1"})").arg(messageId).toLatin1());
0099 }
0100 
0101 #include "moc_starmessagejobtest.cpp"