File indexing completed on 2025-01-12 07:36:05
0001 /* 0002 SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "usertest.h" 0008 #include "ruqola_autotest_helper.h" 0009 #include "user.h" 0010 0011 #include <QJsonObject> 0012 0013 QTEST_GUILESS_MAIN(UserTest) 0014 0015 UserTest::UserTest(QObject *parent) 0016 : QObject(parent) 0017 { 0018 } 0019 0020 void UserTest::shouldHaveDefaultValue() 0021 { 0022 User u; 0023 QVERIFY(u.name().isEmpty()); 0024 QVERIFY(u.userId().isEmpty()); 0025 QCOMPARE(u.status(), User::PresenceStatus::PresenceOffline); 0026 QVERIFY(u.userName().isEmpty()); 0027 QVERIFY(!u.isValid()); 0028 QVERIFY(u.roles().isEmpty()); 0029 QVERIFY(!u.userEmailsInfo().isValid()); 0030 QVERIFY(!u.createdAt().isValid()); 0031 QVERIFY(!u.lastLogin().isValid()); 0032 QVERIFY(u.i18nRoles().isEmpty()); 0033 QVERIFY(u.active()); 0034 QVERIFY(u.bio().isEmpty()); 0035 QVERIFY(u.nickName().isEmpty()); 0036 } 0037 0038 void UserTest::shouldBeValid() 0039 { 0040 User u; 0041 0042 u.setName(QStringLiteral("foo")); 0043 QVERIFY(u.isValid()); 0044 0045 User u2; 0046 u2.setUserId(QStringLiteral("bla")); 0047 QVERIFY(!u2.isValid()); 0048 0049 User u3; 0050 u3.setUserName(QStringLiteral("dd")); 0051 QVERIFY(u3.isValid()); 0052 0053 User u4; 0054 u4.setUserId(QStringLiteral("d")); 0055 u4.setUserName(QStringLiteral("dd")); 0056 u4.setName(QStringLiteral("foo")); 0057 QVERIFY(u4.isValid()); 0058 } 0059 0060 void UserTest::shouldSetAndGetName() 0061 { 0062 User sampleUser; 0063 QString name = QStringLiteral("Maxwell"); 0064 sampleUser.setName(name); 0065 0066 QCOMPARE(sampleUser.name(), name); 0067 0068 name = QStringLiteral("Maxwell_NEW"); 0069 sampleUser.setName(name); 0070 QCOMPARE(sampleUser.name(), name); 0071 0072 name = QStringLiteral("Maxwell_NEW"); 0073 sampleUser.setName(name); 0074 QCOMPARE(sampleUser.name(), name); 0075 } 0076 0077 void UserTest::shouldSetAndGetUserId() 0078 { 0079 User sampleUser; 0080 QString Id = QStringLiteral("RA1511ECE"); 0081 sampleUser.setUserId(Id); 0082 0083 QCOMPARE(sampleUser.userId(), Id); 0084 0085 Id = QStringLiteral("RA1511ECE_NEW"); 0086 sampleUser.setUserId(Id); 0087 QCOMPARE(sampleUser.userId(), Id); 0088 0089 Id = QStringLiteral("RA1511ECE_NEW"); 0090 sampleUser.setUserId(Id); 0091 QCOMPARE(sampleUser.userId(), Id); 0092 } 0093 0094 void UserTest::shouldSetAndGetStatus() 0095 { 0096 User sampleUser; 0097 0098 sampleUser.setStatus(User::PresenceStatus::PresenceOffline); 0099 0100 QCOMPARE(sampleUser.status(), User::PresenceStatus::PresenceOffline); 0101 0102 sampleUser.setStatus(User::PresenceStatus::PresenceOnline); 0103 QCOMPARE(sampleUser.status(), User::PresenceStatus::PresenceOnline); 0104 0105 sampleUser.setStatus(User::PresenceStatus::PresenceOnline); 0106 QCOMPARE(sampleUser.status(), User::PresenceStatus::PresenceOnline); 0107 } 0108 0109 void UserTest::shouldParseUser() 0110 { 0111 User sampleUser; 0112 QJsonObject object; 0113 QJsonObject fields; 0114 const QString name = QStringLiteral("Newton"); 0115 const QString status = QStringLiteral("offline"); 0116 fields.insert(QStringLiteral("name"), QJsonValue(name)); 0117 fields.insert(QStringLiteral("status"), QJsonValue(status)); 0118 object.insert(QStringLiteral("id"), QJsonValue(QLatin1String("RA151100ECE"))); 0119 object.insert(QStringLiteral("fields"), fields); 0120 0121 sampleUser.parseUser(object); 0122 QCOMPARE(sampleUser.name(), name); 0123 QCOMPARE(sampleUser.status(), User::PresenceStatus::PresenceOffline); 0124 } 0125 0126 void UserTest::checkEqualsAndUnequalsOperator() 0127 { 0128 User sampleuser; 0129 User sampleuserOther; 0130 QString Id = QStringLiteral("RA151100ECE"); 0131 QString name = QStringLiteral("Robert Segwick"); 0132 0133 sampleuser.setUserId(Id); 0134 sampleuser.setName(name); 0135 sampleuser.setStatus(User::PresenceStatus::PresenceOffline); 0136 QVERIFY(sampleuser != sampleuserOther); 0137 0138 sampleuserOther.setUserId(Id); 0139 sampleuserOther.setName(name); 0140 sampleuserOther.setStatus(User::PresenceStatus::PresenceOffline); 0141 QVERIFY(sampleuser == sampleuserOther); 0142 0143 sampleuserOther.setName(QStringLiteral("Robert Segwick_NEW")); 0144 QVERIFY(sampleuser != sampleuserOther); 0145 } 0146 0147 void UserTest::shouldParseJson_data() 0148 { 0149 QTest::addColumn<QString>("fileName"); 0150 QTest::addColumn<User>("expectedUser"); 0151 User expected; 0152 expected.setName(QStringLiteral("Laurent M")); 0153 expected.setStatus(User::PresenceStatus::PresenceAway); 0154 expected.setUserId(QStringLiteral("yi2ucvqkdkxiTkyZ5")); 0155 expected.setUserName(QStringLiteral("laurent")); 0156 expected.setUtcOffset(1); 0157 QTest::newRow("user1") << QStringLiteral("adduser") << expected; 0158 } 0159 0160 void UserTest::shouldParseJson() 0161 { 0162 QFETCH(QString, fileName); 0163 QFETCH(User, expectedUser); 0164 const QString originalJsonFile = QLatin1String(RUQOLA_DATA_DIR) + QLatin1String("/json/") + fileName + QLatin1String(".json"); 0165 const QJsonObject fields = AutoTestHelper::loadJsonObject(originalJsonFile); 0166 User user; 0167 user.parseUser(fields); 0168 const bool equal = (user == expectedUser); 0169 if (!equal) { 0170 qDebug() << " current value " << user; 0171 qDebug() << " expected value " << expectedUser; 0172 } 0173 QVERIFY(equal); 0174 } 0175 0176 void UserTest::shouldParseRestApiJson_data() 0177 { 0178 QTest::addColumn<QString>("fileName"); 0179 QTest::addColumn<User>("expectedUser"); 0180 { 0181 User expected; 0182 expected.setName(QStringLiteral("name_user")); 0183 expected.setStatus(User::PresenceStatus::PresenceOffline); 0184 expected.setUserId(QStringLiteral("BDFj6E7Z9RYucn8C")); 0185 expected.setUserName(QStringLiteral("username")); 0186 expected.setUtcOffset(0); 0187 expected.setRoles({QStringLiteral("user")}, {}); 0188 QDateTime createdTime; 0189 createdTime.setDate(QDate(2020, 10, 05)); 0190 createdTime.setTime(QTime(00, 48, 01, 903)); 0191 expected.setCreatedAt(createdTime); 0192 expected.setLastLogin(QDateTime()); 0193 QTest::newRow("userrestapi1") << QStringLiteral("userrestapi") << expected; 0194 } 0195 { 0196 User expected; 0197 expected.setName(QStringLiteral("Bla bla")); 0198 expected.setStatus(User::PresenceStatus::PresenceOnline); 0199 expected.setUserId(QStringLiteral("XQZAk3998f9hSNwh")); 0200 expected.setUserName(QStringLiteral("steffen")); 0201 expected.setUtcOffset(2); 0202 expected.setRoles({QStringLiteral("user"), QStringLiteral("admin")}, {}); 0203 QDateTime createdTime; 0204 createdTime.setDate(QDate(2018, 01, 18)); 0205 createdTime.setTime(QTime(12, 52, 50, 772)); 0206 expected.setCreatedAt(createdTime); 0207 QDateTime lastLogin; 0208 lastLogin.setDate(QDate(2020, 10, 12)); 0209 lastLogin.setTime(QTime(02, 26, 27, 324)); 0210 expected.setLastLogin(lastLogin); 0211 User::UserEmailsInfo info; 0212 info.email = QStringLiteral("bla@kde.com"); 0213 info.verified = true; 0214 expected.setUserEmailsInfo(info); 0215 expected.setNickName(QStringLiteral("TheReal")); 0216 QTest::newRow("userrestapi2") << QStringLiteral("userrestapi2") << expected; 0217 } 0218 } 0219 0220 void UserTest::shouldParseRestApiJson() 0221 { 0222 QFETCH(QString, fileName); 0223 QFETCH(User, expectedUser); 0224 const QString originalJsonFile = QLatin1String(RUQOLA_DATA_DIR) + QLatin1String("/json/") + fileName + QLatin1String(".json"); 0225 const QJsonObject fields = AutoTestHelper::loadJsonObject(originalJsonFile); 0226 User user; 0227 user.parseUserRestApi(fields, {}); 0228 const bool equal = (user == expectedUser); 0229 if (!equal) { 0230 qDebug() << " current value " << user; 0231 qDebug() << " expected value " << expectedUser; 0232 } 0233 QVERIFY(equal); 0234 } 0235 0236 void UserTest::shouldGetStatusIcon_data() 0237 { 0238 QTest::addColumn<User::PresenceStatus>("status"); 0239 QTest::addColumn<QString>("iconFileName"); 0240 QTest::newRow("online") << User::PresenceStatus::PresenceOnline << QStringLiteral("user-online"); 0241 QTest::newRow("busy") << User::PresenceStatus::PresenceBusy << QStringLiteral("user-busy"); 0242 QTest::newRow("away") << User::PresenceStatus::PresenceAway << QStringLiteral("user-away"); 0243 QTest::newRow("offline") << User::PresenceStatus::PresenceOffline << QStringLiteral("user-offline"); 0244 QTest::newRow("unknown") << User::PresenceStatus::Unknown << QStringLiteral("unknown"); 0245 } 0246 0247 void UserTest::shouldGetStatusIcon() 0248 { 0249 QFETCH(User::PresenceStatus, status); 0250 QFETCH(QString, iconFileName); 0251 User user; 0252 user.setStatus(status); 0253 QCOMPARE(user.iconFromStatus(), iconFileName); 0254 } 0255 0256 #include "moc_usertest.cpp"