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("*****@*****.**"); TEST(cloud->cloud_storage_email(), QStringLiteral("*****@*****.**")); cloud->set_cloud_storage_email("*****@*****.**"); TEST(cloud->cloud_storage_email(), QStringLiteral("*****@*****.**")); 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_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_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_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_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_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 PreferencesNetwork::syncSettings() { auto cloud = qPrefCloudStorage::instance(); auto proxy = qPrefProxy::instance(); proxy->set_proxy_type(ui->proxyType->itemData(ui->proxyType->currentIndex()).toInt()); proxy->set_proxy_host(ui->proxyHost->text()); proxy->set_proxy_port(ui->proxyPort->value()); proxy->set_proxy_auth(ui->proxyAuthRequired->isChecked()); proxy->set_proxy_user(ui->proxyUsername->text()); proxy->set_proxy_pass(ui->proxyPassword->text()); QString email = ui->cloud_storage_email->text(); QString password = ui->cloud_storage_password->text(); QString newpassword = ui->cloud_storage_new_passwd->text(); //TODO: Change this to the Cloud Storage Stuff, not preferences. if (prefs.cloud_verification_status == qPref::CS_VERIFIED && !newpassword.isEmpty()) { // deal with password change if (!email.isEmpty() && !password.isEmpty()) { // connect to backend server to check / create credentials QRegularExpression reg("^[a-zA-Z0-9@.+_-]+$"); if (!reg.match(email).hasMatch() || (!password.isEmpty() && !reg.match(password).hasMatch())) { report_error(qPrintable(tr("Change ignored. Cloud storage email and password can only consist of letters, numbers, and '.', '-', '_', and '+'."))); return; } if (!reg.match(email).hasMatch() || (!newpassword.isEmpty() && !reg.match(newpassword).hasMatch())) { report_error(qPrintable(tr("Change ignored. Cloud storage email and new password can only consist of letters, numbers, and '.', '-', '_', and '+'."))); ui->cloud_storage_new_passwd->setText(""); return; } CloudStorageAuthenticate *cloudAuth = new CloudStorageAuthenticate(this); connect(cloudAuth, &CloudStorageAuthenticate::finishedAuthenticate, this, &PreferencesNetwork::updateCloudAuthenticationState); connect(cloudAuth, &CloudStorageAuthenticate::passwordChangeSuccessful, this, &PreferencesNetwork::passwordUpdateSuccessful); cloudAuth->backend(email, password, "", newpassword); ui->cloud_storage_new_passwd->setText(""); } } else if (prefs.cloud_verification_status == qPref::CS_UNKNOWN || prefs.cloud_verification_status == qPref::CS_INCORRECT_USER_PASSWD || email != prefs.cloud_storage_email || password != prefs.cloud_storage_password) { // different credentials - reset verification status int oldVerificationStatus = cloud->cloud_verification_status(); cloud->set_cloud_verification_status(qPref::CS_UNKNOWN); if (!email.isEmpty() && !password.isEmpty()) { // connect to backend server to check / create credentials QRegularExpression reg("^[a-zA-Z0-9@.+_-]+$"); if (!reg.match(email).hasMatch() || (!password.isEmpty() && !reg.match(password).hasMatch())) { report_error(qPrintable(tr("Cloud storage email and password can only consist of letters, numbers, and '.', '-', '_', and '+'."))); cloud->set_cloud_verification_status(oldVerificationStatus); return; } CloudStorageAuthenticate *cloudAuth = new CloudStorageAuthenticate(this); connect(cloudAuth, &CloudStorageAuthenticate::finishedAuthenticate, this, &PreferencesNetwork::updateCloudAuthenticationState); cloudAuth->backend(email, password); } } else if (prefs.cloud_verification_status == qPref::CS_NEED_TO_VERIFY) { QString pin = ui->cloud_storage_pin->text(); if (!pin.isEmpty()) { // connect to backend server to check / create credentials QRegularExpression reg("^[a-zA-Z0-9@.+_-]+$"); if (!reg.match(email).hasMatch() || !reg.match(password).hasMatch()) { report_error(qPrintable(tr("Cloud storage email and password can only consist of letters, numbers, and '.', '-', '_', and '+'."))); return; } CloudStorageAuthenticate *cloudAuth = new CloudStorageAuthenticate(this); connect(cloudAuth, SIGNAL(finishedAuthenticate()), this, SLOT(updateCloudAuthenticationState())); cloudAuth->backend(email, password, pin); } } cloud->set_cloud_storage_email(email); cloud->set_save_password_local(ui->save_password_local->isChecked()); cloud->set_cloud_storage_password(password); cloud->set_cloud_verification_status(prefs.cloud_verification_status); cloud->set_cloud_base_url(prefs.cloud_base_url); }