// SPDX-License-Identifier: GPL-2.0 #include "testqPrefCloudStorage.h" #include "core/pref.h" #include "core/qthelper.h" #include "core/settings/qPref.h" #include 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_base_url = copy_qstring("new url"); prefs.cloud_git_url = copy_qstring("new again url"); prefs.cloud_storage_email = copy_qstring("myEmail"); prefs.cloud_storage_email_encoded = copy_qstring("encodedMyEMail"); prefs.cloud_storage_newpassword = copy_qstring("secret"); prefs.cloud_storage_password = copy_qstring("more secret"); prefs.cloud_storage_pin = copy_qstring("a pin"); prefs.cloud_timeout = 117; prefs.cloud_verification_status = qPref::CS_NOCLOUD; prefs.git_local_only = true; prefs.save_password_local = true; prefs.save_userid_local = true; prefs.userid = copy_qstring("my user"); QCOMPARE(tst->cloud_base_url(), QString(prefs.cloud_base_url)); QCOMPARE(tst->cloud_git_url(), QString(prefs.cloud_git_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_newpassword(), QString(prefs.cloud_storage_newpassword)); 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->git_local_only(), prefs.git_local_only); QCOMPARE(tst->save_password_local(), prefs.save_password_local); QCOMPARE(tst->save_userid_local(), prefs.save_userid_local); QCOMPARE(tst->userid(), QString(prefs.userid)); } void TestQPrefCloudStorage::test_set_struct() { // Test set func -> struct pref auto tst = qPrefCloudStorage::instance(); 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_newpassword("t2 pass1"); tst->set_cloud_storage_password("t2 pass2"); tst->set_cloud_storage_pin("t2 pin"); tst->set_cloud_timeout(123); tst->set_cloud_verification_status(qPref::CS_VERIFIED); tst->set_git_local_only(false); tst->set_save_password_local(false); tst->set_save_userid_local(false); tst->set_userid("t2 user"); 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_newpassword), QString("t2 pass1")); 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)qPref::CS_VERIFIED); QCOMPARE(prefs.git_local_only, false); QCOMPARE(prefs.save_password_local, false); QCOMPARE(prefs.save_userid_local, false); QCOMPARE(QString(prefs.userid), QString("t2 user")); // remark is set with set_base_url QCOMPARE(QString(prefs.cloud_git_url), QString("t2 base/git")); } void TestQPrefCloudStorage::test_set_load_struct() { // test set func -> load -> struct pref auto tst = qPrefCloudStorage::instance(); tst->set_cloud_base_url("t3 base"); tst->set_cloud_storage_email("t3 email"); tst->set_cloud_storage_email_encoded("t3 email2"); tst->set_cloud_storage_newpassword("t3 pass1"); tst->set_save_password_local(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(qPref::CS_NOCLOUD); tst->set_git_local_only(true); tst->set_save_userid_local(true); tst->set_userid("t3 user"); prefs.cloud_base_url = copy_qstring("error1"); prefs.cloud_git_url = copy_qstring("error1"); prefs.cloud_storage_email = copy_qstring("error1"); prefs.cloud_storage_email_encoded = copy_qstring("error1"); prefs.cloud_storage_newpassword = copy_qstring("my new password"); prefs.cloud_storage_password = copy_qstring("error1"); prefs.cloud_storage_pin = copy_qstring("error1"); prefs.cloud_timeout = 324; prefs.cloud_verification_status = qPref::CS_VERIFIED; prefs.git_local_only = false; prefs.save_password_local = false; prefs.save_userid_local = false; prefs.userid = copy_qstring("error1"); tst->load(); 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)qPref::CS_NOCLOUD); QCOMPARE(prefs.git_local_only, true); QCOMPARE(prefs.save_password_local, true); QCOMPARE(prefs.save_userid_local, true); QCOMPARE(QString(prefs.userid), QString("t3 user")); // remark is set with set_base_url QCOMPARE(QString(prefs.cloud_git_url), QString("t3 base/git")); // warning new password is not saved on disk QCOMPARE(QString(prefs.cloud_storage_newpassword), QString("my new password")); } void TestQPrefCloudStorage::test_struct_disk() { // test struct prefs -> disk auto tst = qPrefCloudStorage::instance(); prefs.cloud_base_url = copy_qstring("t4 base"); prefs.cloud_storage_email = copy_qstring("t4 email"); prefs.cloud_storage_email_encoded = copy_qstring("t4 email2"); prefs.cloud_storage_newpassword = copy_qstring("t4 pass1"); prefs.save_password_local = 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 = qPref::CS_VERIFIED; prefs.git_local_only = true; prefs.save_userid_local = true; prefs.userid = copy_qstring("t4 user"); tst->sync(); prefs.cloud_base_url = copy_qstring("error1"); prefs.cloud_git_url = copy_qstring("error1"); prefs.cloud_storage_email = copy_qstring("error1"); prefs.cloud_storage_email_encoded = copy_qstring("error1"); prefs.cloud_storage_newpassword = copy_qstring("my new password"); prefs.cloud_storage_password = copy_qstring("error1"); prefs.cloud_storage_pin = copy_qstring("error1"); prefs.cloud_timeout = 324; prefs.cloud_verification_status = qPref::CS_VERIFIED; prefs.git_local_only = false; prefs.save_password_local = false; prefs.save_userid_local = false; prefs.userid = copy_qstring("error1"); tst->load(); 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)qPref::CS_VERIFIED); QCOMPARE(prefs.git_local_only, true); QCOMPARE(prefs.save_password_local, true); QCOMPARE(prefs.save_userid_local, true); QCOMPARE(QString(prefs.userid), QString("t4 user")); // remark is set with set_base_url QCOMPARE(QString(prefs.cloud_git_url), QString("t4 base/git")); // warning new password not stored on disk QCOMPARE(QString(prefs.cloud_storage_newpassword), QString("my new password")); } void TestQPrefCloudStorage::test_multiple() { // test multiple instances have the same information prefs.userid = copy_qstring("my user"); auto tst_direct = new qPrefCloudStorage; prefs.cloud_timeout = 25; auto tst = qPrefCloudStorage::instance(); QCOMPARE(tst->cloud_timeout(), tst_direct->cloud_timeout()); QCOMPARE(tst->userid(), tst_direct->userid()); QCOMPARE(tst_direct->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"); TEST(cloud->cloud_base_url(), QStringLiteral("test_one")); cloud->set_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_git_local_only(true); TEST(cloud->git_local_only(), true); cloud->set_git_local_only(false); TEST(cloud->git_local_only(), false); // Why there's new password and password on the prefs? cloud->set_cloud_storage_newpassword("ABCD"); TEST(cloud->cloud_storage_newpassword(), QStringLiteral("ABCD")); cloud->set_cloud_storage_newpassword("ABCDE"); TEST(cloud->cloud_storage_newpassword(), QStringLiteral("ABCDE")); 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_save_password_local(true); TEST(cloud->save_password_local(), true); cloud->set_save_password_local(false); TEST(cloud->save_password_local(), false); cloud->set_save_userid_local(1); TEST(cloud->save_userid_local(), true); cloud->set_save_userid_local(0); TEST(cloud->save_userid_local(), false); cloud->set_userid("Tomaz"); TEST(cloud->userid(), QStringLiteral("Tomaz")); cloud->set_userid("Zamot"); TEST(cloud->userid(), QStringLiteral("Zamot")); 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_loadFromCloud_var() { auto cloud = qPrefCloudStorage::instance(); cloud->set_loadFromCloud("mail1", true); cloud->set_loadFromCloud("mail2", false); cloud->set_loadFromCloud("mail3", true); QCOMPARE(cloud->loadFromCloud("mail1"), true); QCOMPARE(cloud->loadFromCloud("mail2"), false); QCOMPARE(cloud->loadFromCloud("mail3"), true); QCOMPARE(cloud->loadFromCloud("mail_unknown"), false); } QTEST_MAIN(TestQPrefCloudStorage)