1111
1212#include " QtTest/qtestcase.h"
1313#include " common/utility.h"
14- #include " folderman.h"
15- #include " account.h"
1614#include " accountstate.h"
1715#include < accountmanager.h>
1816#include " configfile.h"
@@ -37,10 +35,9 @@ class TestMigration: public QObject
3735{
3836 Q_OBJECT
3937
40- std::unique_ptr<FolderMan> _fm;
38+ ConfigFile configFile;
39+ QTemporaryDir temporaryDir;
4140
42- signals:
43- void incomingShareDeleted ();
4441private:
4542 static constexpr char legacyAppName[] = " ownCloud" ;
4643 static constexpr char standardAppName[] = " Nextcloud" ;
@@ -82,21 +79,8 @@ class TestMigration: public QObject
8279 " ownCloud_credentials%oc.de%2ba4b09a-1223-aaaa-abcd-c2df238816d8\\ http\\ password=true" ;
8380
8481private slots:
85-
86-
87-
88- void createLegacyConfig ()
89- {
90- QTemporaryDir temporaryDir;
91- QVERIFY (QDir (temporaryDir.path ()).mkpath (standardAppName));
92- const auto standardConfigFolder = QString (temporaryDir.path () + " /" + standardAppName);
93- ConfigFile::setConfDir (standardConfigFolder);
94-
95- ConfigFile standardConfigFile;
96- QSettings settings (standardConfigFile.configFile (), QSettings::IniFormat);
97- standardConfigFile.setClientVersionString (" 3.0.0" );
82+ void setupConfigFileAccount () {
9883 QScopedPointer<FakeQNAM> fakeQnam (new FakeQNAM ({}));
99-
10084 OCC::AccountPtr account = OCC::Account::create ();
10185 account->setDavUser (" user" );
10286 account->setDavDisplayName (" Nextcloud user" );
@@ -110,67 +94,136 @@ private slots:
11094 account->setUrl (QUrl ((" http://example.de" )));
11195 const auto accountState = OCC::AccountManager::instance ()->addAccount (account);
11296 OCC::AccountManager::instance ()->saveAccount (accountState->account ());
97+ }
11398
114- standardConfigFile.setOptionalServerNotifications (true );
115- standardConfigFile.setShowChatNotifications (true );
116- standardConfigFile.setShowCallNotifications (true );
117- standardConfigFile.setShowInExplorerNavigationPane (true );
118- standardConfigFile.setShowInExplorerNavigationPane (true );
119- standardConfigFile.setRemotePollInterval (std::chrono::milliseconds (1000 ));
120- standardConfigFile.setAutoUpdateCheck (true , QString ());
121- standardConfigFile.setUpdateChannel (" beta" );
122- standardConfigFile.setOverrideServerUrl (" http://example.de" );
123- standardConfigFile.setOverrideLocalDir (" A" );
124- standardConfigFile.setVfsEnabled (true );
125- standardConfigFile.setProxyType (0 );
126- standardConfigFile.setVfsEnabled (true );
127- standardConfigFile.setUseUploadLimit (0 );
128- standardConfigFile.setUploadLimit (1 );
129- standardConfigFile.setUseDownloadLimit (0 );
130- standardConfigFile.setUseDownloadLimit (1 );
131- standardConfigFile.setNewBigFolderSizeLimit (true , 500 );
132- standardConfigFile.setNotifyExistingFoldersOverLimit (true );
133- standardConfigFile.setStopSyncingExistingFoldersOverLimit (true );
134- standardConfigFile.setConfirmExternalStorage (true );
135- standardConfigFile.setMoveToTrash (true );
136- standardConfigFile.setForceLoginV2 (true );
137- standardConfigFile.setPromptDeleteFiles (true );
138- standardConfigFile.setDeleteFilesThreshold (1 );
139- standardConfigFile.setMonoIcons (true );
140- standardConfigFile.setCrashReporter (true );
141- standardConfigFile.setAutomaticLogDir (true );
142- standardConfigFile.setLogDir (temporaryDir.path ());
143- standardConfigFile.setLogDebug (true );
144- standardConfigFile.setLogExpire (72 );
145- standardConfigFile.setLogFlush (true );
146- standardConfigFile.setCertificatePath (temporaryDir.path ());
147- standardConfigFile.setCertificatePasswd (" 123456" );
148- standardConfigFile.setLaunchOnSystemStartup (true );
149- standardConfigFile.setServerHasValidSubscription (true );
150- standardConfigFile.setDesktopEnterpriseChannel (" stable" );
151- standardConfigFile.setLanguage (" pt" );
99+ void setupConfigFileSettings () {
100+ QSettings settings (configFile.configFile (), QSettings::IniFormat);
101+ configFile.setClientVersionString (" 3.0.0" );
102+ configFile.setOptionalServerNotifications (true );
103+ configFile.setShowChatNotifications (true );
104+ configFile.setShowCallNotifications (true );
105+ configFile.setShowInExplorerNavigationPane (true );
106+ configFile.setShowInExplorerNavigationPane (true );
107+ configFile.setRemotePollInterval (std::chrono::milliseconds (1000 ));
108+ configFile.setAutoUpdateCheck (true , QString ());
109+ configFile.setUpdateChannel (" beta" );
110+ configFile.setOverrideServerUrl (" http://example.de" );
111+ configFile.setOverrideLocalDir (" A" );
112+ configFile.setVfsEnabled (true );
113+ configFile.setProxyType (0 );
114+ configFile.setVfsEnabled (true );
115+ configFile.setUseUploadLimit (0 );
116+ configFile.setUploadLimit (1 );
117+ configFile.setUseDownloadLimit (0 );
118+ configFile.setUseDownloadLimit (1 );
119+ configFile.setNewBigFolderSizeLimit (true , 500 );
120+ configFile.setNotifyExistingFoldersOverLimit (true );
121+ configFile.setStopSyncingExistingFoldersOverLimit (true );
122+ configFile.setConfirmExternalStorage (true );
123+ configFile.setMoveToTrash (true );
124+ configFile.setForceLoginV2 (true );
125+ configFile.setPromptDeleteFiles (true );
126+ configFile.setDeleteFilesThreshold (1 );
127+ configFile.setMonoIcons (true );
128+ configFile.setCrashReporter (true );
129+ configFile.setAutomaticLogDir (true );
130+ configFile.setLogDir (temporaryDir.path ());
131+ configFile.setLogDebug (true );
132+ configFile.setLogExpire (72 );
133+ configFile.setLogFlush (true );
134+ configFile.setCertificatePath (temporaryDir.path ());
135+ configFile.setCertificatePasswd (" 123456" );
136+ configFile.setLaunchOnSystemStartup (true );
137+ configFile.setServerHasValidSubscription (true );
138+ configFile.setDesktopEnterpriseChannel (" stable" );
139+ configFile.setLanguage (" pt" );
152140 settings.sync ();
153-
154- const auto standardConfig = QString (standardConfigFolder + " /" + QString (standardAppName).toLower () + " .cfg" );;
155- QVERIFY (QFile::rename (standardConfigFile.configFile (), standardConfig));
156-
157- QVERIFY (QDir (temporaryDir.path ()).mkpath (legacyAppName));
158- const auto legacyConfigFolder = QString (temporaryDir.path () + " /" + legacyAppName);
159- const auto legacyConfigFilePath = QString (legacyConfigFolder + " /" + QString (legacyAppName).toLower () + " .cfg" );
160- QFile legacyConfigFile (legacyConfigFilePath);
161- QVERIFY (legacyConfigFile.open (QFile::WriteOnly));
162- QCOMPARE_GE (legacyConfigFile.write (legacyAppConfigContent, qstrlen (legacyAppConfigContent)), 0 );
163- legacyConfigFile.close ();
164141 }
165142
143+ // void createLegacyConfig()
144+ // {
145+ // QTemporaryDir temporaryDir;
146+ // QVERIFY(QDir(temporaryDir.path()).mkpath(standardAppName));
147+ // const auto standardConfigFolder = QString(temporaryDir.path() + "/" + standardAppName);
148+ // ConfigFile::setConfDir(standardConfigFolder);
149+
150+ // ConfigFile standardConfigFile;
151+ // QSettings settings(standardConfigFile.configFile(), QSettings::IniFormat);
152+ // standardConfigFile.setClientVersionString("3.0.0");
153+ // QScopedPointer<FakeQNAM> fakeQnam(new FakeQNAM({}));
154+
155+ // OCC::AccountPtr account = OCC::Account::create();
156+ // account->setDavUser("user");
157+ // account->setDavDisplayName("Nextcloud user");
158+ // account->setProxyType(QNetworkProxy::ProxyType::HttpProxy);
159+ // account->setProxyUser("proxyuser");
160+ // account->setDownloadLimit(120);
161+ // account->setUploadLimit(120);
162+ // account->setDownloadLimitSetting(OCC::Account::AccountNetworkTransferLimitSetting::ManualLimit);
163+ // account->setServerVersion("30");
164+ // account->setCredentials(new FakeCredentials{fakeQnam.data()});
165+ // account->setUrl(QUrl(("http://example.de")));
166+ // const auto accountState = OCC::AccountManager::instance()->addAccount(account);
167+ // OCC::AccountManager::instance()->saveAccount(accountState->account());
168+
169+ // standardConfigFile.setOptionalServerNotifications(true);
170+ // standardConfigFile.setShowChatNotifications(true);
171+ // standardConfigFile.setShowCallNotifications(true);
172+ // standardConfigFile.setShowInExplorerNavigationPane(true);
173+ // standardConfigFile.setShowInExplorerNavigationPane(true);
174+ // standardConfigFile.setRemotePollInterval(std::chrono::milliseconds(1000));
175+ // standardConfigFile.setAutoUpdateCheck(true, QString());
176+ // standardConfigFile.setUpdateChannel("beta");
177+ // standardConfigFile.setOverrideServerUrl("http://example.de");
178+ // standardConfigFile.setOverrideLocalDir("A");
179+ // standardConfigFile.setVfsEnabled(true);
180+ // standardConfigFile.setProxyType(0);
181+ // standardConfigFile.setVfsEnabled(true);
182+ // standardConfigFile.setUseUploadLimit(0);
183+ // standardConfigFile.setUploadLimit(1);
184+ // standardConfigFile.setUseDownloadLimit(0);
185+ // standardConfigFile.setUseDownloadLimit(1);
186+ // standardConfigFile.setNewBigFolderSizeLimit(true, 500);
187+ // standardConfigFile.setNotifyExistingFoldersOverLimit(true);
188+ // standardConfigFile.setStopSyncingExistingFoldersOverLimit(true);
189+ // standardConfigFile.setConfirmExternalStorage(true);
190+ // standardConfigFile.setMoveToTrash(true);
191+ // standardConfigFile.setForceLoginV2(true);
192+ // standardConfigFile.setPromptDeleteFiles(true);
193+ // standardConfigFile.setDeleteFilesThreshold(1);
194+ // standardConfigFile.setMonoIcons(true);
195+ // standardConfigFile.setCrashReporter(true);
196+ // standardConfigFile.setAutomaticLogDir(true);
197+ // standardConfigFile.setLogDir(temporaryDir.path());
198+ // standardConfigFile.setLogDebug(true);
199+ // standardConfigFile.setLogExpire(72);
200+ // standardConfigFile.setLogFlush(true);
201+ // standardConfigFile.setCertificatePath(temporaryDir.path());
202+ // standardConfigFile.setCertificatePasswd("123456");
203+ // standardConfigFile.setLaunchOnSystemStartup(true);
204+ // standardConfigFile.setServerHasValidSubscription(true);
205+ // standardConfigFile.setDesktopEnterpriseChannel("stable");
206+ // standardConfigFile.setLanguage("pt");
207+ // settings.sync();
208+
209+ // const auto standardConfig = QString(standardConfigFolder + "/" + QString(standardAppName).toLower() + ".cfg");;
210+ // QVERIFY(QFile::rename(standardConfigFile.configFile(), standardConfig));
211+
212+ // QVERIFY(QDir(temporaryDir.path()).mkpath(legacyAppName));
213+ // const auto legacyConfigFolder = QString(temporaryDir.path() + "/" + legacyAppName);
214+ // const auto legacyConfigFilePath = QString(legacyConfigFolder + "/" + QString(legacyAppName).toLower() + ".cfg");
215+ // QFile legacyConfigFile(legacyConfigFilePath);
216+ // QVERIFY(legacyConfigFile.open(QFile::WriteOnly));
217+ // QCOMPARE_GE(legacyConfigFile.write(legacyAppConfigContent, qstrlen(legacyAppConfigContent)), 0);
218+ // legacyConfigFile.close();
219+ // }
220+
166221 void initTestCase ()
167222 {
168223 OCC::Logger::instance ()->setLogFlush (true );
169224 OCC::Logger::instance ()->setLogDebug (true );
170225
171226 QStandardPaths::setTestModeEnabled (true );
172-
173- createLegacyConfig ();
174227 }
175228
176229
@@ -179,9 +232,29 @@ private slots:
179232 // Upgrade
180233 // Downgrade
181234 // Migration with --confdir
182-
183- void testLeaveShare ()
235+ void testUpgradeWithConfDir ()
184236 {
237+ // create Nextcloud config with older version
238+ QVERIFY (QDir (temporaryDir.path ()).mkpath (standardAppName));
239+ const auto standardConfigFolder = QString (temporaryDir.path () + " /" + standardAppName);
240+ ConfigFile::setConfDir (standardConfigFolder);
241+ setupConfigFileSettings ();
242+ setupConfigFileAccount ();
243+
244+
245+ // QTemporaryDir temporaryDir;
246+ // int argc = 5;
247+ // QByteArray appName = QString(QCoreApplication::applicationDirPath() + "/NextcloudDev").toLatin1();
248+ // char *arg0 = appName.data();
249+ // char arg1[] = "-platform";
250+ // char arg2[] = "offscreen";
251+ // char arg3[] = "--confdir";
252+ // QByteArray temporaryDirPath = QString(temporaryDir.path()).toLatin1();
253+ // char *arg4 = temporaryDirPath.data();
254+ // char *argv[] = { arg0, arg1, arg2, arg3, arg4, nullptr };
255+ // OCC::Application app(argc, argv);
256+ // app.setApplicationName("Nextcloud");
257+
185258 // QTemporaryDir dir;
186259 // ConfigFile::setConfDir(dir.path()); // we don't want to pollute the user's config file
187260
@@ -277,7 +350,6 @@ private slots:
277350 // OCC::AccountManager::instance()->deleteAccount(accountState);
278351 }
279352
280-
281353};
282354
283355QTEST_GUILESS_MAIN (TestMigration)
0 commit comments