File indexing completed on 2024-04-21 07:40:25

0001 /*
0002     This software is a contribution of the LiMux project of the city of Munich.
0003     SPDX-FileCopyrightText: 2021 Robert Hoffmann <robert@roberthoffmann.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "knetworkmountstestnoconfig.h"
0009 
0010 #include <KNetworkMounts>
0011 
0012 #include <QFile>
0013 #include <QStandardPaths>
0014 #include <QTest>
0015 
0016 QTEST_MAIN(KNetworkMountsTestNoConfig)
0017 
0018 void KNetworkMountsTestNoConfig::initTestCase()
0019 {
0020     QStandardPaths::setTestModeEnabled(true);
0021     m_configFileName = QStringLiteral("%1/network_mounts").arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation));
0022 
0023     QFile::remove(m_configFileName);
0024     QVERIFY(!QFile::exists(m_configFileName));
0025 }
0026 
0027 void KNetworkMountsTestNoConfig::cleanupTestCase()
0028 {
0029     QVERIFY(!QFile::exists(m_configFileName));
0030     QVERIFY(!KNetworkMounts::self()->isEnabled());
0031 
0032     KNetworkMounts::self()->sync();
0033     QFile::remove(m_configFileName);
0034 }
0035 
0036 void KNetworkMountsTestNoConfig::testNoConfigPathTypes_data()
0037 {
0038     QTest::addColumn<QString>("path");
0039     QTest::addColumn<KNetworkMounts::KNetworkMountsType>("type");
0040 
0041     QTest::newRow("NfsPaths/") << "/" << KNetworkMounts::NfsPaths;
0042     QTest::newRow("SmbPaths/") << "/" << KNetworkMounts::SmbPaths;
0043     QTest::newRow("SymlinkDirectory/") << "/" << KNetworkMounts::SymlinkDirectory;
0044     QTest::newRow("SymlinkToNetworkMount/") << "/" << KNetworkMounts::SymlinkToNetworkMount;
0045     QTest::newRow("Any/") << "/" << KNetworkMounts::Any;
0046 
0047     QTest::newRow("NfsPaths/mnt") << "/mnt" << KNetworkMounts::NfsPaths;
0048     QTest::newRow("SmbPaths/mnt") << "/mnt" << KNetworkMounts::SmbPaths;
0049     QTest::newRow("SymlinkDirectory/mnt") << "/mnt" << KNetworkMounts::SymlinkDirectory;
0050     QTest::newRow("SymlinkToNetworkMount/mnt") << "/mnt" << KNetworkMounts::SymlinkToNetworkMount;
0051     QTest::newRow("Any/mnt") << "/mnt" << KNetworkMounts::Any;
0052 
0053     QTest::newRow("NfsPaths/mnt/") << "/mnt/" << KNetworkMounts::NfsPaths;
0054     QTest::newRow("SmbPaths/mnt/") << "/mnt/" << KNetworkMounts::SmbPaths;
0055     QTest::newRow("SymlinkDirectory/mnt/") << "/mnt/" << KNetworkMounts::SymlinkDirectory;
0056     QTest::newRow("SymlinkToNetworkMount/mnt/") << "/mnt/" << KNetworkMounts::SymlinkToNetworkMount;
0057     QTest::newRow("Any/mnt/") << "/mnt/" << KNetworkMounts::Any;
0058 }
0059 
0060 void KNetworkMountsTestNoConfig::testNoConfigPathTypes()
0061 {
0062     QFETCH(QString, path);
0063     QFETCH(KNetworkMounts::KNetworkMountsType, type);
0064 
0065     QVERIFY(!QFile::exists(m_configFileName));
0066     QVERIFY(!KNetworkMounts::self()->isEnabled());
0067 
0068     QCOMPARE(KNetworkMounts::self()->paths(type), QStringList());
0069     QCOMPARE(KNetworkMounts::self()->paths(), QStringList());
0070     QCOMPARE(KNetworkMounts::self()->canonicalSymlinkPath(path), path);
0071     QVERIFY(!KNetworkMounts::self()->isSlowPath(path, type));
0072     QVERIFY(!KNetworkMounts::self()->isSlowPath(path));
0073 }
0074 
0075 void KNetworkMountsTestNoConfig::testNoConfigPathOptions_data()
0076 {
0077     QTest::addColumn<QString>("path");
0078     QTest::addColumn<KNetworkMounts::KNetworkMountOption>("option");
0079 
0080     QTest::newRow("LowSideEffectsOptimizations/") << "/" << KNetworkMounts::LowSideEffectsOptimizations;
0081     QTest::newRow("MediumSideEffectsOptimizations/") << "/" << KNetworkMounts::MediumSideEffectsOptimizations;
0082     QTest::newRow("StrongSideEffectsOptimizations/") << "/" << KNetworkMounts::StrongSideEffectsOptimizations;
0083     QTest::newRow("KDirWatchDontAddWatches/") << "/" << KNetworkMounts::KDirWatchDontAddWatches;
0084     QTest::newRow("SymlinkPathsUseCache/") << "/" << KNetworkMounts::SymlinkPathsUseCache;
0085 
0086     QTest::newRow("LowSideEffectsOptimizations/mnt") << "/mnt" << KNetworkMounts::LowSideEffectsOptimizations;
0087     QTest::newRow("MediumSideEffectsOptimizations/mnt") << "/mnt" << KNetworkMounts::MediumSideEffectsOptimizations;
0088     QTest::newRow("StrongSideEffectsOptimizations/mnt") << "/mnt" << KNetworkMounts::StrongSideEffectsOptimizations;
0089     QTest::newRow("KDirWatchDontAddWatches/mnt") << "/mnt" << KNetworkMounts::KDirWatchDontAddWatches;
0090     QTest::newRow("SymlinkPathsUseCache/mnt") << "/mnt" << KNetworkMounts::SymlinkPathsUseCache;
0091 
0092     QTest::newRow("LowSideEffectsOptimizations/mnt/") << "/mnt/" << KNetworkMounts::LowSideEffectsOptimizations;
0093     QTest::newRow("MediumSideEffectsOptimizations/mnt/") << "/mnt/" << KNetworkMounts::MediumSideEffectsOptimizations;
0094     QTest::newRow("StrongSideEffectsOptimizations/mnt/") << "/mnt/" << KNetworkMounts::StrongSideEffectsOptimizations;
0095     QTest::newRow("KDirWatchDontAddWatches/mnt/") << "/mnt/" << KNetworkMounts::KDirWatchDontAddWatches;
0096     QTest::newRow("SymlinkPathsUseCache/mnt/") << "/mnt/" << KNetworkMounts::SymlinkPathsUseCache;
0097 }
0098 
0099 void KNetworkMountsTestNoConfig::testNoConfigPathOptions()
0100 {
0101     QFETCH(QString, path);
0102     QFETCH(KNetworkMounts::KNetworkMountOption, option);
0103 
0104     QVERIFY(!KNetworkMounts::self()->isOptionEnabledForPath(path, option));
0105 }
0106 
0107 void KNetworkMountsTestNoConfig::testNoConfigOptions_data()
0108 {
0109     QTest::addColumn<KNetworkMounts::KNetworkMountOption>("option");
0110     QTest::addColumn<bool>("default_value");
0111     QTest::addColumn<bool>("expected_value");
0112 
0113     QTest::newRow("LowSideEffectsOptimizations_false") << KNetworkMounts::LowSideEffectsOptimizations << false << false;
0114     QTest::newRow("LowSideEffectsOptimizations_true") << KNetworkMounts::LowSideEffectsOptimizations << true << true;
0115 
0116     QTest::newRow("MediumSideEffectsOptimizationss_false") << KNetworkMounts::MediumSideEffectsOptimizations << false << false;
0117     QTest::newRow("MediumSideEffectsOptimizations_true") << KNetworkMounts::MediumSideEffectsOptimizations << true << true;
0118 
0119     QTest::newRow("StrongSideEffectsOptimizations_false") << KNetworkMounts::StrongSideEffectsOptimizations << false << false;
0120     QTest::newRow("StrongSideEffectsOptimizationss_true") << KNetworkMounts::StrongSideEffectsOptimizations << true << true;
0121 
0122     QTest::newRow("KDirWatchDontAddWatches_false") << KNetworkMounts::KDirWatchDontAddWatches << false << false;
0123     QTest::newRow("KDirWatchDontAddWatches_true") << KNetworkMounts::KDirWatchDontAddWatches << true << true;
0124 
0125     QTest::newRow("SymlinkPathsUseCache_false") << KNetworkMounts::SymlinkPathsUseCache << false << false;
0126     QTest::newRow("SymlinkPathsUseCache_true") << KNetworkMounts::SymlinkPathsUseCache << true << true;
0127 }
0128 
0129 void KNetworkMountsTestNoConfig::testNoConfigOptions()
0130 {
0131     QFETCH(KNetworkMounts::KNetworkMountOption, option);
0132     QFETCH(bool, default_value);
0133     QFETCH(bool, expected_value);
0134 
0135     QCOMPARE(KNetworkMounts::self()->isOptionEnabled(option, default_value), expected_value);
0136 }
0137 
0138 #include "moc_knetworkmountstestnoconfig.cpp"