mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-11 03:21:29 +00:00
fe074ccad1
The code assumes that prefs.cloud_base_url is non NULL. Allowing that to be NULL makes no sense during normal operation of the app. Yet, most of the tests don't initialize the prefs at all. Making things worse, if we do correctly initialize the prefs (so as to reasonably approximate the behavior when running the app), things break because some of the reference outputs assume that the prefs are unset. This deserves fixing. For now, simply make sure that cloud_base_url is set for all the tests that try to parse files. Additionally, the semantics how cloud_base_url is saved to disk have changed, so adjust the test for those prefs accordingly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
250 lines
9.9 KiB
C++
250 lines
9.9 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "testqPrefCloudStorage.h"
|
|
|
|
#include "core/pref.h"
|
|
#include "core/qthelper.h"
|
|
#include "core/settings/qPrefCloudStorage.h"
|
|
|
|
#include <QTest>
|
|
#include <QSignalSpy>
|
|
|
|
void TestQPrefCloudStorage::initTestCase()
|
|
{
|
|
QCoreApplication::setOrganizationName("Subsurface");
|
|
QCoreApplication::setOrganizationDomain("subsurface.hohndel.org");
|
|
QCoreApplication::setApplicationName("SubsurfaceTestQPrefCloudStorage");
|
|
}
|
|
|
|
void TestQPrefCloudStorage::test_struct_get()
|
|
{
|
|
// Test struct pref -> get func.
|
|
|
|
auto tst = qPrefCloudStorage::instance();
|
|
|
|
prefs.cloud_auto_sync = true;
|
|
prefs.cloud_base_url = copy_qstring("new url");
|
|
prefs.cloud_storage_email = copy_qstring("myEmail");
|
|
prefs.cloud_storage_email_encoded = copy_qstring("encodedMyEMail");
|
|
prefs.cloud_storage_password = copy_qstring("more secret");
|
|
prefs.cloud_storage_pin = copy_qstring("a pin");
|
|
prefs.cloud_timeout = 117;
|
|
prefs.cloud_verification_status = qPrefCloudStorage::CS_NOCLOUD;
|
|
prefs.save_password_local = true;
|
|
|
|
QCOMPARE(tst->cloud_auto_sync(), prefs.cloud_auto_sync);
|
|
QCOMPARE(tst->cloud_base_url(), QString(prefs.cloud_base_url));
|
|
QCOMPARE(tst->cloud_storage_email(), QString(prefs.cloud_storage_email));
|
|
QCOMPARE(tst->cloud_storage_email_encoded(), QString(prefs.cloud_storage_email_encoded));
|
|
QCOMPARE(tst->cloud_storage_password(), QString(prefs.cloud_storage_password));
|
|
QCOMPARE(tst->cloud_storage_pin(), QString(prefs.cloud_storage_pin));
|
|
QCOMPARE(tst->cloud_timeout(), (int)prefs.cloud_timeout);
|
|
QCOMPARE(tst->cloud_verification_status(), (int)prefs.cloud_verification_status);
|
|
QCOMPARE(tst->save_password_local(), prefs.save_password_local);
|
|
}
|
|
|
|
void TestQPrefCloudStorage::test_set_struct()
|
|
{
|
|
// Test set func -> struct pref
|
|
|
|
auto tst = qPrefCloudStorage::instance();
|
|
|
|
tst->set_cloud_auto_sync(false);
|
|
tst->set_cloud_base_url("t2 base");
|
|
tst->set_cloud_storage_email("t2 email");
|
|
tst->set_cloud_storage_email_encoded("t2 email2");
|
|
tst->set_cloud_storage_password("t2 pass2");
|
|
tst->set_cloud_storage_pin("t2 pin");
|
|
tst->set_cloud_timeout(123);
|
|
tst->set_cloud_verification_status(qPrefCloudStorage::CS_VERIFIED);
|
|
tst->set_save_password_local(false);
|
|
|
|
QCOMPARE(prefs.cloud_auto_sync, false);
|
|
QCOMPARE(QString(prefs.cloud_base_url), QString("t2 base"));
|
|
QCOMPARE(QString(prefs.cloud_storage_email), QString("t2 email"));
|
|
QCOMPARE(QString(prefs.cloud_storage_email_encoded), QString("t2 email2"));
|
|
QCOMPARE(QString(prefs.cloud_storage_password), QString("t2 pass2"));
|
|
QCOMPARE(QString(prefs.cloud_storage_pin), QString("t2 pin"));
|
|
QCOMPARE((int)prefs.cloud_timeout, 123);
|
|
QCOMPARE((int)prefs.cloud_verification_status, (int)qPrefCloudStorage::CS_VERIFIED);
|
|
QCOMPARE(prefs.save_password_local, false);
|
|
}
|
|
|
|
void TestQPrefCloudStorage::test_set_load_struct()
|
|
{
|
|
// test set func -> load -> struct pref
|
|
|
|
auto tst = qPrefCloudStorage::instance();
|
|
|
|
tst->set_cloud_base_url("t3 base");
|
|
tst->store_cloud_base_url("t3 base"); // the base URL is no longer automatically saved to disk
|
|
tst->set_cloud_storage_email("t3 email");
|
|
tst->set_cloud_storage_email_encoded("t3 email2");
|
|
tst->set_save_password_local(true);
|
|
tst->set_cloud_auto_sync(true);
|
|
tst->set_cloud_storage_password("t3 pass2");
|
|
tst->set_cloud_storage_pin("t3 pin");
|
|
tst->set_cloud_timeout(321);
|
|
tst->set_cloud_verification_status(qPrefCloudStorage::CS_NOCLOUD);
|
|
|
|
prefs.cloud_auto_sync = false;
|
|
prefs.cloud_base_url = copy_qstring("error1");
|
|
prefs.cloud_storage_email = copy_qstring("error1");
|
|
prefs.cloud_storage_email_encoded = copy_qstring("error1");
|
|
prefs.cloud_storage_password = copy_qstring("error1");
|
|
prefs.cloud_storage_pin = copy_qstring("error1");
|
|
prefs.cloud_timeout = 324;
|
|
prefs.cloud_verification_status = qPrefCloudStorage::CS_VERIFIED;
|
|
prefs.save_password_local = false;
|
|
|
|
tst->load();
|
|
QCOMPARE(prefs.cloud_auto_sync, true);
|
|
QCOMPARE(QString(prefs.cloud_base_url), QString("t3 base"));
|
|
QCOMPARE(QString(prefs.cloud_storage_email), QString("t3 email"));
|
|
QCOMPARE(QString(prefs.cloud_storage_email_encoded), QString("t3 email2"));
|
|
QCOMPARE(QString(prefs.cloud_storage_password), QString("t3 pass2"));
|
|
QCOMPARE(QString(prefs.cloud_storage_pin), QString("t3 pin"));
|
|
QCOMPARE((int)prefs.cloud_timeout, 321);
|
|
QCOMPARE((int)prefs.cloud_verification_status, (int)qPrefCloudStorage::CS_NOCLOUD);
|
|
QCOMPARE(prefs.save_password_local, true);
|
|
}
|
|
|
|
void TestQPrefCloudStorage::test_struct_disk()
|
|
{
|
|
// test struct prefs -> disk
|
|
|
|
auto tst = qPrefCloudStorage::instance();
|
|
|
|
prefs.cloud_base_url = copy_qstring("t4 base");
|
|
tst->store_cloud_base_url("t4 base"); // the base URL is no longer automatically saved to disk
|
|
prefs.cloud_storage_email = copy_qstring("t4 email");
|
|
prefs.cloud_storage_email_encoded = copy_qstring("t4 email2");
|
|
prefs.save_password_local = true;
|
|
prefs.cloud_auto_sync = true;
|
|
prefs.cloud_storage_password = copy_qstring("t4 pass2");
|
|
prefs.cloud_storage_pin = copy_qstring("t4 pin");
|
|
prefs.cloud_timeout = 123;
|
|
prefs.cloud_verification_status = qPrefCloudStorage::CS_VERIFIED;
|
|
|
|
tst->sync();
|
|
|
|
prefs.cloud_auto_sync = false;
|
|
prefs.cloud_base_url = copy_qstring("error1");
|
|
prefs.cloud_storage_email = copy_qstring("error1");
|
|
prefs.cloud_storage_email_encoded = copy_qstring("error1");
|
|
prefs.cloud_storage_password = copy_qstring("error1");
|
|
prefs.cloud_storage_pin = copy_qstring("error1");
|
|
prefs.cloud_timeout = 324;
|
|
prefs.cloud_verification_status = qPrefCloudStorage::CS_VERIFIED;
|
|
prefs.save_password_local = false;
|
|
|
|
tst->load();
|
|
|
|
QCOMPARE(prefs.cloud_auto_sync, true);
|
|
QCOMPARE(QString(prefs.cloud_base_url), QString("t4 base"));
|
|
QCOMPARE(QString(prefs.cloud_storage_email), QString("t4 email"));
|
|
QCOMPARE(QString(prefs.cloud_storage_email_encoded), QString("t4 email2"));
|
|
QCOMPARE(QString(prefs.cloud_storage_password), QString("t4 pass2"));
|
|
QCOMPARE(QString(prefs.cloud_storage_pin), QString("t4 pin"));
|
|
QCOMPARE((int)prefs.cloud_timeout, 123);
|
|
QCOMPARE((int)prefs.cloud_verification_status, (int)qPrefCloudStorage::CS_VERIFIED);
|
|
QCOMPARE(prefs.save_password_local, true);
|
|
}
|
|
|
|
void TestQPrefCloudStorage::test_multiple()
|
|
{
|
|
// test multiple instances have the same information
|
|
|
|
prefs.cloud_timeout = 25;
|
|
auto tst = qPrefCloudStorage::instance();
|
|
|
|
QCOMPARE(tst->cloud_timeout(), qPrefCloudStorage::cloud_timeout());
|
|
QCOMPARE(qPrefCloudStorage::cloud_timeout(), 25);
|
|
}
|
|
|
|
#define TEST(METHOD, VALUE) \
|
|
QCOMPARE(METHOD, VALUE); \
|
|
cloud->sync(); \
|
|
cloud->load(); \
|
|
QCOMPARE(METHOD, VALUE);
|
|
|
|
void TestQPrefCloudStorage::test_oldPreferences()
|
|
{
|
|
auto cloud = qPrefCloudStorage::instance();
|
|
|
|
cloud->set_cloud_base_url("test_one");
|
|
cloud->store_cloud_base_url("test_one");
|
|
TEST(cloud->cloud_base_url(), QStringLiteral("test_one"));
|
|
cloud->set_cloud_base_url("test_two");
|
|
cloud->store_cloud_base_url("test_two");
|
|
TEST(cloud->cloud_base_url(), QStringLiteral("test_two"));
|
|
|
|
cloud->set_cloud_storage_email("tomaz@subsurface.com");
|
|
TEST(cloud->cloud_storage_email(), QStringLiteral("tomaz@subsurface.com"));
|
|
cloud->set_cloud_storage_email("tomaz@gmail.com");
|
|
TEST(cloud->cloud_storage_email(), QStringLiteral("tomaz@gmail.com"));
|
|
|
|
cloud->set_cloud_storage_password("ABCDE");
|
|
TEST(cloud->cloud_storage_password(), QStringLiteral("ABCDE"));
|
|
cloud->set_cloud_storage_password("ABCABC");
|
|
TEST(cloud->cloud_storage_password(), QStringLiteral("ABCABC"));
|
|
|
|
cloud->set_cloud_auto_sync(true);
|
|
TEST(cloud->cloud_auto_sync(), true);
|
|
cloud->set_cloud_auto_sync(false);
|
|
TEST(cloud->cloud_auto_sync(), false);
|
|
|
|
cloud->set_save_password_local(true);
|
|
TEST(cloud->save_password_local(), true);
|
|
cloud->set_save_password_local(false);
|
|
TEST(cloud->save_password_local(), false);
|
|
|
|
cloud->set_cloud_verification_status(0);
|
|
TEST(cloud->cloud_verification_status(), 0);
|
|
cloud->set_cloud_verification_status(1);
|
|
TEST(cloud->cloud_verification_status(), 1);
|
|
}
|
|
|
|
void TestQPrefCloudStorage::test_signals()
|
|
{
|
|
QSignalSpy spy1(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_base_urlChanged);
|
|
QSignalSpy spy2(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_emailChanged);
|
|
QSignalSpy spy3(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_email_encodedChanged);
|
|
QSignalSpy spy4(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_passwordChanged);
|
|
QSignalSpy spy5(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_storage_pinChanged);
|
|
QSignalSpy spy6(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_timeoutChanged);
|
|
QSignalSpy spy7(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_verification_statusChanged);
|
|
QSignalSpy spy9(qPrefCloudStorage::instance(), &qPrefCloudStorage::save_password_localChanged);
|
|
QSignalSpy spy10(qPrefCloudStorage::instance(), &qPrefCloudStorage::cloud_auto_syncChanged);
|
|
|
|
qPrefCloudStorage::set_cloud_base_url("signal url");
|
|
qPrefCloudStorage::set_cloud_storage_email("signal myEmail");
|
|
qPrefCloudStorage::set_cloud_storage_email_encoded("signal encodedMyEMail");
|
|
qPrefCloudStorage::set_cloud_storage_password("signal more secret");
|
|
qPrefCloudStorage::set_cloud_storage_pin("signal a pin");
|
|
qPrefCloudStorage::set_cloud_timeout(11);
|
|
qPrefCloudStorage::set_cloud_verification_status(qPrefCloudStorage::CS_VERIFIED);
|
|
qPrefCloudStorage::set_save_password_local(true);
|
|
qPrefCloudStorage::set_cloud_auto_sync(true);
|
|
|
|
QCOMPARE(spy1.count(), 1);
|
|
QCOMPARE(spy2.count(), 1);
|
|
QCOMPARE(spy3.count(), 1);
|
|
QCOMPARE(spy4.count(), 1);
|
|
QCOMPARE(spy5.count(), 1);
|
|
QCOMPARE(spy6.count(), 1);
|
|
QCOMPARE(spy7.count(), 1);
|
|
QCOMPARE(spy9.count(), 1);
|
|
QCOMPARE(spy10.count(), 1);
|
|
|
|
QVERIFY(spy1.takeFirst().at(0).toString() == "signal url");
|
|
QVERIFY(spy2.takeFirst().at(0).toString() == "signal myEmail");
|
|
QVERIFY(spy3.takeFirst().at(0).toString() == "signal encodedMyEMail");
|
|
QVERIFY(spy4.takeFirst().at(0).toString() == "signal more secret");
|
|
QVERIFY(spy5.takeFirst().at(0).toString() == "signal a pin");
|
|
QVERIFY(spy6.takeFirst().at(0).toInt() == 11);
|
|
QVERIFY(spy7.takeFirst().at(0).toInt() == qPrefCloudStorage::CS_VERIFIED);
|
|
QVERIFY(spy9.takeFirst().at(0).toBool() == true);
|
|
QVERIFY(spy10.takeFirst().at(0).toBool() == true);
|
|
}
|
|
|
|
QTEST_MAIN(TestQPrefCloudStorage)
|