File indexing completed on 2024-05-19 05:00:38
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Elvis Angelaccio <elvis.angelaccio@kde.org> 0003 * SPDX-FileCopyrightText: 2019 David Barchiesi <david@barchie.si> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 * 0007 */ 0008 0009 #include "../src/gdriveurl.h" 0010 0011 #include <QTest> 0012 0013 class UrlTest : public QObject 0014 { 0015 Q_OBJECT 0016 0017 private Q_SLOTS: 0018 void testGDriveUrl_data(); 0019 void testGDriveUrl(); 0020 }; 0021 0022 QTEST_GUILESS_MAIN(UrlTest) 0023 0024 void UrlTest::testGDriveUrl_data() 0025 { 0026 const auto gdriveUrl = [](const QString &path) { 0027 QUrl url; 0028 url.setScheme(GDriveUrl::Scheme); 0029 url.setPath(path); 0030 return url; 0031 }; 0032 0033 QTest::addColumn<QUrl>("url"); 0034 QTest::addColumn<QString>("expectedToString"); 0035 QTest::addColumn<QString>("expectedAccount"); 0036 QTest::addColumn<QString>("expectedParentPath"); 0037 QTest::addColumn<bool>("expectedIsTrashed"); 0038 QTest::addColumn<bool>("expectedIsTopLevel"); 0039 QTest::addColumn<bool>("expectedIsRoot"); 0040 QTest::addColumn<bool>("expectedIsAccountRoot"); 0041 QTest::addColumn<bool>("expectedIsSharedWithMeRoot"); 0042 QTest::addColumn<bool>("expectedIsSharedWithMeTopLevel"); 0043 QTest::addColumn<bool>("expectedIsSharedWithMe"); 0044 QTest::addColumn<bool>("expectedIsSharedDrivesRoot"); 0045 QTest::addColumn<bool>("expectedIsSharedDrive"); 0046 QTest::addColumn<bool>("expectedIsNewAccountPath"); 0047 QTest::addColumn<bool>("expectedIsTrashDir"); 0048 QTest::addColumn<QStringList>("expectedPathComponents"); 0049 QTest::addColumn<QString>("expectedFilename"); 0050 0051 // clang-format off 0052 QTest::newRow("root url") 0053 << gdriveUrl(QStringLiteral("/")) 0054 << QStringLiteral("gdrive:/") 0055 << QString() 0056 << QString() 0057 << false // expectedIsTrashed 0058 << false // expectedIsTopLevel 0059 << true // expectedIsRoot 0060 << false // expectedIsAccountRoot 0061 << false // expectedIsSharedWithMeRoot 0062 << false // expectedIsSharedWithMeTopLevel 0063 << false // expectedIsSharedWithMe 0064 << false // expectedIsSharedDrivesRoot 0065 << false // expectedIsSharedDrive 0066 << false // expectedIsNewAccountPath 0067 << false // expectedIsTrashDir 0068 << QStringList() 0069 << ""; 0070 0071 QTest::newRow("account root url") 0072 << gdriveUrl(QStringLiteral("/foo@gmail.com")) 0073 << QStringLiteral("gdrive:/foo@gmail.com") 0074 << QStringLiteral("foo@gmail.com") 0075 << QStringLiteral("/") 0076 << false // expectedIsTrashed 0077 << false // expectedIsTopLevel 0078 << false // expectedIsRoot 0079 << true // expectedIsAccountRoot 0080 << false // expectedIsSharedWithMeRoot 0081 << false // expectedIsSharedWithMeTopLevel 0082 << false // expectedIsSharedWithMe 0083 << false // expectedIsSharedDrivesRoot 0084 << false // expectedIsSharedDrive 0085 << false // expectedIsNewAccountPath 0086 << false // expectedIsTrashDir 0087 << QStringList {QStringLiteral("foo@gmail.com")} 0088 << QStringLiteral("foo@gmail.com"); 0089 0090 QTest::newRow("account trash url") 0091 << gdriveUrl(QStringLiteral("/foo@gmail.com/") + GDriveUrl::TrashDir) 0092 << QStringLiteral("gdrive:/foo@gmail.com/") + GDriveUrl::TrashDir 0093 << QStringLiteral("foo@gmail.com") 0094 << QStringLiteral("/foo@gmail.com") 0095 << false // expectedIsTrashed 0096 << true // expectedIsTopLevel 0097 << false // expectedIsRoot 0098 << false // expectedIsAccountRoot 0099 << false // expectedIsSharedWithMeRoot 0100 << false // expectedIsSharedWithMeTopLevel 0101 << false // expectedIsSharedWithMe 0102 << false // expectedIsSharedDrivesRoot 0103 << false // expectedIsSharedDrive 0104 << false // expectedIsNewAccountPath 0105 << true // expectedIsTrashDir 0106 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::TrashDir} 0107 << GDriveUrl::TrashDir; 0108 0109 QTest::newRow("file in trash") 0110 << gdriveUrl(QStringLiteral("/foo@gmail.com/") + GDriveUrl::TrashDir + QStringLiteral("/baz.txt")) 0111 << QStringLiteral("gdrive:/foo@gmail.com/") + GDriveUrl::TrashDir + QStringLiteral("/baz.txt") 0112 << QStringLiteral("foo@gmail.com") 0113 << QStringLiteral("/foo@gmail.com/") + GDriveUrl::TrashDir 0114 << true // expectedIsTrashed 0115 << false // expectedIsTopLevel 0116 << false // expectedIsRoot 0117 << false // expectedIsAccountRoot 0118 << false // expectedIsSharedWithMeRoot 0119 << false // expectedIsSharedWithMeTopLevel 0120 << false // expectedIsSharedWithMe 0121 << false // expectedIsSharedDrivesRoot 0122 << false // expectedIsSharedDrive 0123 << false // expectedIsNewAccountPath 0124 << false // expectedIsTrashDir 0125 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::TrashDir, QStringLiteral("baz.txt")} 0126 << QStringLiteral("baz.txt"); 0127 0128 QTest::newRow("account shared drives url") 0129 << gdriveUrl(QStringLiteral("/foo@gmail.com/") + GDriveUrl::SharedDrivesDir) 0130 << QStringLiteral("gdrive:/foo@gmail.com/") + GDriveUrl::SharedDrivesDir 0131 << QStringLiteral("foo@gmail.com") 0132 << QStringLiteral("/foo@gmail.com") 0133 << false // expectedIsTrashed 0134 << true // expectedIsTopLevel 0135 << false // expectedIsRoot 0136 << false // expectedIsAccountRoot 0137 << false // expectedIsSharedWithMeRoot 0138 << false // expectedIsSharedWithMeTopLevel 0139 << false // expectedIsSharedWithMe 0140 << true // expectedIsSharedDrivesRoot 0141 << false // expectedIsSharedDrive 0142 << false // expectedIsNewAccountPath 0143 << false // expectedIsTrashDir 0144 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::SharedDrivesDir} 0145 << GDriveUrl::SharedDrivesDir; 0146 0147 QTest::newRow("file in account root") 0148 << gdriveUrl(QStringLiteral("/foo@gmail.com/bar.txt")) 0149 << QStringLiteral("gdrive:/foo@gmail.com/bar.txt") 0150 << QStringLiteral("foo@gmail.com") 0151 << QStringLiteral("/foo@gmail.com") 0152 << false // expectedIsTrashed 0153 << true // expectedIsTopLevel 0154 << false // expectedIsRoot 0155 << false // expectedIsAccountRoot 0156 << false // expectedIsSharedWithMeRoot 0157 << false // expectedIsSharedWithMeTopLevel 0158 << false // expectedIsSharedWithMe 0159 << false // expectedIsSharedDrivesRoot 0160 << false // expectedIsSharedDrive 0161 << false // expectedIsNewAccountPath 0162 << false // expectedIsTrashDir 0163 << QStringList {QStringLiteral("foo@gmail.com"), QStringLiteral("bar.txt")} 0164 << QStringLiteral("bar.txt"); 0165 0166 QTest::newRow("folder in account root - no trailing slash") 0167 << gdriveUrl(QStringLiteral("/foo@gmail.com/bar")) 0168 << QStringLiteral("gdrive:/foo@gmail.com/bar") 0169 << QStringLiteral("foo@gmail.com") 0170 << QStringLiteral("/foo@gmail.com") 0171 << false // expectedIsTrashed 0172 << true // expectedIsTopLevel 0173 << false // expectedIsRoot 0174 << false // expectedIsAccountRoot 0175 << false // expectedIsSharedWithMeRoot 0176 << false // expectedIsSharedWithMeTopLevel 0177 << false // expectedIsSharedWithMe 0178 << false // expectedIsSharedDrivesRoot 0179 << false // expectedIsSharedDrive 0180 << false // expectedIsNewAccountPath 0181 << false // expectedIsTrashDir 0182 << QStringList {QStringLiteral("foo@gmail.com"), QStringLiteral("bar")} 0183 << QStringLiteral("bar"); 0184 0185 QTest::newRow("folder in account root - trailing slash") 0186 << gdriveUrl(QStringLiteral("/foo@gmail.com/bar/")) 0187 << QStringLiteral("gdrive:/foo@gmail.com/bar/") 0188 << QStringLiteral("foo@gmail.com") 0189 << QStringLiteral("/foo@gmail.com") 0190 << false // expectedIsTrashed 0191 << true // expectedIsTopLevel 0192 << false // expectedIsRoot 0193 << false // expectedIsAccountRoot 0194 << false // expectedIsSharedWithMeRoot 0195 << false // expectedIsSharedWithMeTopLevel 0196 << false // expectedIsSharedWithMe 0197 << false // expectedIsSharedDrivesRoot 0198 << false // expectedIsSharedDrive 0199 << false // expectedIsNewAccountPath 0200 << false // expectedIsTrashDir 0201 << QStringList {QStringLiteral("foo@gmail.com"), QStringLiteral("bar")} 0202 << QStringLiteral("bar"); 0203 0204 QTest::newRow("file in subfolder") 0205 << gdriveUrl(QStringLiteral("/foo@gmail.com/bar/baz.txt")) 0206 << QStringLiteral("gdrive:/foo@gmail.com/bar/baz.txt") 0207 << QStringLiteral("foo@gmail.com") 0208 << QStringLiteral("/foo@gmail.com/bar") 0209 << false // expectedIsTrashed 0210 << false // expectedIsTopLevel 0211 << false // expectedIsRoot 0212 << false // expectedIsAccountRoot 0213 << false // expectedIsSharedWithMeRoot 0214 << false // expectedIsSharedWithMeTopLevel 0215 << false // expectedIsSharedWithMe 0216 << false // expectedIsSharedDrivesRoot 0217 << false // expectedIsSharedDrive 0218 << false // expectedIsNewAccountPath 0219 << false // expectedIsTrashDir 0220 << QStringList {QStringLiteral("foo@gmail.com"), QStringLiteral("bar"), QStringLiteral("baz.txt")} 0221 << QStringLiteral("baz.txt"); 0222 0223 QTest::newRow("account shared with me root") 0224 << gdriveUrl(QStringLiteral("/foo@gmail.com/") + GDriveUrl::SharedWithMeDir) 0225 << QStringLiteral("gdrive:/foo@gmail.com/") + GDriveUrl::SharedWithMeDir 0226 << QStringLiteral("foo@gmail.com") 0227 << QStringLiteral("/foo@gmail.com") 0228 << false // expectedIsTrashed 0229 << true // expectedIsTopLevel 0230 << false // expectedIsRoot 0231 << false // expectedIsAccountRoot 0232 << true // expectedIsSharedWithMeRoot 0233 << false // expectedIsSharedWithMeTopLevel 0234 << false // expectedIsSharedWithMe 0235 << false // expectedIsSharedDrivesRoot 0236 << false // expectedIsSharedDrive 0237 << false // expectedIsNewAccountPath 0238 << false // expectedIsTrashDir 0239 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::SharedWithMeDir} 0240 << GDriveUrl::SharedWithMeDir; 0241 0242 QTest::newRow("shared with me top-level file") 0243 << gdriveUrl(QStringLiteral("/foo@gmail.com/%1/baz.txt").arg(GDriveUrl::SharedWithMeDir)) 0244 << QStringLiteral("gdrive:/foo@gmail.com/%1/baz.txt").arg(GDriveUrl::SharedWithMeDir) 0245 << QStringLiteral("foo@gmail.com") 0246 << QStringLiteral("/foo@gmail.com/") + GDriveUrl::SharedWithMeDir 0247 << false // expectedIsTrashed 0248 << false // expectedIsTopLevel 0249 << false // expectedIsRoot 0250 << false // expectedIsAccountRoot 0251 << false // expectedIsSharedWithMeRoot 0252 << true // expectedIsSharedWithMeTopLevel 0253 << true // expectedIsSharedWithMe 0254 << false // expectedIsSharedDrivesRoot 0255 << false // expectedIsSharedDrive 0256 << false // expectedIsNewAccountPath 0257 << false // expectedIsTrashDir 0258 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::SharedWithMeDir, QStringLiteral("baz.txt")} 0259 << QStringLiteral("baz.txt"); 0260 0261 QTest::newRow("shared with me top-level folder") 0262 << gdriveUrl(QStringLiteral("/foo@gmail.com/%1/bar/").arg(GDriveUrl::SharedWithMeDir)) 0263 << QStringLiteral("gdrive:/foo@gmail.com/%1/bar/").arg(GDriveUrl::SharedWithMeDir) 0264 << QStringLiteral("foo@gmail.com") 0265 << QStringLiteral("/foo@gmail.com/") + GDriveUrl::SharedWithMeDir 0266 << false // expectedIsTrashed 0267 << false // expectedIsTopLevel 0268 << false // expectedIsRoot 0269 << false // expectedIsAccountRoot 0270 << false // expectedIsSharedWithMeRoot 0271 << true // expectedIsSharedWithMeTopLevel 0272 << true // expectedIsSharedWithMe 0273 << false // expectedIsSharedDrivesRoot 0274 << false // expectedIsSharedDrive 0275 << false // expectedIsNewAccountPath 0276 << false // expectedIsTrashDir 0277 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::SharedWithMeDir, QStringLiteral("bar")} 0278 << QStringLiteral("bar"); 0279 0280 QTest::newRow("shared with me inner file") 0281 << gdriveUrl(QStringLiteral("/foo@gmail.com/%1/bar/baz.txt").arg(GDriveUrl::SharedWithMeDir)) 0282 << QStringLiteral("gdrive:/foo@gmail.com/%1/bar/baz.txt").arg(GDriveUrl::SharedWithMeDir) 0283 << QStringLiteral("foo@gmail.com") 0284 << QStringLiteral("/foo@gmail.com/") + GDriveUrl::SharedWithMeDir + QStringLiteral("/bar") 0285 << false // expectedIsTrashed 0286 << false // expectedIsTopLevel 0287 << false // expectedIsRoot 0288 << false // expectedIsAccountRoot 0289 << false // expectedIsSharedWithMeRoot 0290 << false // expectedIsSharedWithMeTopLevel 0291 << true // expectedIsSharedWithMe 0292 << false // expectedIsSharedDrivesRoot 0293 << false // expectedIsSharedDrive 0294 << false // expectedIsNewAccountPath 0295 << false // expectedIsTrashDir 0296 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::SharedWithMeDir, QStringLiteral("bar"), QStringLiteral("baz.txt")} 0297 << QStringLiteral("baz.txt"); 0298 0299 QTest::newRow("shared with me inner folder") 0300 << gdriveUrl(QStringLiteral("/foo@gmail.com/%1/bar/baz/").arg(GDriveUrl::SharedWithMeDir)) 0301 << QStringLiteral("gdrive:/foo@gmail.com/%1/bar/baz/").arg(GDriveUrl::SharedWithMeDir) 0302 << QStringLiteral("foo@gmail.com") 0303 << QStringLiteral("/foo@gmail.com/") + GDriveUrl::SharedWithMeDir + QStringLiteral("/bar") 0304 << false // expectedIsTrashed 0305 << false // expectedIsTopLevel 0306 << false // expectedIsRoot 0307 << false // expectedIsAccountRoot 0308 << false // expectedIsSharedWithMeRoot 0309 << false // expectedIsSharedWithMeTopLevel 0310 << true // expectedIsSharedWithMe 0311 << false // expectedIsSharedDrivesRoot 0312 << false // expectedIsSharedDrive 0313 << false // expectedIsNewAccountPath 0314 << false // expectedIsTrashDir 0315 << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::SharedWithMeDir, QStringLiteral("bar"), QStringLiteral("baz")} 0316 << QStringLiteral("baz"); 0317 // clang-format on 0318 } 0319 0320 void UrlTest::testGDriveUrl() 0321 { 0322 QFETCH(QUrl, url); 0323 const auto gdriveUrl = GDriveUrl(url); 0324 0325 QFETCH(QString, expectedToString); 0326 QCOMPARE(gdriveUrl.url(), QUrl(expectedToString)); 0327 0328 QFETCH(QString, expectedAccount); 0329 QFETCH(QString, expectedParentPath); 0330 QFETCH(bool, expectedIsTrashed); 0331 QFETCH(bool, expectedIsTopLevel); 0332 QFETCH(bool, expectedIsRoot); 0333 QFETCH(bool, expectedIsAccountRoot); 0334 QFETCH(bool, expectedIsSharedWithMeRoot); 0335 QFETCH(bool, expectedIsSharedWithMeTopLevel); 0336 QFETCH(bool, expectedIsSharedWithMe); 0337 QFETCH(bool, expectedIsSharedDrivesRoot); 0338 QFETCH(bool, expectedIsSharedDrive); 0339 QFETCH(bool, expectedIsNewAccountPath); 0340 QFETCH(bool, expectedIsTrashDir); 0341 QFETCH(QStringList, expectedPathComponents); 0342 QFETCH(QString, expectedFilename); 0343 0344 QCOMPARE(gdriveUrl.account(), expectedAccount); 0345 QCOMPARE(gdriveUrl.parentPath(), expectedParentPath); 0346 QCOMPARE(gdriveUrl.pathComponents(), expectedPathComponents); 0347 QCOMPARE(gdriveUrl.isTrashed(), expectedIsTrashed); 0348 QCOMPARE(gdriveUrl.isTopLevel(), expectedIsTopLevel); 0349 QCOMPARE(gdriveUrl.isRoot(), expectedIsRoot); 0350 QCOMPARE(gdriveUrl.isAccountRoot(), expectedIsAccountRoot); 0351 QCOMPARE(gdriveUrl.isSharedWithMeRoot(), expectedIsSharedWithMeRoot); 0352 QCOMPARE(gdriveUrl.isSharedWithMeTopLevel(), expectedIsSharedWithMeTopLevel); 0353 QCOMPARE(gdriveUrl.isSharedWithMe(), expectedIsSharedWithMe); 0354 QCOMPARE(gdriveUrl.isSharedDrivesRoot(), expectedIsSharedDrivesRoot); 0355 QCOMPARE(gdriveUrl.isSharedDrive(), expectedIsSharedDrive); 0356 QCOMPARE(gdriveUrl.isNewAccountPath(), expectedIsNewAccountPath); 0357 QCOMPARE(gdriveUrl.isTrashDir(), expectedIsTrashDir); 0358 QCOMPARE(gdriveUrl.filename(), expectedFilename); 0359 0360 if (expectedPathComponents.isEmpty()) { 0361 QVERIFY(gdriveUrl.isRoot()); 0362 } else if (expectedPathComponents.count() == 1) { 0363 QVERIFY(gdriveUrl.isAccountRoot()); 0364 } 0365 } 0366 0367 #include "urltest.moc"