File indexing completed on 2024-05-19 05:22:18

0001 /*
0002    SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "gravatarresolvurljobtest.h"
0008 #include "../src/job/gravatarresolvurljob.h"
0009 #include "../src/misc/hash.h"
0010 #include <QTest>
0011 
0012 GravatarResolvUrlJobTest::GravatarResolvUrlJobTest(QObject *parent)
0013     : QObject(parent)
0014 {
0015 }
0016 
0017 GravatarResolvUrlJobTest::~GravatarResolvUrlJobTest() = default;
0018 
0019 void GravatarResolvUrlJobTest::shouldHaveDefaultValue()
0020 {
0021     Gravatar::GravatarResolvUrlJob job;
0022     QVERIFY(job.email().isEmpty());
0023     QCOMPARE(job.size(), 80);
0024     QCOMPARE(job.hasGravatar(), false);
0025     QCOMPARE(job.pixmap().isNull(), true);
0026     QCOMPARE(job.useDefaultPixmap(), false);
0027     QCOMPARE(job.useLibravatar(), false);
0028     QCOMPARE(job.fallbackGravatar(), true);
0029 }
0030 
0031 void GravatarResolvUrlJobTest::shouldChangeValue()
0032 {
0033     Gravatar::GravatarResolvUrlJob job;
0034     bool useDefaultPixmap = true;
0035     job.setUseDefaultPixmap(useDefaultPixmap);
0036     QCOMPARE(job.useDefaultPixmap(), useDefaultPixmap);
0037 
0038     useDefaultPixmap = false;
0039     job.setUseDefaultPixmap(useDefaultPixmap);
0040     QCOMPARE(job.useDefaultPixmap(), useDefaultPixmap);
0041 
0042     bool useLibravatar = true;
0043     job.setUseLibravatar(useLibravatar);
0044     QCOMPARE(job.useLibravatar(), useLibravatar);
0045 
0046     useLibravatar = false;
0047     job.setUseLibravatar(useLibravatar);
0048     QCOMPARE(job.useLibravatar(), useLibravatar);
0049 
0050     bool fallBackGravatar = false;
0051     job.setFallbackGravatar(fallBackGravatar);
0052     QCOMPARE(job.fallbackGravatar(), fallBackGravatar);
0053     fallBackGravatar = true;
0054     job.setFallbackGravatar(fallBackGravatar);
0055     QCOMPARE(job.fallbackGravatar(), fallBackGravatar);
0056 }
0057 
0058 void GravatarResolvUrlJobTest::shouldChangeSize()
0059 {
0060     Gravatar::GravatarResolvUrlJob job;
0061     int size = 50;
0062     job.setSize(size);
0063     QCOMPARE(job.size(), size);
0064     size = 0;
0065     job.setSize(size);
0066     QCOMPARE(job.size(), 80);
0067 
0068     size = 10;
0069     job.setSize(size);
0070     QCOMPARE(job.size(), size);
0071 
0072     size = 2048;
0073     job.setSize(size);
0074     QCOMPARE(job.size(), size);
0075 
0076     size = 4096;
0077     job.setSize(size);
0078     QCOMPARE(job.size(), 2048);
0079 }
0080 
0081 void GravatarResolvUrlJobTest::shouldAddSizeInUrl()
0082 {
0083     Gravatar::GravatarResolvUrlJob job;
0084     job.setEmail(QStringLiteral("foo@kde.org"));
0085     job.setSize(1024);
0086     job.setUseLibravatar(false);
0087     QUrl url = job.generateGravatarUrl(job.useLibravatar());
0088     QCOMPARE(url, QUrl(QStringLiteral("https://secure.gravatar.com:/avatar/89b4e14cf2fc6d426275c019c6dc9de6?d=404&s=1024")));
0089     job.setUseLibravatar(true);
0090     url = job.generateGravatarUrl(job.useLibravatar());
0091     QCOMPARE(url, QUrl(QStringLiteral("https://seccdn.libravatar.org:/avatar/89b4e14cf2fc6d426275c019c6dc9de6?d=404&s=1024")));
0092 }
0093 
0094 void GravatarResolvUrlJobTest::shouldUseDefaultPixmap()
0095 {
0096     Gravatar::GravatarResolvUrlJob job;
0097     job.setEmail(QStringLiteral("foo@kde.org"));
0098     job.setSize(1024);
0099     job.setUseDefaultPixmap(true);
0100     QUrl url = job.generateGravatarUrl(job.useLibravatar());
0101     QCOMPARE(url, QUrl(QStringLiteral("https://secure.gravatar.com:/avatar/89b4e14cf2fc6d426275c019c6dc9de6?s=1024")));
0102 }
0103 
0104 void GravatarResolvUrlJobTest::shouldUseHttps()
0105 {
0106     Gravatar::GravatarResolvUrlJob job;
0107     job.setEmail(QStringLiteral("foo@kde.org"));
0108     job.setSize(1024);
0109     job.setUseLibravatar(false);
0110     QUrl url = job.generateGravatarUrl(job.useLibravatar());
0111     QCOMPARE(url, QUrl(QStringLiteral("https://secure.gravatar.com:/avatar/89b4e14cf2fc6d426275c019c6dc9de6?d=404&s=1024")));
0112     job.setUseLibravatar(true);
0113     url = job.generateGravatarUrl(job.useLibravatar());
0114     QCOMPARE(url, QUrl(QStringLiteral("https://seccdn.libravatar.org/avatar/89b4e14cf2fc6d426275c019c6dc9de6?d=404&s=1024")));
0115 }
0116 
0117 void GravatarResolvUrlJobTest::shouldNotStart()
0118 {
0119     Gravatar::GravatarResolvUrlJob job;
0120     QVERIFY(!job.canStart());
0121 
0122     job.setEmail(QStringLiteral("foo"));
0123     QVERIFY(!job.canStart());
0124 
0125     job.setEmail(QStringLiteral(" "));
0126     QVERIFY(!job.canStart());
0127 
0128     job.setEmail(QStringLiteral("foo@kde.org"));
0129     QVERIFY(job.canStart());
0130 }
0131 
0132 void GravatarResolvUrlJobTest::shouldGenerateGravatarUrl_data()
0133 {
0134     QTest::addColumn<QString>("input");
0135     QTest::addColumn<QString>("calculedhash");
0136     QTest::addColumn<QUrl>("output");
0137     QTest::addColumn<bool>("uselibravatar");
0138     QTest::newRow("empty") << QString() << QString() << QUrl() << false;
0139     QTest::newRow("no domain") << QStringLiteral("foo") << QString() << QUrl() << false;
0140     QTest::newRow("validemail") << QStringLiteral("foo@kde.org") << QStringLiteral("89b4e14cf2fc6d426275c019c6dc9de6")
0141                                 << QUrl(QStringLiteral("https://secure.gravatar.com:/avatar/89b4e14cf2fc6d426275c019c6dc9de6?d=404")) << false;
0142     QTest::newRow("validemaillibravatar") << QStringLiteral("foo@kde.org") << QStringLiteral("89b4e14cf2fc6d426275c019c6dc9de6")
0143                                           << QUrl(QStringLiteral("https://seccdn.libravatar.org/avatar/89b4e14cf2fc6d426275c019c6dc9de6?d=404")) << true;
0144 }
0145 
0146 void GravatarResolvUrlJobTest::shouldGenerateGravatarUrl()
0147 {
0148     QFETCH(QString, input);
0149     QFETCH(QString, calculedhash);
0150     QFETCH(QUrl, output);
0151     QFETCH(bool, uselibravatar);
0152     Gravatar::GravatarResolvUrlJob job;
0153     job.setEmail(input);
0154     job.setUseLibravatar(uselibravatar);
0155     QUrl url = job.generateGravatarUrl(job.useLibravatar());
0156     QCOMPARE(calculedhash, job.calculatedHash().hexString());
0157     QCOMPARE(url, output);
0158 }
0159 
0160 QTEST_MAIN(GravatarResolvUrlJobTest)
0161 
0162 #include "moc_gravatarresolvurljobtest.cpp"