Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2021-07-02 11:21:01 +0300
committerHannah von Reth <vonreth@kde.org>2021-07-13 11:14:00 +0300
commit3f5163a4f30cf5978ffd7ee363e0d81065eb29c0 (patch)
tree43be5adbc8934993f79df4fa931d07450dae7dfe /test
parentf1ee3e18e858cd2816dbf588e35cb7f1441f8511 (diff)
Delay the deletion of Folder objects
This removes the need to check for the existance of the pointers Fixes: #8690
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt2
-rw-r--r--test/benchmarks/benchlargesync.cpp2
-rw-r--r--test/modeltests/testactivitymodel.cpp19
-rw-r--r--test/modeltests/testprotocolmodel.cpp34
-rw-r--r--test/testallfilesdeleted.cpp2
-rw-r--r--test/testblacklist.cpp2
-rw-r--r--test/testchunkingng.cpp2
-rw-r--r--test/testcredentialmanager.cpp2
-rw-r--r--test/testdatabaseerror.cpp2
-rw-r--r--test/testdownload.cpp2
-rw-r--r--test/testfolderman.cpp59
-rw-r--r--test/testjobqueue.cpp2
-rw-r--r--test/testlocaldiscovery.cpp2
-rw-r--r--test/testlockedfiles.cpp2
-rw-r--r--test/testoauth.cpp2
-rw-r--r--test/testpermissions.cpp2
-rw-r--r--test/testremotediscovery.cpp2
-rw-r--r--test/testselectivesync.cpp2
-rw-r--r--test/testsyncconflict.cpp2
-rw-r--r--test/testsyncdelete.cpp2
-rw-r--r--test/testsyncengine.cpp2
-rw-r--r--test/testsyncfilestatustracker.cpp2
-rw-r--r--test/testsyncmove.cpp2
-rw-r--r--test/testsyncvirtualfiles.cpp2
-rw-r--r--test/testuploadreset.cpp2
-rw-r--r--test/testutils/syncenginetestutils.cpp (renamed from test/syncenginetestutils.cpp)5
-rw-r--r--test/testutils/syncenginetestutils.h (renamed from test/syncenginetestutils.h)110
-rw-r--r--test/testutils/testutils.cpp59
-rw-r--r--test/testutils/testutils.h14
29 files changed, 218 insertions, 126 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index eb2c669bf..b27278825 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,6 +1,6 @@
include(owncloud_add_test.cmake)
-add_library(syncenginetestutils STATIC syncenginetestutils.cpp)
+add_library(syncenginetestutils STATIC testutils/syncenginetestutils.cpp testutils/testutils.cpp)
target_link_libraries(syncenginetestutils PUBLIC owncloudCore Qt5::Test)
owncloud_add_test(OwncloudPropagator)
diff --git a/test/benchmarks/benchlargesync.cpp b/test/benchmarks/benchlargesync.cpp
index 9e78b9d5c..05b7c1b9d 100644
--- a/test/benchmarks/benchlargesync.cpp
+++ b/test/benchmarks/benchlargesync.cpp
@@ -5,7 +5,7 @@
*
*/
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/modeltests/testactivitymodel.cpp b/test/modeltests/testactivitymodel.cpp
index ef7899257..fa9b7d2d6 100644
--- a/test/modeltests/testactivitymodel.cpp
+++ b/test/modeltests/testactivitymodel.cpp
@@ -9,6 +9,8 @@
#include "gui/models/activitylistmodel.h"
#include "gui/accountmanager.h"
+#include "testutils/testutils.h"
+
#include <QTest>
#include <QAbstractItemModelTester>
@@ -25,19 +27,8 @@ private Q_SLOTS:
new QAbstractItemModelTester(model, this);
- auto manager = AccountManager::instance();
-
- auto createAcc = [&] {
- // don't use the account manager to create the account, it would try to use widgets
- auto acc = Account::create();
- acc->setUrl(QUrl(QStringLiteral("http://admin:admin@localhost/owncloud")));
- acc->setDavDisplayName(QStringLiteral("fakename") + acc->uuid().toString());
- acc->setServerVersion(QStringLiteral("10.0.0"));
- manager->addAccount(acc);
- return acc;
- };
- auto acc1 = createAcc();
- auto acc2 = createAcc();
+ auto acc1 = TestUtils::createDummyAccount();
+ auto acc2 = TestUtils::createDummyAccount();
model->setActivityList({
Activity { Activity::ActivityType, 1, acc1, "test", "test", "foo.cpp", QUrl::fromUserInput("https://owncloud.com"), QDateTime::currentDateTime() },
@@ -49,7 +40,7 @@ private Q_SLOTS:
Activity { Activity::ActivityType, 2, acc1, "test", "test", "foo.cpp", QUrl::fromUserInput("https://owncloud.com"), QDateTime::currentDateTime() },
Activity { Activity::ActivityType, 4, acc2, "test", "test", "foo.cpp", QUrl::fromUserInput("https://owncloud.com"), QDateTime::currentDateTime() },
});
- model->slotRemoveAccount(manager->accounts().first().data());
+ model->slotRemoveAccount(AccountManager::instance()->accounts().first().data());
}
};
}
diff --git a/test/modeltests/testprotocolmodel.cpp b/test/modeltests/testprotocolmodel.cpp
index 8132f9f63..e2c194c2f 100644
--- a/test/modeltests/testprotocolmodel.cpp
+++ b/test/modeltests/testprotocolmodel.cpp
@@ -7,9 +7,15 @@
*/
#include "gui/models/protocolitemmodel.h"
+#include "gui/accountmanager.h"
+#include "gui/accountstate.h"
+#include "gui/folderman.h"
+
+#include "testutils/testutils.h"
#include <QTest>
#include <QAbstractItemModelTester>
+#include <folder.h>
namespace OCC {
@@ -24,6 +30,20 @@ private Q_SLOTS:
new QAbstractItemModelTester(model, this);
+ QTemporaryDir dir;
+
+ auto account = TestUtils::createDummyAccount();
+
+ AccountStatePtr newAccountState(new AccountState(account));
+ const QDir d(dir.path());
+ QVERIFY(d.mkdir("foo"));
+ QVERIFY(d.mkdir("bar"));
+ const QString foo = dir.path() + QStringLiteral("/foo");
+ const QString bar = dir.path() + QStringLiteral("/bar");
+ QVERIFY(TestUtils::folderMan()->addFolder(newAccountState.data(), TestUtils::createDummyFolderDefinition(foo)));
+ QVERIFY(TestUtils::folderMan()->addFolder(newAccountState.data(), TestUtils::createDummyFolderDefinition(bar)));
+
+
// populate with dummy data
// -1 to test the ring buffer window roll over
const auto size = model->rawData().capacity() - 1;
@@ -31,13 +51,15 @@ private Q_SLOTS:
std::vector<ProtocolItem> tmp;
tmp.reserve(size);
for (size_t i = 0; i < size; ++i) {
- tmp.emplace_back(QStringLiteral("foo") + QString::number(i), item);
+ item->_file = QString::number(i);
+ tmp.emplace_back(foo, item);
}
model->reset(std::move(tmp));
// test some inserts
for (int i = 0; i < 5; ++i) {
- model->addProtocolItem(ProtocolItem { QStringLiteral("bar") + QString::number(i), item });
+ item->_file = QString::number(i);
+ model->addProtocolItem(ProtocolItem { bar, item });
}
const auto oldSize = model->rowCount();
@@ -45,8 +67,8 @@ private Q_SLOTS:
// pick one from the middle
const auto toBeRemoved = {
model->protocolItem(model->index(0, 0)),
- model->protocolItem(model->index(model->rawData().capacity() / 2, 0)),
- model->protocolItem(model->index(model->rawData().capacity() / 3, 0))
+ model->protocolItem(model->index(static_cast<int>(model->rawData().capacity()) / 2, 0)),
+ model->protocolItem(model->index(static_cast<int>(model->rawData().capacity()) / 3, 0))
};
std::vector<ProtocolItem> copy;
@@ -58,7 +80,7 @@ private Q_SLOTS:
int matches = 0;
const auto filter = [&toBeRemoved, &matches](const ProtocolItem &pi) {
for (const auto &tb : toBeRemoved) {
- if (pi.folderName() == tb.folderName()) {
+ if (pi.folder() == tb.folder() && pi.path() == tb.path()) {
matches++;
return true;
}
@@ -74,7 +96,7 @@ private Q_SLOTS:
// ensure we kept the original order
for (int i = 0; i < model->rowCount(); ++i) {
- QCOMPARE(model->protocolItem(model->index(i, 0)).folderName(), copy[i].folderName());
+ QCOMPARE(model->protocolItem(model->index(i, 0)).folder(), copy[i].folder());
}
}
};
diff --git a/test/testallfilesdeleted.cpp b/test/testallfilesdeleted.cpp
index e7b89cfec..e3ad69995 100644
--- a/test/testallfilesdeleted.cpp
+++ b/test/testallfilesdeleted.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testblacklist.cpp b/test/testblacklist.cpp
index d71326560..3a4fe93be 100644
--- a/test/testblacklist.cpp
+++ b/test/testblacklist.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testchunkingng.cpp b/test/testchunkingng.cpp
index 24e248d09..401a21c13 100644
--- a/test/testchunkingng.cpp
+++ b/test/testchunkingng.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testcredentialmanager.cpp b/test/testcredentialmanager.cpp
index f0ac646b2..9afea5ef0 100644
--- a/test/testcredentialmanager.cpp
+++ b/test/testcredentialmanager.cpp
@@ -7,7 +7,7 @@
#include "account.h"
#include "libsync/creds/credentialmanager.h"
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <QTest>
diff --git a/test/testdatabaseerror.cpp b/test/testdatabaseerror.cpp
index 4c2ad5de2..bb19c6477 100644
--- a/test/testdatabaseerror.cpp
+++ b/test/testdatabaseerror.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testdownload.cpp b/test/testdownload.cpp
index ec451e07b..cd0635ad6 100644
--- a/test/testdownload.cpp
+++ b/test/testdownload.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
#include <owncloudpropagator.h>
diff --git a/test/testfolderman.cpp b/test/testfolderman.cpp
index 6cbc0e03c..4e9437b09 100644
--- a/test/testfolderman.cpp
+++ b/test/testfolderman.cpp
@@ -14,36 +14,15 @@
#include "account.h"
#include "accountstate.h"
#include "configfile.h"
-#include "creds/httpcredentials.h"
-using namespace OCC;
-
-class HttpCredentialsTest : public HttpCredentials {
-public:
- HttpCredentialsTest(const QString& user, const QString& password)
- : HttpCredentials(DetermineAuthTypeJob::AuthType::Basic, user, password)
- {}
-
- void askFromUser() override {
-
- }
-};
+#include "testutils/testutils.h"
-static FolderDefinition folderDefinition(const QString &path) {
- FolderDefinition d;
- d.localPath = path;
- d.targetPath = path;
- d.alias = path;
- return d;
-}
+using namespace OCC;
class TestFolderMan: public QObject
{
Q_OBJECT
-
- FolderMan _fm;
-
private slots:
void testCheckPathValidityForNewFolder()
{
@@ -64,17 +43,12 @@ private slots:
}
QString dirPath = dir2.canonicalPath();
- AccountPtr account = Account::create();
- QUrl url("http://example.de");
- HttpCredentialsTest *cred = new HttpCredentialsTest("testuser", "secret");
- account->setCredentials(cred);
- account->setUrl( url );
-
+ AccountPtr account = TestUtils::createDummyAccount();
AccountStatePtr newAccountState(new AccountState(account));
- FolderMan *folderman = FolderMan::instance();
- QCOMPARE(folderman, &_fm);
- QVERIFY(folderman->addFolder(newAccountState.data(), folderDefinition(dirPath + "/sub/ownCloud1")));
- QVERIFY(folderman->addFolder(newAccountState.data(), folderDefinition(dirPath + "/ownCloud2")));
+ FolderMan *folderman = TestUtils::folderMan();
+ QCOMPARE(folderman, FolderMan::instance());
+ QVERIFY(folderman->addFolder(newAccountState.data(), TestUtils::createDummyFolderDefinition(dirPath + "/sub/ownCloud1")));
+ QVERIFY(folderman->addFolder(newAccountState.data(), TestUtils::createDummyFolderDefinition(dirPath + "/ownCloud2")));
// those should be allowed
@@ -91,7 +65,7 @@ private slots:
QVERIFY(!folderman->checkPathValidityForNewFolder(dirPath + "/sub/file.txt").isNull());
// There are folders configured in those folders, url needs to be taken into account: -> ERROR
- QUrl url2(url);
+ QUrl url2(account->url());
const QString user = account->credentials()->user();
url2.setUserName(user);
@@ -174,7 +148,6 @@ private slots:
// SETUP
QTemporaryDir dir;
- ConfigFile::setConfDir(dir.path()); // we don't want to pollute the user's config file
QVERIFY(dir.isValid());
QDir dir2(dir.path());
QVERIFY(dir2.mkpath("sub/ownCloud1/folder/f"));
@@ -185,18 +158,14 @@ private slots:
QVERIFY(dir2.mkpath("free2/sub"));
QString dirPath = dir2.canonicalPath();
- AccountPtr account = Account::create();
- QUrl url("http://example.de");
- HttpCredentialsTest *cred = new HttpCredentialsTest("testuser", "secret");
- account->setCredentials(cred);
- account->setUrl( url );
- url.setUserName(cred->user());
+ AccountPtr account = TestUtils::createDummyAccount();
+ QUrl url(account->url());
+ url.setUserName(account->credentials()->user());
AccountStatePtr newAccountState(new AccountState(account));
- FolderMan *folderman = FolderMan::instance();
- QCOMPARE(folderman, &_fm);
- QVERIFY(folderman->addFolder(newAccountState.data(), folderDefinition(dirPath + "/sub/ownCloud/")));
- QVERIFY(folderman->addFolder(newAccountState.data(), folderDefinition(dirPath + "/ownCloud2/")));
+ FolderMan *folderman = TestUtils::folderMan();
+ QVERIFY(folderman->addFolder(newAccountState.data(), TestUtils::createDummyFolderDefinition(dirPath + "/sub/ownCloud/")));
+ QVERIFY(folderman->addFolder(newAccountState.data(), TestUtils::createDummyFolderDefinition(dirPath + "/ownCloud2/")));
// TEST
diff --git a/test/testjobqueue.cpp b/test/testjobqueue.cpp
index aeb2063cb..7fca54082 100644
--- a/test/testjobqueue.cpp
+++ b/test/testjobqueue.cpp
@@ -9,7 +9,7 @@
#include "abstractnetworkjob.h"
#include "account.h"
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <QTest>
diff --git a/test/testlocaldiscovery.cpp b/test/testlocaldiscovery.cpp
index 18e1c1b9d..643a3c96a 100644
--- a/test/testlocaldiscovery.cpp
+++ b/test/testlocaldiscovery.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
#include <localdiscoverytracker.h>
diff --git a/test/testlockedfiles.cpp b/test/testlockedfiles.cpp
index 2ffedb8e3..a96dbea64 100644
--- a/test/testlockedfiles.cpp
+++ b/test/testlockedfiles.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include "lockwatcher.h"
#include <syncengine.h>
#include <localdiscoverytracker.h>
diff --git a/test/testoauth.cpp b/test/testoauth.cpp
index 42de3a3cf..a8b0dbaaf 100644
--- a/test/testoauth.cpp
+++ b/test/testoauth.cpp
@@ -9,7 +9,7 @@
#include <QDesktopServices>
#include "libsync/creds/oauth.h"
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include "theme.h"
#include "common/asserts.h"
diff --git a/test/testpermissions.cpp b/test/testpermissions.cpp
index 6836c331f..012c91a71 100644
--- a/test/testpermissions.cpp
+++ b/test/testpermissions.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
#include "common/ownsql.h"
diff --git a/test/testremotediscovery.cpp b/test/testremotediscovery.cpp
index a93c16039..b6b696bb3 100644
--- a/test/testremotediscovery.cpp
+++ b/test/testremotediscovery.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
#include <localdiscoverytracker.h>
diff --git a/test/testselectivesync.cpp b/test/testselectivesync.cpp
index c91bd8b76..67f44d3fc 100644
--- a/test/testselectivesync.cpp
+++ b/test/testselectivesync.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testsyncconflict.cpp b/test/testsyncconflict.cpp
index 1a1becdc9..dde1eb751 100644
--- a/test/testsyncconflict.cpp
+++ b/test/testsyncconflict.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testsyncdelete.cpp b/test/testsyncdelete.cpp
index c2633ba4b..780b5e684 100644
--- a/test/testsyncdelete.cpp
+++ b/test/testsyncdelete.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp
index 1ee5bdb84..89fe33420 100644
--- a/test/testsyncengine.cpp
+++ b/test/testsyncengine.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testsyncfilestatustracker.cpp b/test/testsyncfilestatustracker.cpp
index f1b27447c..823910514 100644
--- a/test/testsyncfilestatustracker.cpp
+++ b/test/testsyncfilestatustracker.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include "csync_exclude.h"
using namespace OCC;
diff --git a/test/testsyncmove.cpp b/test/testsyncmove.cpp
index 8e09ba693..047e5149b 100644
--- a/test/testsyncmove.cpp
+++ b/test/testsyncmove.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
using namespace OCC;
diff --git a/test/testsyncvirtualfiles.cpp b/test/testsyncvirtualfiles.cpp
index f46888518..ffcf1c1fa 100644
--- a/test/testsyncvirtualfiles.cpp
+++ b/test/testsyncvirtualfiles.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include "common/vfs.h"
#include "config.h"
#include <syncengine.h>
diff --git a/test/testuploadreset.cpp b/test/testuploadreset.cpp
index cc7d4c5ae..d954e7553 100644
--- a/test/testuploadreset.cpp
+++ b/test/testuploadreset.cpp
@@ -6,7 +6,7 @@
*/
#include <QtTest>
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include <syncengine.h>
#include <common/syncjournaldb.h>
diff --git a/test/syncenginetestutils.cpp b/test/testutils/syncenginetestutils.cpp
index a4b1a1c37..c3422b131 100644
--- a/test/syncenginetestutils.cpp
+++ b/test/testutils/syncenginetestutils.cpp
@@ -5,7 +5,7 @@
*
*/
-#include "syncenginetestutils.h"
+#include "testutils/syncenginetestutils.h"
#include "httplogger.h"
#include "accessmanager.h"
#include "libsync/configfile.h"
@@ -346,7 +346,8 @@ FakePropfindReply::FakePropfindReply(FileInfo &remoteRootFileInfo, QNetworkAcces
xml.writeTextElement(davUri, QStringLiteral("getlastmodified"), stringDate);
xml.writeTextElement(davUri, QStringLiteral("getcontentlength"), QString::number(fileInfo.size));
xml.writeTextElement(davUri, QStringLiteral("getetag"), QStringLiteral("\"%1\"").arg(QString::fromLatin1(fileInfo.etag)));
- xml.writeTextElement(ocUri, QStringLiteral("permissions"), !fileInfo.permissions.isNull() ? QString(fileInfo.permissions.toString()) : fileInfo.isShared ? QStringLiteral("SRDNVCKW") : QStringLiteral("RDNVCKW"));
+ xml.writeTextElement(ocUri, QStringLiteral("permissions"), !fileInfo.permissions.isNull() ? QString(fileInfo.permissions.toString()) : fileInfo.isShared ? QStringLiteral("SRDNVCKW")
+ : QStringLiteral("RDNVCKW"));
xml.writeTextElement(ocUri, QStringLiteral("id"), QString::fromUtf8(fileInfo.fileId));
xml.writeTextElement(ocUri, QStringLiteral("checksums"), QString::fromUtf8(fileInfo.checksums));
buffer.write(fileInfo.extraDavProperties);
diff --git a/test/syncenginetestutils.h b/test/testutils/syncenginetestutils.h
index 72ef5d91a..98c0759ec 100644
--- a/test/syncenginetestutils.h
+++ b/test/testutils/syncenginetestutils.h
@@ -10,6 +10,7 @@
#include "creds/abstractcredentials.h"
#include "logger.h"
#include "filesystem.h"
+#include "folder.h"
#include "syncengine.h"
#include "common/syncjournaldb.h"
#include "common/syncjournalfilerecord.h"
@@ -34,7 +35,8 @@ static const QUrl sRootUrl = QUrl::fromEncoded("owncloud://somehost/owncloud/rem
static const QUrl sRootUrl2 = QUrl::fromEncoded("owncloud://somehost/owncloud/remote.php/dav/files/admin/");
static const QUrl sUploadUrl = QUrl::fromEncoded("owncloud://somehost/owncloud/remote.php/dav/uploads/admin/");
-inline QString getFilePathFromUrl(const QUrl &url) {
+inline QString getFilePathFromUrl(const QUrl &url)
+{
QString path = url.path();
if (path.startsWith(sRootUrl.path()))
return path.mid(sRootUrl.path().length());
@@ -46,14 +48,17 @@ inline QString getFilePathFromUrl(const QUrl &url) {
}
-inline QByteArray generateEtag() {
+inline QByteArray generateEtag()
+{
return QByteArray::number(QDateTime::currentDateTimeUtc().toMSecsSinceEpoch(), 16) + QByteArray::number(qrand(), 16);
}
-inline QByteArray generateFileId() {
+inline QByteArray generateFileId()
+{
return QByteArray::number(qrand(), 16);
}
-class PathComponents : public QStringList {
+class PathComponents : public QStringList
+{
public:
PathComponents(const char *path);
PathComponents(const QString &path);
@@ -61,7 +66,11 @@ public:
PathComponents parentDirComponents() const;
PathComponents subComponents() const &;
- PathComponents subComponents() && { removeFirst(); return std::move(*this); }
+ PathComponents subComponents() &&
+ {
+ removeFirst();
+ return std::move(*this);
+ }
QString pathRoot() const { return first(); }
QString fileName() const { return last(); }
};
@@ -83,8 +92,12 @@ public:
class DiskFileModifier : public FileModifier
{
QDir _rootDir;
+
public:
- DiskFileModifier(const QString &rootDirPath) : _rootDir(rootDirPath) { }
+ DiskFileModifier(const QString &rootDirPath)
+ : _rootDir(rootDirPath)
+ {
+ }
void remove(const QString &relativePath) override;
void insert(const QString &relativePath, qint64 size = 64, char contentChar = 'W') override;
void setContents(const QString &relativePath, char contentChar) override;
@@ -102,9 +115,23 @@ public:
static FileInfo A12_B12_C12_S12();
FileInfo() = default;
- FileInfo(const QString &name) : name{name} { }
- FileInfo(const QString &name, qint64 size) : name{name}, isDir{false}, size{size} { }
- FileInfo(const QString &name, qint64 size, char contentChar) : name{name}, isDir{false}, size{size}, contentChar{contentChar} { }
+ FileInfo(const QString &name)
+ : name { name }
+ {
+ }
+ FileInfo(const QString &name, qint64 size)
+ : name { name }
+ , isDir { false }
+ , size { size }
+ {
+ }
+ FileInfo(const QString &name, qint64 size, char contentChar)
+ : name { name }
+ , isDir { false }
+ , size { size }
+ , contentChar { contentChar }
+ {
+ }
FileInfo(const QString &name, const std::initializer_list<FileInfo> &children);
void addChild(const FileInfo &info);
@@ -131,13 +158,15 @@ public:
FileInfo *create(const QString &relativePath, qint64 size, char contentChar);
- bool operator<(const FileInfo &other) const {
+ bool operator<(const FileInfo &other) const
+ {
return name < other.name;
}
bool operator==(const FileInfo &other) const;
- bool operator!=(const FileInfo &other) const {
+ bool operator!=(const FileInfo &other) const
+ {
return !operator==(other);
}
@@ -164,7 +193,8 @@ public:
FileInfo *findInvalidatingEtags(PathComponents pathComponents);
- friend inline QDebug operator<<(QDebug dbg, const FileInfo& fi) {
+ friend inline QDebug operator<<(QDebug dbg, const FileInfo &fi)
+ {
return dbg << "{ " << fi.path() << ": " << fi.children;
}
};
@@ -202,6 +232,7 @@ class FakePutReply : public FakeReply
{
Q_OBJECT
FileInfo *fileInfo;
+
public:
FakePutReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, const QByteArray &putPayload, QObject *parent);
@@ -217,6 +248,7 @@ class FakeMkcolReply : public FakeReply
{
Q_OBJECT
FileInfo *fileInfo;
+
public:
FakeMkcolReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent);
@@ -292,6 +324,7 @@ class FakeChunkMoveReply : public FakeReply
{
Q_OBJECT
FileInfo *fileInfo;
+
public:
FakeChunkMoveReply(FileInfo &uploadsFileInfo, FileInfo &remoteRootFileInfo,
QNetworkAccessManager::Operation op, const QNetworkRequest &request,
@@ -317,7 +350,7 @@ public:
void respond();
- void abort() override {}
+ void abort() override { }
qint64 readData(char *buf, qint64 max) override;
qint64 bytesAvailable() const override;
QByteArray _body;
@@ -334,8 +367,8 @@ public:
Q_INVOKABLE virtual void respond();
// make public to give tests easy interface
- using QNetworkReply::setError;
using QNetworkReply::setAttribute;
+ using QNetworkReply::setError;
public slots:
void slotSetFinished();
@@ -365,7 +398,7 @@ class DelayedReply : public OriginalReply
{
public:
template <typename... Args>
- explicit DelayedReply(quint64 delayMS, Args &&... args)
+ explicit DelayedReply(quint64 delayMS, Args &&...args)
: OriginalReply(std::forward<Args>(args)...)
, _delayMs(delayMS)
{
@@ -411,8 +444,12 @@ protected:
class FakeCredentials : public OCC::AbstractCredentials
{
QNetworkAccessManager *_qnam;
+
public:
- FakeCredentials(QNetworkAccessManager *qnam) : _qnam{qnam} { }
+ FakeCredentials(QNetworkAccessManager *qnam)
+ : _qnam { qnam }
+ {
+ }
QString authType() const override { return QStringLiteral("test"); }
QString user() const override { return QStringLiteral("admin"); }
QNetworkAccessManager *createQNAM() const override { return _qnam; }
@@ -452,13 +489,16 @@ public:
FileInfo &uploadState() { return _fakeQnam->uploadState(); }
FileInfo dbState() const;
- struct ErrorList {
+ struct ErrorList
+ {
FakeQNAM *_qnam;
void append(const QString &path, int error = 500)
- { _qnam->errorPaths().insert(path, error); }
+ {
+ _qnam->errorPaths().insert(path, error);
+ }
void clear() { _qnam->errorPaths().clear(); }
};
- ErrorList serverErrorPaths() { return {_fakeQnam}; }
+ ErrorList serverErrorPaths() { return { _fakeQnam }; }
void setServerOverride(const FakeQNAM::Override &override) { _fakeQnam->setOverride(override); }
QString localPath() const;
@@ -469,14 +509,16 @@ public:
void execUntilItemCompleted(const QString &relativePath);
- bool execUntilFinished() {
+ bool execUntilFinished()
+ {
QSignalSpy spy(_syncEngine.get(), SIGNAL(finished(bool)));
bool ok = spy.wait(3600000);
Q_ASSERT(ok && "Sync timed out");
return spy[0][0].toBool();
}
- bool syncOnce() {
+ bool syncOnce()
+ {
scheduleSync();
return execUntilFinished();
}
@@ -504,19 +546,22 @@ inline const FileInfo *findConflict(FileInfo &dir, const QString &filename)
return nullptr;
}
-struct ItemCompletedSpy : QSignalSpy {
+struct ItemCompletedSpy : QSignalSpy
+{
explicit ItemCompletedSpy(FakeFolder &folder)
: QSignalSpy(&folder.syncEngine(), &OCC::SyncEngine::itemCompleted)
- {}
+ {
+ }
OCC::SyncFileItemPtr findItem(const QString &path) const;
};
// QTest::toString overloads
namespace OCC {
- inline char *toString(const SyncFileStatus &s) {
- return QTest::toString(QStringLiteral("SyncFileStatus(%1)").arg(s.toSocketAPIString()));
- }
+inline char *toString(const SyncFileStatus &s)
+{
+ return QTest::toString(QStringLiteral("SyncFileStatus(%1)").arg(s.toSocketAPIString()));
+}
}
inline void addFiles(QStringList &dest, const FileInfo &fi)
@@ -548,20 +593,11 @@ inline void addFilesDbData(QStringList &dest, const FileInfo &fi)
{
// could include etag, permissions etc, but would need extra work
if (fi.isDir) {
- dest += QStringLiteral("%1 - %2 %3 %4").arg(
- fi.name,
- fi.isDir ? QStringLiteral("dir") : QStringLiteral("file"),
- QString::number(fi.lastModified.toSecsSinceEpoch()),
- QString::fromUtf8(fi.fileId));
+ dest += QStringLiteral("%1 - %2 %3 %4").arg(fi.name, fi.isDir ? QStringLiteral("dir") : QStringLiteral("file"), QString::number(fi.lastModified.toSecsSinceEpoch()), QString::fromUtf8(fi.fileId));
for (const auto &fi : fi.children)
addFilesDbData(dest, fi);
} else {
- dest += QStringLiteral("%1 - %2 %3 %4 %5").arg(
- fi.name,
- fi.isDir ? QStringLiteral("dir") : QStringLiteral("file"),
- QString::number(fi.size),
- QString::number(fi.lastModified.toSecsSinceEpoch()),
- QString::fromUtf8(fi.fileId));
+ dest += QStringLiteral("%1 - %2 %3 %4 %5").arg(fi.name, fi.isDir ? QStringLiteral("dir") : QStringLiteral("file"), QString::number(fi.size), QString::number(fi.lastModified.toSecsSinceEpoch()), QString::fromUtf8(fi.fileId));
}
}
diff --git a/test/testutils/testutils.cpp b/test/testutils/testutils.cpp
new file mode 100644
index 000000000..281323073
--- /dev/null
+++ b/test/testutils/testutils.cpp
@@ -0,0 +1,59 @@
+#include "testutils.h"
+
+#include "creds/httpcredentials.h"
+#include "gui/accountmanager.h"
+
+#include <QCoreApplication>
+
+namespace {
+class HttpCredentialsTest : public OCC::HttpCredentials
+{
+public:
+ HttpCredentialsTest(const QString &user, const QString &password)
+ : HttpCredentials(OCC::DetermineAuthTypeJob::AuthType::Basic, user, password)
+ {
+ }
+
+ void askFromUser() override
+ {
+ }
+};
+}
+
+namespace OCC {
+
+namespace TestUtils {
+ AccountPtr createDummyAccount()
+ {
+ // don't use the account manager to create the account, it would try to use widgets
+ auto acc = Account::create();
+ HttpCredentialsTest *cred = new HttpCredentialsTest("testuser", "secret");
+ acc->setCredentials(cred);
+ acc->setUrl(QUrl(QStringLiteral("http://localhost/owncloud")));
+ acc->setDavDisplayName(QStringLiteral("fakename") + acc->uuid().toString());
+ acc->setServerVersion(QStringLiteral("10.0.0"));
+ OCC::AccountManager::instance()->addAccount(acc);
+ return acc;
+ }
+
+ FolderDefinition createDummyFolderDefinition(const QString &path)
+ {
+ OCC::FolderDefinition d;
+ d.localPath = path;
+ d.targetPath = path;
+ d.alias = path;
+ return d;
+ }
+
+ FolderMan *folderMan()
+ {
+ static FolderMan *man = [] {
+ auto man = new FolderMan;
+ QObject::connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, man, &FolderMan::deleteLater);
+ return man;
+ }();
+ return man;
+ }
+
+}
+}
diff --git a/test/testutils/testutils.h b/test/testutils/testutils.h
new file mode 100644
index 000000000..c9e8c64e5
--- /dev/null
+++ b/test/testutils/testutils.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "account.h"
+#include "folder.h"
+#include "folderman.h"
+
+namespace OCC {
+
+namespace TestUtils {
+ FolderMan *folderMan();
+ FolderDefinition createDummyFolderDefinition(const QString &path);
+ AccountPtr createDummyAccount();
+}
+}