summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-08-24 12:15:45 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-08-25 10:43:57 -0700
commit092abe9b393d7cfdb1cf1d8012860591593210f3 (patch)
treef7c63246e0d496ddcc9a47dfb14589048901e327
parent420afeef570cd4989dac60ac6376929ca1cc9a03 (diff)
downloadsubsurface-092abe9b393d7cfdb1cf1d8012860591593210f3.tar.gz
Cloud storage: add test for simple save / load from our test account
This will fail if the proxy settings of the user running the test are incorrect. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--tests/testgitstorage.cpp62
-rw-r--r--tests/testgitstorage.h1
2 files changed, 63 insertions, 0 deletions
diff --git a/tests/testgitstorage.cpp b/tests/testgitstorage.cpp
index abb4b2c59..08dbcaaa0 100644
--- a/tests/testgitstorage.cpp
+++ b/tests/testgitstorage.cpp
@@ -3,8 +3,12 @@
#include "divelist.h"
#include "file.h"
#include "git2.h"
+#include "prefs-macros.h"
#include <QDir>
#include <QTextStream>
+#include <QNetworkProxy>
+#include <QSettings>
+#include <QDebug>
void TestGitStorage::testGitStorageLocal()
{
@@ -34,4 +38,62 @@ void TestGitStorage::testGitStorageLocal()
clear_dive_file_data();
}
+void TestGitStorage::testGitStorageCloud()
+{
+ // test writing and reading back from cloud storage
+ // first, setup the preferences an proxy information
+ prefs = default_prefs;
+ QCoreApplication::setOrganizationName("Subsurface");
+ QCoreApplication::setOrganizationDomain("subsurface.hohndel.org");
+ QCoreApplication::setApplicationName("Subsurface");
+ QSettings s;
+ QVariant v;
+ s.beginGroup("Network");
+ GET_INT_DEF("proxy_type", proxy_type, QNetworkProxy::DefaultProxy);
+ GET_TXT("proxy_host", proxy_host);
+ GET_INT("proxy_port", proxy_port);
+ GET_BOOL("proxy_auth", proxy_auth);
+ GET_TXT("proxy_user", proxy_user);
+ GET_TXT("proxy_pass", proxy_pass);
+ s.endGroup();
+ s.beginGroup("CloudStorage");
+ GET_TXT("cloud_base_url", cloud_base_url);
+ QString gitUrl(prefs.cloud_base_url);
+ if (gitUrl.right(1) != "/")
+ gitUrl += "/";
+ prefs.cloud_git_url = strdup(qPrintable(gitUrl + "git"));
+ s.endGroup();
+ prefs.cloud_storage_email_encoded = strdup("ssrftest@hohndel.org");
+ prefs.cloud_storage_password = strdup("geheim");
+ prefs.cloud_background_sync = true;
+ QNetworkProxy proxy;
+ proxy.setType(QNetworkProxy::ProxyType(prefs.proxy_type));
+ proxy.setHostName(prefs.proxy_host);
+ proxy.setPort(prefs.proxy_port);
+ if (prefs.proxy_auth) {
+ proxy.setUser(prefs.proxy_user);
+ proxy.setPassword(prefs.proxy_pass);
+ }
+ QNetworkProxy::setApplicationProxy(proxy);
+
+ // now connect to the ssrftest repository on the cloud server
+ // and repeat the same test as before with the local git storage
+ QString cloudTestRepo("https://cloud.subsurface-divelog.org/git/ssrftest@hohndel.org[ssrftest@hohndel.org]");
+ QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/SampleDivesV2.ssrf"), 0);
+ QCOMPARE(save_dives(qPrintable(cloudTestRepo)), 0);
+ clear_dive_file_data();
+ QCOMPARE(parse_file(qPrintable(cloudTestRepo)), 0);
+ QCOMPARE(save_dives("./SampleDivesV3viacloud.ssrf"), 0);
+ QFile org("./SampleDivesV3.ssrf");
+ org.open(QFile::ReadOnly);
+ QFile out("./SampleDivesV3viacloud.ssrf");
+ out.open(QFile::ReadOnly);
+ QTextStream orgS(&org);
+ QTextStream outS(&out);
+ QString readin = orgS.readAll();
+ QString written = outS.readAll();
+ QCOMPARE(readin, written);
+ clear_dive_file_data();
+}
+
QTEST_MAIN(TestGitStorage)
diff --git a/tests/testgitstorage.h b/tests/testgitstorage.h
index b182d4a22..a701363e9 100644
--- a/tests/testgitstorage.h
+++ b/tests/testgitstorage.h
@@ -8,6 +8,7 @@ class TestGitStorage : public QObject
Q_OBJECT
private slots:
void testGitStorageLocal();
+ void testGitStorageCloud();
};
#endif // TESTGITSTORAGE_H